uCheckeruChecker
9 min read

Multilingual email campaigns: how to localize without killing conversion

You are expanding into a second market. Or a third. Subscribers speak different languages, live in different time zones, and one broadcast for everyone stops working. Translation is just the surface. Underneath: template architecture, language routing, legal requirements, and many ways to break everything.


Translation is not localization

The common mistake: take an English campaign, run it through a translator, send. The email is technically in German. In practice it still reads like English — sentence structure calqued, humor landing flat, the date "05/10/2026" puzzling a European reader who expects "10.05.2026", prices in dollars while the reader pays in euros.

Localization goes further. It covers date, currency, and number formats. Tone: a German B2B subscriber expects formal address ("Sie"), a French reader is slightly less formal, an American is used to first-name basis even in business email. Text length: German translations run 20-35% longer than English originals, which breaks layouts. For Arabic or Hebrew audiences, text direction: the entire layout mirrors right-to-left.

If you only serve two or three European languages, RTL is not your problem yet. But date formats, currencies, and tone are immediate concerns. These are where most companies stumble in the first month after entering a new market.

Detecting subscriber language

Four sources, roughly ordered by reliability:

Explicit selection. The subscriber picks a language during signup. Most accurate. The catch: most registration forms do not offer a language choice, so this data does not exist for many lists.

UI language. If the product is multilingual, the language a person uses in the app is a good proxy. Pass it from the product database to your ESP via integration or webhook.

Geo from IP or email domain. A .de domain is probably German; an IP from Brazil probably Portuguese. But only probably: a Russian speaker in Berlin with a gmail.com address will not appreciate an email in German.

Browser Accept-Language. Sent when a user visits your site. Useful as a secondary signal, but unreliable alone — many people have never changed their browser language settings.

In practice, layering these works: explicit selection wins; if missing, fall back to UI language; if no product UI, geo plus Accept-Language. Always add a "Receive emails in a different language" link in every footer pointing to a preference center. That link is how you correct the algorithm's errors.

Architecture: one campaign or many

Separate campaign per language. Duplicate the send: one for EN, one for DE, one for RU. Simple to build. Does not scale. At five languages, every campaign becomes five. A weekly digest is twenty sends per month instead of four. One forgotten French campaign and a whole subscriber segment misses the email.

Single template with dynamic blocks. One template, conditional blocks keyed to the subscriber's locale attribute. If locale = de, render German. One structure, one send, analytics in one place. More work to set up, far easier to maintain.

Dynamic template: conditional blocks by locale


  {% if subscriber.locale == "en" %}
    <mj-text>Your weekly digest</mj-text>
  {% elif subscriber.locale == "de" %}
    <mj-text>Ihr wöchentlicher Überblick</mj-text>
  {% elif subscriber.locale == "ru" %}
    <mj-text>Еженедельный дайджест</mj-text>
  {% else %}
    <mj-text>Your weekly digest</mj-text>  <!-- fallback -->
  {% endif %}

  <!-- Shared layout: images, buttons, footer -->
  <mj-image src="{{ hero_image }}" />
  <mj-button href="{{ cta_url }}">
    {{ cta_label[subscriber.locale] }}
  </mj-button>

Most modern ESPs (Brevo, Klaviyo, Customer.io, HubSpot) support both approaches. For two or three languages, separate campaigns are manageable. From four languages upward, dynamic blocks save hours every week and cut the chance of a missed send.

Managing translations

Translating one campaign takes an hour. Fifty campaigns per year into four languages is two hundred tasks, any of which can slip and blow the schedule.

Resource files. Store copy separately from the template in structured files (JSON, YAML, PO). The key is a string identifier; the value is the translation. The template references keys: {t('weekly_digest.subject')}. Translators work on the resource file, never touching HTML.

TMS (Translation Management System). Crowdin, Phrase (formerly Lokalise), Transifex. Upload the source file; the system shows translators only changed strings, maintains a translation memory for repeated phrases, and supports a glossary for brand terms. For teams with five or more languages, a TMS pays for itself within the first quarter.

Machine translation plus review. DeepL and GPT-4 produce acceptable drafts for most European languages. A native speaker still needs to review: the machine does not know your brand tone, cannot read promo context, and mixes up formal and informal address forms. This workflow cuts translation time in half and costs 3-4x less than translating from scratch.

Template engineering for multilingual use

Swapping text strings breaks layouts. German runs a third longer than English. "Buy now" becomes "Jetzt kaufen" — if the button width is fixed, text gets clipped or wraps to a second line. Rules that prevent most layout problems:

Do not fix the width of text blocks. Use max-width and let content grow downward. Outlook renders tables differently from Gmail, and hard-coded dimensions break in unexpected places.

Test CTA buttons in your longest language first. If it fits in German and Finnish, it fits everywhere. Both form compound words longer than any Romance-language equivalent.

Keep text out of images. Text baked into a graphic cannot be translated without redrawing the asset. Use live text over background images (bulletproof background images in MJML).

Set a fallback language. If a translation is missing for a given string, the template should render English, not a blank space or a raw key like "weekly_digest.subject". Test against empty locale files.

Subject lines and preheaders: language-specific nuances

Inbox display limits are 40-60 characters. English "Your order has shipped" is 26 characters; German "Ihre Bestellung wurde versandt" is 37. The difference determines whether a subscriber reads the key information or sees an ellipsis.

