There are multiple ways to internationalize your notifications with Courier. The best option for your use case depends on the number of languages you support and the complexity of your notification templates.
Multi-language Internationalization models for notifications:
Multiple channels, one template (one channel per language)
Multiple templates (one template per language)
Pull translated content into a template from the Send data payload (one template)
Go deeper:
internationalize your brands (one brand per language) using custom brands.
Follow the progress of our upcoming multi-language support feature here.
Multiple channels, one template (one channel per language)
In this model, the logic defining which notification to fire lives in Courier under the channel settings as send conditions.
This model works well for single-channel notifications or multi-channel notifications when you support just a few languages. Notifications templates can get large and complex when you have multiple channel types (email, SMS, DM, push) and support many languages. If this is true for your use case, consider using the multiple templates (one per language) model for internationalization.
To use this internationalization model, you'll need to use
Profile data (either sent as part of the send command profile object or stored in Courier as part of a recipient profile
Here are the steps:
Store a "locale" property on each user profile inside of Courier, with ISO 639-1 language code values like "en-us", "en", "fr", "fr-be", "fr-ca", etc. (or include it as part of the send command data payload).
Add a channel for each language to your template (see screenshot below)
Set up a conditional to match the corresponding language (see second screenshot below)


Multiple templates (one template per language).
In this internationalization model, the logic defining which notification to fire lives in your system rather than within Courier. This model is best for multi-channel notifications when you support many languages.
To implement this internationalization model:
Create a notification template for each language you support (i.e., five supported languages = five versions of the same notification).
Map a unique language-based event to each template.
Trigger the language-specific event to send the notification to users with that


Pull translated content from the send command data payload using variables (one template)
To use this method, you will need to Send the translated content as part of the data payload and pull it into the content block(s) in the notification template with Variables or handlebars code.
Translate the content and store it in your backend
Include the translated content in the JSON data object of the Send event
Pull the translated content into the notification template from the Send event data payload using variables.
Template using variables

Test event with the variable values

Preview of the template with language-specific content values pulled into the variables.
