Zindua
Back to blog
TemplatesJuly 06, 20268 min read

Template engine + i18n: keep transactional messaging consistent at scale

How to structure slugs, language versions, and variables so product teams ship faster without template chaos.

Template engine + i18n: keep transactional messaging consistent at scale

Slug-first governance

Use stable template slugs per business event, not per language. For example: otp-verification, invoice-paid, password-reset.

Language versions should remain children of the same slug so analytics, approval flows, and ownership stay coherent.

Variable contracts

Define a stable variable contract early: code, appName, firstName, orderId, and other required tokens. Make optional values explicit.

When variable contracts change, version the template intentionally and communicate changes to app teams to avoid runtime failures.

Safe fallback behavior

If a requested language variant is missing, fallback to default language should be deterministic and observable in logs.

This keeps user communication running while allowing localization work to happen incrementally.

  • One slug per transactional intent
  • Consistent variable naming by domain
  • Fallback language defined per project
  • Template review before publishing

Quick start from this article

Open templates dashboard

Create slugs and language variants in one workspace.

Open guide

List templates in CLI

Verify published slugs from terminal.

npx @zindua/cli@latest templates list

Read API docs

Check send payload fields and examples.

Open guide

Related articles