Deliverability at Scale: Global & Multilingual Ops — Running Email/SMS Across Regions Without Chaos

Why global programs fail (and how to make yours boring—in a good way)

Global email/SMS doesn’t fall apart because French is hard. It falls apart because teams try to “move fast” by copy-pasting flows for every language and region. At ten flows, the system looks busy. At forty, it looks frantic. At eighty, it looks like a history museum: beautiful, outdated, and mostly closed on Mondays.

The antidote is unromantic: one orchestration brain; a language-aware template system; explicit consent logic per market; local quiet hours and send windows; domain/authentication architecture that mailbox providers can trust; and a small set of global SOPs everyone follows. Your goal is not to be clever. Your goal is to be predictable and kind—to people, to platforms, and to the future you who will inherit the program.

Architectures that scale: one brain, many languages

Pick an architecture pattern intentionally. The pattern decides whether you spend your quarters on outcomes or on maintenance.

Pattern A — Single account, single flow logic, dynamic language (default)

  • How it works: One set of flows for everyone. Copy comes from language packs (dictionaries). The decision tree (triggers, splits, experiments) is shared; only the language rendering and regional toggles change.
  • Pros: smallest surface area; consistent testing; easy rollbacks; fewer bugs; easier to audit.
  • Cons: you must invest in a real template system and translators who work with keys instead of screenshots.
  • Use when: you have 2–8 languages, one brand voice, and shared lifecycle logic.

Pattern B — Single account, separate flows per language (avoid unless necessary)

  • Pros: simple rendering; translators see their own flow in context.
  • Cons: duplication multiplies bugs; experiments fragment; changes take 2–8× longer; higher risk of policy drift.
  • Use when: legal copy or lifecycle logic differs materially by language/region and can’t be handled by flags.

Pattern C — Multi-account (per region/brand) with a common standard (enterprise)

  • Pros: clean separation for data residency, brand governance, or regional teams; per-region deliverability control.
  • Cons: higher ops overhead; standards must be codified or drift is guaranteed.
  • Use when: different subsidiaries or storefronts, strict residency, or regulated markets require it.

Recommendation: Prefer Pattern A. Your future stability depends on a small number of brains and a big number of dictionaries—not the other way around.

Deliverability per market: domains, authentication, throttles

Placement is a license renewed per region. Your domain plan should separate streams (marketing, lifecycle, transactional) and, when justified, regions. Keep the tree shallow; complexity taxes everyone.

Subdomain & authentication plan

  • Streams: news.brand.com (marketing), updates.brand.com (lifecycle), notify.brand.com (transactional).
  • Regions (when needed): news.eu.brand.com, news.apac.brand.com—only if deliverability or legal requires local control.
  • SPF/DKIM/DMARC: align for each subdomain; start DMARC at p=none, move to quarantine then reject after stability.
  • Branded tracking CNAME: align click/open hosts to your subdomain.

Throttles & concurrency

  • Per provider caps: rate limit Gmail/Yahoo/Outlook independently; ramp volume by cohort; backoff on 4xx deferrals.
  • Send-time distribution: avoid top-of-hour pileups; stagger heavy regions by 5–10 minutes.
  • Band policy: 0–30, 31–60, 61–90 day engagement bands; sunset after two re-engagement touches; no “big week” exceptions.

Template system: language packs, partials, and safe fallbacks

You can’t scale by cloning templates for every language. Build one logic, many dictionaries. Translators should edit keys; marketers should never paste paragraphs into HTML at 2 a.m.

Language pack pattern (pseudo)

{% set lang = person.lang|default:'en' %}
{% set T = {
  'en': { 'subject': 'Your order is on the way', 'cta': 'Track now' },
  'fr': { 'subject': 'Votre commande est en route', 'cta': 'Suivre' },
  'ar': { 'subject': 'طلبك في الطريق', 'cta': 'تتبع الآن', 'dir': 'rtl' }
} %}
{% set L = T[lang] if lang in T else T['en'] %}

{{ L['subject'] }}

{{ L['cta'] }}
    

Glossary & tone

  • Create a living glossary per language: product names (translate or not), banned phrases, tone notes.
  • Use sentence-case where possible; not all languages like Title Case.
  • Avoid puns; humor rots quickly across borders.

Fallbacks & missing keys

  • Render in fallback language (usually English) if a key is missing, never blank.
  • Flag missing keys in logs; ship with an obvious placeholder only in staging.

RTL & non-Latin scripts: design for direction, not disaster

