Choose Your Approach
| Approach | Best For | Logic Location |
|---|---|---|
| Multiple channels, one template | Few languages, single channel type | Courier (send conditions) |
| Multiple templates | Many languages, multi-channel | Your system |
| Variables from data payload | Dynamic content, external translation system | Your system |
Multiple Channels, One Template
In this model, you create one channel per language within a single template. Courier routes to the correct channel based on send conditions. This works well for single-channel notifications or when you support just a few languages. Templates can get complex when you have multiple channel types (email, SMS, push) and many languages. Requirements:- Channel-level conditionals
- User locale stored in profile or sent with the request
Store locale on user profiles
Add a
locale property with ISO 639-1 language codes like en, en_US, fr, fr_FR, etc.You can store this in Courier profiles or include it in the send request.Add a channel for each language
Create separate channels in your template for each language you support.

Multiple Templates
In this model, you create a separate template for each language. Your system determines which template to trigger based on the user’s language. This is best for multi-channel notifications when you support many languages, as it keeps each template simple and focused.Create a template for each language
For five supported languages, create five versions of the same template.

Map language-specific events
Assign a unique event name to each template (e.g., 
welcome-email-en, welcome-email-fr).
Variables From Data Payload
In this model, you maintain a single template and pass translated content in your send request. The template uses variables to display the localized content. This approach works well when you manage translations in your own backend or use an external translation service.Translate content in your backend
Store translated strings in your database or translation management system.



