Migration Guide · Version 09.26
Multi-language setup for Klaviyo
This guide shows you how to use Klaviyo’s translation feature to make sure your users receive emails in the correct language. For clarity, this guide assumes German is the default shop language and English is added as a second language. However, the steps shown can also be applied to other languages.
1. Background
In July 2025, Klaviyo rolled out a translation feature that allows you to translate emails directly inside Klaviyo. Similar to Shopify translations, you first create your email in one language and then translate it.
When the email is sent, Klaviyo determines which language version should be shown based on the profile’s selected language.
Core benefits
- AI translations are available.
- You spend less time creating duplicate emails.
- You reduce the risk of sending emails in the wrong language.
2. Setting up the translation feature
2.1 Basic setup
To use the translation feature go to Settings → Translation in Klaviyo and enable the translation feature.
Then choose which property Klaviyo should use for language information. Use the locale provided by Shopify.
The Shopify locale is automatically split into language and country in Klaviyo, making it easier to segment and manage flows and campaigns.
- Locale
- Locale: Country
- Locale: Language
After selecting the locale, specify your supported languages and choose a default language. If most of your users are German-speaking, German can be your default. If your audience is very international, English may be the better default.
2.2 Migrate existing profiles
If you’ve been using Klaviyo for a while, the next step is to make sure that all your existing, active profiles have their locale set.
First, create a segment with:
- Properties about someone → Locale = Not Set
- AND: Person can receive email marketing
Then reduce the number of profiles without a locale to 0 using the steps below.
01 Resynchronise Shopify
Go to the Shopify integration in Klaviyo and re-import your contacts. This can enrich older customer profiles where the locale was not previously passed to Klaviyo.
02 Use old language properties
If you previously stored your customers’ language in a different custom property, use your “Locale = Not Set” segment as the trigger for a flow.
- Add a conditional split based on your old language property.
- Route users for DE, EN, ES, FR or other languages into separate branches.
- Use an Update Profile Property action and set $locale to de, en, es, fr or the correct locale value.
- Set the flow to Live and use “Add past profiles” on your trigger (add them at the start of the flow).
03 Use list assignments
If users still remain in your “Locale = Not Set” segment, use existing lists to categorise them.
Use the same flow logic as above: trigger the flow from the “Locale = Not Set” segment, split users by lists, and update the locale property accordingly.
04 Set a default
If you have exhausted all options and still have profiles without a locale, assign a default locale to them.
Final target
Your “Locale = Not Set” segment should be 0.
2.3 Tagging new profiles
Once historical data has been migrated, make sure new profiles automatically receive a locale.
New profiles are usually created via:
- Klaviyo forms or onsite scripts
- BackInStock signups
- Shopify checkout
- Shopify newsletter forms
- External tools such as Typeform, quiz apps or consultation tools
2.3.1 Klaviyo onsite script
If a visitor browses your shop but does not start checkout, Klaviyo may not know which locale they used. Add this snippet to your theme.liquid before the closing body tag:
<!-- Start Klaviyo MultiLanguage -->
<script>
klaviyo.identify({
{% if customer.email %}
'$email': '{{ customer.email }}',
{% endif %}
'$locale': '{{ request.locale.iso_code }}-{{ localization.country.iso_code }}'
});
</script>
<!-- End Klaviyo MultiLanguage -->
This ensures that both language and country data are automatically synced with Klaviyo at all times. Whenever a new profile is created—whether through a Klaviyo form or Back-in-Stock request—the correct locale is passed instantly.
At the same time, any updates made later in your shop (e.g. if a customer changes their language or was previously assigned incorrectly) are continuously reflected in Klaviyo, keeping every profile accurate and up to date.
In Klaviyo, also go to Integrations > Shopify and then to Sync to Shopify within the Shopify integration. Enable the option to overwrite the locale in Shopify with the locale stored in Klaviyo. This ensures that profiles created in Klaviyo can also be created in Shopify with the correct locale.
2.3.2 External tools / apps
External tools are slightly more complex—but they usually require a proper language mapping system anyway. Once that system is defined, you can use it to consistently assign the correct locale in Klaviyo—either directly via an “Update Profile Property” step or indirectly through Shopify Flow, including retroactive updates.
3. Configuration of sign-up forms
To ensure a consistent language experience across your forms (SignUp and BackInStock) and double opt-in emails—which directly impacts confirmation rates—you’ll need a small but important setup.
Start by creating a separate list for each language. For example:
- DE Newsletter
- EN Newsletter
- ES Newsletter
For each list, adapt the double opt-in email to the corresponding language. If the confirmation email is sent in the wrong language, it can significantly reduce your opt-in rate.
You can ignore other list-related pages like preference or unsubscribe pages, as Klaviyo will mostly use your default settings when sending campaigns or flows.
3.1 Klaviyo form setup
When using Klaviyo forms, you need to ensure that visitors always see the sign-up form in their correct language—so a German form doesn’t appear in an English version of your shop.
If you are using Shopify Markets, Shopify automatically structures your URLs by locale (e.g. /en_DE or /fr_FR). These URL patterns can be used to control which form is shown to which user.
This allows you to display the correct form based on language (and, where relevant, country).
Example
For an English version of your shop, URLs may contain /en (e.g. yourdomain.com/en_DE). Here, 'en' represents the language and 'DE' the country. Use these information to create your sign-up form:
01 1. Create your form
Create your sign-up form in the desired language (for example, start with the English version).
02 2. Set display targeting
In the form editor, go to Targeting → Targeting and set the form to display only on pages that contain yourdomain.com/en.
03 3. Configure submit behavior
Set the following for the submit button for the English language:
- Add subscribers to your English newsletter list (for the double opt-in email).
- Add a hidden custom field with Locale = en
04 4. Duplicate for other languages
Once your English form is set up, duplicate it and adapt it for other languages.
- Update all texts to the target language.
- Make sure to only show it on pages with your language identifier
- Connect the form to the corresponding newsletter list.
- Update the hidden locale field (e.g. 'de').
- Repeat this for all languages
Important: Your default language
For your default language you won't have an url identifier. In this case you proceed as following:
- Update all texts to the default language.
- Go to Targeting → Targeting and 'Don't show' it on URLs that contain your other languages (e.g. yourdomain.com/en, yourdomain.com/fr etc.).
- Connect the form to the default language newsletter list.
- Update the hidden locale field to your default language (e.g. 'de').
3.2 BackInStock setup
If you use Klaviyo’s standard BackInStock snippet to add a notification feature for out-of-stock products, you’ll face three challenges when setting up a multi-language system:
- How do you ensure the BackInStock form appears in the correct language?
- How is the user’s locale transferred to their Klaviyo profile?
- And how do you send the DOI email in the correct language if users also wish to subscribe to the newsletter?
The locale is automatically set when a profile is created via the script from section 2.3.1 (as long as it’s implemented correctly).
This means you only need to focus on two things: translations and assigning the correct list.
Follow these steps to set this up:
01 1. Add the BackInStock snippet
Insert the BackInStock snippet into your theme.liquid file before the closing </body> tag and define placeholders for all elements you want to localise.
<script src="https://a.klaviyo.com/media/js/onsite/onsite.js"></script>
<script>
var klaviyo = klaviyo || [];
klaviyo.init({
account: "XXXXX",
list: "{{ 'general.back_in_stock.list' | t }}",
platform: "shopify"
});
klaviyo.enable("backinstock", {
trigger: {
product_page_text: "{{ 'general.back_in_stock.product_page_text' | t }}",
product_page_class: "button w-full",
product_page_text_align: "center",
product_page_margin: "10px 0px 0px 0px",
product_page_width: "100%",
replace_anchor: false
},
modal: {
headline: "{product_name}",
body_content: "{{ 'general.back_in_stock.body_content' | t }}",
email_field_label: "{{ 'general.back_in_stock.body_email_field_label' | t }}",
button_label: "{{ 'general.back_in_stock.button_label' | t }}",
subscription_success_label: "{{ 'general.back_in_stock.subscription_success_label' | t }}",
footer_content: "",
additional_styles: "@import url('https://fonts.googleapis.com/css?family=Inter+Neue');",
drop_background_color: "#000",
background_color: "#fff",
text_color: "#000",
button_text_color: "#fff",
button_background_color: "#000",
close_button_color: "#ccc",
error_background_color: "#fcd6d7",
error_text_color: "#C72E2F",
success_background_color: "#d3efcd",
success_text_color: "#1B9500",
newsletter_subscribe_label: "{{ 'general.back_in_stock.newsletter_subscribe_label' | t }}"
}
});
</script>
02 2. Replace your Klaviyo account ID
Replace 'XXXXX' with your Klaviyo public API key. You can find this under Settings → API Keys → Public API Key.
03 3. Add translations for your default language
Go to your locale file (e.g. en.default.json) and add the following translation block into your 'general' section:
"back_in_stock": {
"body_content": "Register to receive a notification when this item comes back in stock.",
"email_field_label": "Email",
"button_label": "Notify me when available",
"subscription_success_label": "You're in! We'll let you know when it's back.",
"product_page_text": "Notify Me When Available!",
"newsletter_subscribe_label": "Save 10% when signing up for our newsletter.",
"list": "ID of your English list"
},
Customise the list ID and the translations to suit your needs
It should look similar to this here:
04 4. Add translations for other languages
Repeat this process for each language and adapt both the texts and the list ID accordingly. For example in your de.json add:
"back_in_stock": {
"body_content": "Erhalte eine Benachrichtigung, sobald dieser Artikel wieder verfügbar ist",
"email_field_label": "E-Mail-Adresse",
"button_label": "Sag mir Bescheid, wenn der Artikel wieder da ist!",
"subscription_success_label": "Geschafft! Wir informieren dich, sobald der Artikel zurück ist.",
"product_page_text": "Sag mir Bescheid, wenn der Artikel wieder da ist!",
"newsletter_subscribe_label": "Werde Teil der Community und spare zusätzlich 10% auf deinen Erstkauf.",
"list": "ID deiner deutschen Liste"
},
05 5. Repeat for all languages
Make sure each language has its own translation set and is connected to the correct list.
3.3 Shopify integration and language-based lists
For newsletter signups made directly through the Shopify checkout, an additional Shopify Flow is no longer required to send double opt-in emails in the correct language.
Recommended setup:
01 Create a master list for all signups via Shopify
In Klaviyo, go to Lists & Segments and create a master list where all contacts coming through the Shopify integration are added. You will need this list in addition to your individual language lists.
02 Create a master list for all signups via Shopify
Go to Integrations > Shopify and select your master list under “Sync your Shopify email subscribers to Klaviyo”.
03 Manage the DOI language per locale in the Default Consent Pages
In Klaviyo, go to Settings > Others > Default Consent Pages. Translate the E-Mail Confirmation Page there. Profiles created through Shopify can then receive the double opt-in email directly in the appropriate language.
4. Unsubscribe and preference pages
You can now also translate unsubscribe and preference pages directly in Klaviyo. Go to Settings > Other > Default Consent Pages.
Recommended setup:
01 Translate your Preference Pages
Within your Default Consent Pages, go to Preference Pages and translate the page into all languages used in your store.
02 Translate your Unsubscribe Page
Next, translate your Unsubscribe Page into the relevant languages as well. This ensures that users also see the appropriate language version when unsubscribing.
03 Alternative: Hosted Pages
Alternatively, you can continue using custom Klaviyo Hosted Pages. This can be useful if you need more control over the design, content, or additional preference options.
5. Flow setup
Within your flows, you can also leverage the locale data coming from Shopify.
There are two main ways to approach this:
5.1 Separate flows or conditional splits
This is similar to the old setup: you either filter entire flows by language or use conditional splits inside the flow.
Advantages
- Easy differentiation by language or country.
- Completely different emails possible per market.
- Performance visible per language or country.
Disadvantages
- More flows or branches to manage.
- More manual work.
- Recipients can be locked into the initial language branch.
Choose this approach if you want full visibility into how each flow performs across different languages or markets.
5.2 Using the translation feature
If you mainly want to communicate in the correct language and do not need language-level reporting, use Klaviyo’s translation feature in one central flow.
Advantages
- You only need to maintain one email.
- AI translations are available — you only need to review them.
- Cleaner and easier-to-manage flow structure.
Disadvantages
- No built-in differentiation between markets.
- No reporting by language or country (there is a simple anaytics for each flow message avaiable now).
Choose this approach if you want a simpler setup and only need to communicate in the correct language, without analysing performance by market.
6. Campaign setup
With the new translation feature, you will (in theory) no longer need separate campaigns for each language; instead, you can send a single campaign email to everyone and simply control the language via the translation feature.
However, for analytics and market-level insights, it may still make sense to split campaigns by language or country. This is especially useful if you want to understand how a campaign performs in specific markets and/or languages.
So you need to decide which setup fits your use case best:
6.1 One campaign using the translation feature
If your main goal is to deliver emails in the correct language — and you don’t need detailed performance insights per language — follow these steps:
- Create the segments you want to target without specifying a language.
- Design and write your campaign email in one language first.
- Once the email is finalised, use Klaviyo’s translation feature to add the other language versions.
Advantages
- You manage segments based on behaviour, not language.
- You send one campaign to a larger audience, which can be helpful for A/B testing.
- Klaviyo AI can translate most of the email for you, so you only need to review and refine it.
Disadvantages
- Reporting is shown as one overall result, not broken down by language or country.
- You have less visibility into which language version performed best (Klaviyo integrated a simple analytics for each campaign message).
Choose this approach if you mainly care about sending the right language and want the simplest possible campaign setup.
6.2 Separate campaigns using language or country exclusions
Use this approach if it’s important for you to understand how individual markets perform.
- Create your main campaign segments without language or country conditions.
- Create additional language segments, such as:
- German profiles (Locale: Language = de) and English profiles (Locale: Language = en).
- Country segments, such as profiles in Germany (Locale: Country = DE), Austria (Locale: Country = AT), or other relevant markets.
- For even deeper analysis, create language-country combinations such as German profiles in Germany (Locale = de_DE) or English profiles in Germany (Locale = en_DE).
- When sending campaigns, use your main segment as the Send to audience and exclude the languages or countries you do not want to target.
Sending by language
Use one core segment and control each campaign version with simple exclusions.
Advantages
- You can see how each campaign performs by language or country.
- Using language or country segments as exclusions allows you to reuse them across campaigns—instead of creating new language-specific segments every time.
- You gain more control over market-specific messaging and performance analysis.
Disadvantages
- Slightly more complex to manage (compared to Option 1), as you always have to think in terms of exclusions (e.g. for German emails, exclude English profiles—and vice versa).
- Requires manually creating a separate email for the second language each time.
- Campaign setup takes more time than using one translated campaign.
Choose this approach if you want better reporting and control by language, country, or market.
Conclusion
With the new translation feature, managing multi-language in Klaviyo has become much easier. If you follow the steps in this guide, you should end up with a clean setup where the locale is reliably passed from Shopify, sign-up forms appear in the correct language, and (double opt-in) emails are always sent in the right language.
This guide focuses specifically on the multilingual setup inside Klaviyo.
Since 2026, Klaviyo also supports Shopify Markets through Locale Aware Catalogs. This allows you to sync market-specific product data from Shopify into Klaviyo, including language, currency, pricing and localized product URLs — so your emails can show the right product information for each market.
Everything worked — your guide is on its way.
Check your inbox. If you don’t see it, also check spam or promotions.
Don’t want to figure this out yourself?
Let us implement your Multi-Language setup for you
We fully set up your multi-language system — clean, structured and ready to use in Shopify & Klaviyo.
- Migration of your existing language setup
- Cleanup of Klaviyo language properties
- Clean Shopify localization integration
- Structured flows and segments
- Scalable setup for multiple markets