If your business operates in more than one region, you may need to tailor your marketing content to match each customer's location and language preferences. You could do this by making your campaign content dynamic using Handlebars or Catalog. Or you could use locales — our friendly interface for managing multiple region/language versions of a template.
A locale is a code you can use to identify a user's language and/or country in order to determine what content is most relevant to them. With locales, you can create multiple region-specific versions of a template, and then Iterable can send the right localized version of the campaign to each of your users at send time — no complex if/else coding required!
Iterable's locales feature lets you create multiple versions of a template for localization, but it does not translate your campaign content. You'll need to do this yourself either in house or with a translation service. (Check out our integrations with Lokalise and Crowdin.)
In this article
Why use locales?
Locales make it easy for team members and outside contributors — including folks with little or no coding proficiency — to collaborate on content creation.
In order to translate and localize a campaign for separate audiences around the world, you could create a single template version with dynamic content that determines each user's location and displays the corresponding content. But this is a pretty code-heavy approach that doesn't work for everyone. Your team or the team responsible for translating and localizing your content may find it challenging to work with this kind of complex code.
With locales, you can create region-specific versions of a template that are all associated with the same template ID — so performance metrics are all tracked in the same place, just like they would be if you localized the template with dynamic content. If you work with an outside translation service, you can share these versions with translators, and they can upload the translated content to your template.
Locales give your team the benefit of shared templates with the flexibility to determine how, when, and if users receive a localized version of your campaign content.
How it works
Just getting started with locales? Head to your Project Settings page and create the locale codes for the regions and languages your business operates in. See Setting Up Locales For Your Project for tips and best practices on how to do this.
At send time, Iterable checks each user's profile for the
field. If this field is set and matches one of the locales you've added to the
campaign, Iterable will send the version of the campaign template that matches
What about if a user doesn't have a
locale field on their profile or there is
a mismatch between the user's
locale field and the available content (for
example, if a user's locale is
pt-PT and you haven't set up a Portuguese
The default locale for a template acts as a fallback when a user’s region and/or
language preference is unknown. At send time, any users whose
locale field is
blank will receive the default localization of the message.
Use the Locale Sending Preferences section of your Project Settings page to tell Iterable what to do when a user's locale is known but doesn't match any of the available content for a campaign at send time:
locale field isn’t yet defined on your users’ profiles and you want to
send locale information via API in your triggered campaigns, we can help! Talk
to your customer success manager or implementation consultant about enabling
this for your project(s).
Creating localized versions of a template
Once you've set up at least one locale for your project, you can start creating region-specific versions of your templates for the different locales you want to send them to. Click the locales dropdown menu in the template editor and select each additional locale you want to add to your template. Each time you add a new locale to a template, Iterable copies all the template content from your default locale to create the new version.
You can use the locales menu to select, edit, preview, and send proofs of each
version of the template to yourself or a teammate. You can also call
to export the different template locales to a translation service.
Setting a template's default locale
The ability to adjust the default locale for each template is a new feature we began releasing in December 2023. If you don't see it yet, look for this update in the coming weeks!
Iterable automatically assigns your project’s default locale to each template, unless you enable the Set Default Locale On A Per-Template Basis project setting. When this setting is on, you can specify a default locale each time you create or edit a template in your project.
To assign a default locale to a new template, create a new template and select one of your locales from the Default Locale dropdown menu.
To change a template's default locale, open the template and click the gear icon next to the locale selection menu and click Change Default. Then select a new default locale from the dropdown.
Example use case
Let’s say your project’s default locale is
en-CA (English - Canada) and you’ve
just created a template with a default locale of
fr-CA (French - Canada). At
send time, any users who have a blank
locale field will receive the
version of the campaign. Users who have something other than
fr-CA in their
locale field won’t receive the campaign.
If you’ve configured your project’s locale sending preferences to send campaigns
even when there’s a locale mismatch, any users whose
locale field doesn’t
match any of template’s locales (like
en-US) will receive the
default version of the campaign,
Make sure your default locale content is right for the audience you’re sending
it to. In the above example, if you set the template default locale as
(instead of the project default locale
en-CA), make sure everyone in your
audience would want to receive the French Canadian version of the campaign if
locale field is blank or contains a locale code that doesn’t match the
(Tip: You can use Audience Insights to see which locales the users on your list or segment belong to!)
Copying locales in a template
When you make a copy of a template, you can select the specific locales you want to copy.
Keep in mind: every template must have a default locale — this means you can’t deselect the current default locale when you make a copy of a template. (In the above screenshot, you can see the checkbox next to the default locale is grayed out.)
If you don’t want to copy the current default locale, first select a different default locale for the new template, then deselect the former default locale before making a copy of the template.
If you clone a journey or template that has multiple associated locales and one or more of those locales doesn't exist in the destination project, they'll be created.
Removing a locale from a template
To remove a locale from a template, select the locale you want to remove in the locales menu in the template editor.
Then click the gear icon, and select Remove locale.
Deleting a locale completely deletes all of the content associated with that version of the template. Use caution!
Using locales in experiments
When you create an experiment from a template that has more than one locale, you'll be able to configure multiple locale versions of each experiment variation on the Design step of setting up your experiment. Locales work the same way in experiments as they do in a regular campaign — users will receive the correct locale version of the experiment variant they're sent.
When you launch your experiment, Iterable will choose an overall winner between your experiment variations, then send all localizations of that variation to the remaining users.
Iterable does not select a winning locale version of an experiment variation. If you want to create an experiment based on language or region, you’ll need to set up two or more separate experiment variations (not locale versions) to test your hypothesis. For example, to test whether a campaign in Belgium performs better when it's written in Dutch versus French versus German, you’ll need to set up an experiment with a separate variation for each language (a Dutch variation, a French variation, and a German variation) rather than a single variation with 3 locales.
Using locales in journeys
The locales feature reduces the need to filter users by location or language in your journeys, since you can include multiple locale versions of the same campaign in a single message tile. Users who reach the tile will receive different localized versions of the same campaign (with the same campaign ID).
You can review and edit the different locale versions of a campaign in the message tile.
Want to learn more?
For more information about some of the topics in this article, check out this Iterable Academy course. Iterable Academy is open to everyone — you don't need to be an Iterable customer!