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