Messages in multiple languages supports multiple character sets out of the box. If your app/site has multiple languages, there are a few ways you can localize your messages. In every case, you’ll need to assign people an attributes representing their language preference. In most of our examples, we refer to this attribute as language.

There are a few ways to localize your messages:

The condition per-message method

Using this strategy, you only have one campaign that includes separate messages for each language.


  • fewer campaigns overall
  • open, click, and conversion stats are partially separate (you can view the stats per message, but you’ll need to export data from multiple campaigns if you want to see the overall stats for a particular language)
  • you can easily make changes to messages sent in different languages


  • grouping messages sent in series (a few days from one another) can get messy because of the large number of messages included in the workflow
  • you can’t easily find or export data for all the messages sent in a particular language

Sample Setup

Your campaign has messages separated by language using an action condition. This way, only those profiles whose language attribute/value is set as “fr” will receive the French email. Others who do not have the attribute/value set to “fr” will skip this message. The same applies to all the messages in the workflow as long as they have a condition filter added.


Once you add the condition filter to all your messages, the Workflow page will look something like this:


Note: If you’re using this strategy for a Welcome campaign and you notice delays in sending attribute updates sent to, you can add a 2-3 minutes delay before the first message to give your app enough time to send us the correct information.

The per-message method (using liquid)

Using this strategy, you only have one campaign and one message per marketing scenario, but each user will see the content in its own language.


  • fewer campaigns overall
  • making changes to messages sent in multiple languages is easier (you only need to edit one message)


  • open, click, and conversion stats are mixed together, so running reports per language is more difficult

Sample Setup

In this example, we’ll create a test within a message (in the editor) using conditional (if/else) statements in a message body. If the user’s set language is French or Italian we’ll present localized greetings; if neither, we can fall back to English.

{% if customer.language == "fr" %}


{% elsif customer.language == "it" %}


{% else %}


{% endif %}

Note: Most people using this strategy have 2-5 languages they are managing messaging for. Also watch out for character limits in subject lines and body copy.

The per-campaign method

Using this strategy, each language has its own campaign.


  • you can easily group messages sent in series (a few days from one another)
  • open, click, and conversion stats are separate
  • by adding a tag like [FR] in the campaign name you can easily find all the campaigns targeted at a specific audience


  • it increases the number of campaigns in your account
  • if you need to make changes for multiple languages, this needs to be done campaign-by-campaign

Sample Setup

If your app is available in 3 languages (English, French and Italian), you might have 3 campaigns for each of the three languages:

  • Welcome email - fr
  • Welcome email - it
  • Welcome email - en

Then you’d have 3 segments:

  • “Language is French”
  • “Language is Italian”
  • “Language is English”

Those segments are then applied as Filters on the campaigns.


You might have the same trigger conditions for your campaigns, but the filters for language restrict who should get the message to French, Italian, or English speakers.

Copied to clipboard!
Is this page helpful?