Arabic and Hebrew aren’t “just another language.” They flip the canvas. If you don’t respect direction, your layout becomes a puzzle users won’t solve.

  • Wrap RTL content in dir="rtl" at container level; center CTAs to dodge edge cases.
  • Mirror arrows and step icons; “next” shouldn’t point left in RTL.
  • Pick fonts with full glyph coverage; fallback stacks should be tested on common devices.
  • Test numbers and punctuation; some contexts prefer Arabic-Indic digits.

SMS globally: 10DLC, sender IDs, quiet hours, and tone

SMS compliance is local. The safest messages still get blocked if you violate carrier norms. Treat registration, cadence, and tone as product features, not hurdles.

  • US: 10DLC brand/campaign registration via TCR; express consent; HELP/STOP; “msg freq varies” disclosure; quiet hours strongly recommended.
  • Canada: follow CASL; capture consent and keep records.
  • UK/EU: long codes common; consent and opt-out in the language of the recipient; PECR nuances.
  • India: DLT registration; alphanumeric sender IDs; pre-approved templates.
  • Many APAC markets: sender ID registration; strict content rules; avoid link shorteners that look suspicious.

Tone travels poorly via SMS. Short, respectful, specific. “Delivery today 15:00–18:00” beats “Big news! ✨”.

Timezones, send windows, and a calendar that doesn’t fight itself

A global calendar is a living grid, not a guessing game. Plan coverage by cohort and region, then enforce mechanics: timezones, quiet hours, and holidays.

Send windows

  • Store timezone per profile; render local send time per person.
  • Honor quiet hours at the profile level; SMS never breaks them except for user-requested reminders.
  • Observe local holidays; road-test major sends with a small cohort before unleashing them across timezones.

Coverage grid (example)

Cohort EU UK NA APAC Key Dial
New (0–30) Post-purchase #2–#4 Post-purchase #2–#4 Post-purchase #2–#4 Post-purchase #2–#4 P2-30
Repeat Goal recs Goal recs Goal recs Goal recs RPR
VIP Early access Early access Early access Early access Discount reliance

Multilingual QA checklist: things that break quietly

QA isn’t “does it look okay?” QA is “does the recipient feel respected, can machines parse it, and will the program survive an audit?” Run this checklist for every language, every major send, every time.

  • Encoding: UTF-8 across the stack; diacritics render on common devices.
  • Direction: RTL containers where needed; mirrored icons; centered CTAs.
  • Length: subject lines, buttons, and headings don’t truncate unfairly (German and Finnish can be long; design for it).
  • Numbers & dates: 1 234,56 vs. 1,234.56; 31/12/2026 vs. 12/31/2026; local currency symbol placement.
  • Legal: country-specific disclaimers present and correct; correct company entity where required.
  • Consent: footer language matches jurisdiction; one-click unsubscribe headers present.
  • Links: landing pages respect lang parameter; localized slugs exist; 302 chains are short.
  • Accessibility: alt text reads naturally; contrast meets standard; tab order sane.
  • SMS microcopy: opt-out keywords localized; quiet hours enforced; message length fits local limits.

Metrics that matter by market: repeat, revenue, and trust

If you can’t compare markets clearly, you’ll chase anecdotes. Normalize your dials and put them on one page per region.

Core dials (per region/language)

  • RPR (flows vs. campaigns) — money per head, not just clicks.
  • P2-30 — second-purchase rate for newly exposed cohorts.
  • Discount reliance — % of repeat orders using sitewide codes.
  • Complaint rate by provider — Gmail/Yahoo/Outlook; thresholds written.
  • Unsub/opt-out — per send; SMS and email separate.
  • Seed/panel trendline — not single tests; look for drift.

Translation operations dials

  • Time-to-ship per language (from English approval to live).
  • Rework rate (keys changed post-QA) — a proxy for glossary quality.
  • Coverage (percent of live keys translated vs. fallback) — aim for 100%; hotfix with fallbacks only in emergencies.

Governance: RACI, SLAs, and change-freeze that prevent fire drills

Global success is structure. The team that writes down how things work will always beat the team that “moves fast.” Give your future self a gift: governance.

RACI (excerpt)

Task R A C I
Glossary & language packs Localization lead Head of Lifecycle Brand/Linguists All markets
Consent & legal footer policy Privacy lead DPO/Legal Lifecycle IT/Sec
Deliverability (domains/auth) Deliverability lead Head of Ops IT/ESP Admin Markets
Quiet hours & send windows Producer Head of Lifecycle Regional leads Support