Adapt rather than translate word-for-word. The same promo can run "30% off everything" in English and a shorter adapted version in another language — same message, fitted to the display limit. Subject lines drive open rate, and open rate drives everything else. The preheader follows the same logic: it complements the subject. If the German subject is long, the preheader should be short.

Legal requirements by region

Different countries, different rules. GDPR fines can reach 4% of annual global turnover. CAN-SPAM is technically more permissive, but reputation damage from violations is the same.

EU (GDPR). Explicit opt-in required. Double opt-in is the de facto standard in Germany. Unsubscribe link in every email. Sender's physical address in the footer.

US (CAN-SPAM). Opt-out model: you can send without prior consent, but unsubscribe requests must be honored within 10 days. Physical address required. Subject lines must not be misleading.

Canada (CASL). Express consent required; fines up to CAD 10 million per organization. The footer cannot be the same across all locales — German needs an Impressum, the US version needs a clear opt-out. With dynamic blocks, the footer is just another region-keyed block.

List quality in multilingual campaigns

Localization raises the cost of each send. The more expensive the production, the more painful it is to send into a void.

If 15% of addresses in your German segment are invalid, you are paying for translations nobody will read while damaging your domain's reputation with German mailbox providers. List quality also varies by region: your primary market is usually cleaner because subscribers came in organically. A new market is different — acquisition tends to be faster and more aggressive (lead magnets, partner lists, offline events), so the share of disposable addresses and typos goes up.

Validate before each send, per language segment. With uChecker you can upload a segment, get a risk score for each address, and filter out risky ones before sending. On multilingual campaigns this saves both sender reputation and the direct cost of translation and rendering.

Validation by language segment


  Full subscriber base
       |
       +-- Segment: locale = "en"  -->  Validate  -->  12% risky
       |
       +-- Segment: locale = "de"  -->  Validate  -->   8% risky
       |
       +-- Segment: locale = "ru"  -->  Validate  -->   5% risky
       |
       +-- Segment: locale = "fr"  -->  Validate  -->  18% risky
                                                        ^
                                        New market, aggressive
                                        lead gen = higher risk

Testing multilingual campaigns

Every language is a separate version that needs its own QA. Minimum checklist:

  1. Rendering across clients. Gmail, Outlook, Apple Mail, Yahoo. German text that fits in Gmail can break in Outlook due to table handling differences.
  2. Subject line and preheader. Check display length in inbox preview — in a real client or via Litmus / Email on Acid, not by eye.
  3. Links and UTM parameters. Each language variant should point to the matching-language landing page. UTM tags should include locale so analytics does not blend traffic.
  4. Legal block. Correct footer for the region: Impressum for Germany, physical address for the US.
  5. Fallback. Send a test to a subscriber whose locale has no translation ready. Fallback language should render, not a blank section.

For the first few sends in a new language, manual review is worth it. Automated screenshot tools will not catch that "Acheter maintenant" got clipped to "Acheter main", which changes the meaning.

Analytics: report by language, not averages

An aggregate open rate across a multilingual list is close to meaningless. German subscribers might open at 45%, French at 22% — the blended average shows 33% and everything looks fine while the French segment quietly degrades.

Break reporting by locale: open rate, CTR, conversion, unsubscribes, bounce rate — all per language. A high bounce rate in one locale points to list quality in that region, not a problem with the email. A/B tests should also run per language: a subject line that wins in English can fall flat in German, and running the test across the full list hides that failure.

Rollout order

  1. Add a locale field to your subscriber table. Without it, language segmentation is impossible. Backfill existing subscribers from whatever data you already have.
  2. Validate the list. Especially the new-market segment. Remove risky addresses before the first send.
  3. Start with transactional emails. Signup confirmation, password reset, payment receipt. Short, easy to translate, immediately visible to the user.
  4. Translate core trigger sequences. Onboarding and welcome series — the first emails a new subscriber sees.
  5. Localize marketing campaigns. Start with your highest-converting ones: weekly digest, promo sends.
  6. Set up segmented reporting. A dashboard per language. Track bounce rate separately for each market.

Common mistakes

Translating without adapting. Word-for-word promo copy reads unnaturally. Localization transfers meaning and tone, not words.

One template for all text lengths. German expands the layout; Chinese and Japanese shrink it. Test on the longest variant.

Missing fallback. A subscriber with an unknown locale gets a blank email or raw template keys instead of text.

Global unsubscribe instead of language preference. A subscriber who wants to switch languages, not unsubscribe, has no option but to leave. You lose someone you could have kept.

Skipping validation on new markets. New region means new acquisition sources means unknown list quality. Without validation, the first campaigns into a new market can damage your domain's reputation there permanently.

The short version

Multilingual email is its own discipline, part engineering and part marketing. Template architecture, translation workflows, regional legal requirements, segmented analytics — and at the foundation: a clean list for each language segment.

Start from the ground up: locale field in the database, address validation, transactional emails in the second language. The rest layers on top. Perfectionism at launch is paralyzing — a decent localization live in two languages beats six months of preparation for a perfect one in ten.

Before entering a new market, check the list. uChecker scores every address in a segment so your first send in a new language hits the inbox, not the spam folder.

email localizationmultilingual campaignsi18n emaillanguage segmentationtranslation workflowemail validation