Pre-send QA SLA (minimum)

  • Rendering across common devices; dark/light; RTL where relevant.
  • Link validation (redirects, localized routes, branded tracking domain).
  • Segmentation & suppression (bands, legal flags, region filters).
  • Headers (List-Unsubscribe & Post); legal footer; company details.
  • Approval snapshot: audience, language(s), send windows, risk level, owners.

Change-freeze policy

During risk windows (migrations, big promos, known placement incidents), only pre-approved changes ship. Exceptions require joint approval by lifecycle and deliverability owners. Most global catastrophes begin with “we had to squeeze one more change in.”

60-day operating plan: week-by-week

Weeks 1–2: Foundations

  • Publish the Global Messaging Control Sheet. Fill in language/locale/timezone for active markets.
  • Audit domains: set or verify SPF/DKIM/DMARC per stream; add branded tracking CNAME; fix drift.
  • Write down engagement band policy and sunset rules; implement in ESP.
  • Refactor a core template to language packs; test fallback and RTL.
  • Inventory consent fields; reconcile imports; block list loads without proof.

Weeks 3–4: Reduce risk

  • Enforce quiet hours per profile; populate for all active markets.
  • Throttle high-volume markets by provider; stagger send times to avoid pileups.
  • Run a multilingual QA pass on the top five journeys; fix truncation and legal copy gaps.
  • Start weekly deliverability readout: complaint by provider, seed trendline, RPR split, P2-30, discount reliance.

Weeks 5–6: Learn faster

  • Introduce a plain-text proof variant for onboarding; grade by RPR and complaints in each market.
  • Evaluate whether any region needs a separate sending subdomain (only if justified by data).
  • Set SMS sender IDs/10DLC/DLT registrations; confirm quiet hours and opt-out language are localized and working.

Weeks 7–8: Harden

  • Rotate DKIM selectors; move DMARC to quarantine where stable.
  • Run a consent audit: ensure preference center and opt-down flows are local and visible.
  • Tabletop an incident with marketing + support + IT: who freezes, who communicates, and how you prove recovery.

Weeks 9–10: Expand safely

  • Roll out language packs to the next two journeys; retire duplicated flows where logic is identical.
  • Add market-specific proof blocks only where they justify their maintenance cost.
  • Re-balance coverage: avoid double-taps across channels in the same local hour.

Weeks 11–12: Review & commit

  • Quarterly global retro: deliverability, consent, ops misses, and the glossary backlog.
  • Freeze the SOPs that worked; schedule the next key rotations and DMARC steps.
  • Publish a two-page “How global messages ship here” guide inside your team wiki.

Case snapshots: three near-misses avoided (and how)

1) The cloned-flow avalanche

A fashion brand ran 6 languages × 4 regions with separate flows for each. One legal footer change became a 24-hour scramble. We moved to a language-pack template and a single logic per journey. Maintenance time dropped 40%, and—because tests were unified—RPR rose 7% in two languages where a proof-first variant had never been tried.

2) The midnight apology

A “last chance” SMS in North America arrived at 03:00 in the UK. Opt-outs spiked, and a carrier flagged traffic. We enforced profile-level quiet hours and added “Snooze 7 days.” Complaints fell under threshold in one week, and SMS regained its job—as a nudge, not a megaphone.

3) The link-domain mismatch

Marketing switched to a link shortener that didn’t match the sender domain. Seeds went red in one region; Gmail complaints edged up. Rolling back to the branded CNAME and staggering sends by 10 minutes stabilized placement in 48 hours. The policy that survived: link host changes require QA + small-cohort testing per region.

FAQ

Do we need separate sending domains per region?

No—only when data or risk proves the need. Separating streams (marketing/lifecycle/transactional) is usually more valuable than separating regions. Add regional subdomains if placement issues are unique or legal requires local control.

Should we duplicate flows for every language?

Avoid it. Duplicate logic multiplies bugs and kills experimentation. Use language packs and partials so translators edit keys, not HTML. Reserve separate flows for truly different logic or legal obligations.

Is double opt-in required everywhere in the EU?

Not by GDPR alone, but it’s common in Germany and other DACH markets and can protect your list quality. Your policy should be explicit by market; store evidence either way.

How do we handle RTL and LTR in the same template?

Store a direction flag with your language pack and wrap content in dir="rtl" when needed. Center CTAs; mirror directional icons; verify fonts; test on common devices.

What metrics should we compare across markets?

Holdout-adjusted RPR (flows vs. campaigns), P2-30 for newly exposed cohorts, discount reliance, complaint rate by provider, unsub/opt-out, and a seed/panel trendline. Add translation ops metrics—time to ship and rework rate—so you catch process issues early.

Back to blog