Customer.io Now Translates Your Emails With AI. The Catch: Translations Don't Update When You Edit the Original

In 2008, Swansea council needed a road sign. The English was simple: "No entry for heavy goods vehicles. Residential site only." Welsh law requires road signs in both languages, so an officer emailed the council's in-house translation service and waited for the Welsh. A reply came back, the sign was made, and it went up by a supermarket in the Morriston area.

The Welsh on it read: "I am not in the office at the moment. Send any work to be translated." The officer had taken an out-of-office auto-reply and bolted it to a post. Nobody who read Welsh checked the sign before it went up, so it stayed there until Welsh speakers started sending photos to a magazine (BBC News, 31 October 2008).

That's the whole problem with translation in one story: the failure is invisible to the person who can't read the output. Customer.io has now made that kind of translation fast, cheap, and available inside your message editor. Good news for any SMB selling across borders... as long as you build the two habits the council skipped.

Since 3 October 2025, Customer.io can translate a message into other languages with AI, and since 2 March 2026 it does it inside Design Studio, the editor most teams build emails in. This post covers what actually shipped, how the language matching works, and the attribute you have to get right first. Then the two traps that catch teams without a localisation department: translations that quietly go stale, and AI output nobody checks.

The cost excuse for not localising just died

For years, the reason a small team didn't localise was simple: it cost money they didn't have. You either paid an agency per language, or you built a separate branch for every locale inside every campaign and maintained all of them by hand. Most SMBs looked at that and decided English was good enough.

The data says it isn't. CSA Research's 2020 study of 8,709 consumers across 29 countries found that 76% prefer to buy products with information in their own language. Another 40% won't buy from a website in another language at all (Can't Read, Won't Buy—B2C, CSA Research). If even a fifth of your list reads a language other than English, the all-English send is leaving money on the table every time it goes out.

What changed is the price. Customer.io shipped AI translation across channels on 3 October 2025, letting you auto-translate a message when you add a language variant (Customer.io release notes). At launch it ran everywhere except Design Studio emails. That gap closed on 2 March 2026, when Design Studio gained the same in-editor translation (Customer.io release notes). So the feature isn't brand new, but it now reaches the editor most teams use to build email, which is what makes it worth acting on.

How AI translation actually works in Customer.io

You write one message in a default language, then add language variants to the same message. No campaign branches, no duplicate workflows. When the message sends, Customer.io matches each person's language attribute to a variant. If it finds no match, that person gets the Default message, marked at the top of the editor (Translate your messages, Customer.io docs).

That single-message model is the part that saves the work. You add languages by clicking Add language, ticking the locales you want, and selecting Auto-translate with AI. The translation runs against your Default message, because the default is the foundation every variant is built from. It works across email, SMS, WhatsApp, push, and in-app, so the same approach covers your whole channel mix.

One detail worth knowing before you trust it with a full template: Auto-translate handles your body text, subject lines, preheader text, and image alt text. It does not touch the images themselves, your email layout, Liquid, snippets, or text inside custom components unless you detach the component first. The Liquid exclusion bites people, because a fallback like {{customer.first_name | default:"there"}} stays in English in every language until you translate the fallback value by hand. If you lean on Liquid defaults and conditionals, walk through the Liquid patterns that break silently before you assume a translated send is fully translated.

Set the language attribute properly, or none of this works

The whole system hangs on one attribute, so get it right before you translate anything. You set a single language attribute for the workspace, then store each person's language preference in it. That value is what Customer.io matches against your variants at send time.

Format matters. The value is a two-letter language code with an optional two-letter region code after a dash, like en or en-US, drawn from the ISO 3166-1 and IETF standards. Case doesn't matter (es-MX and es-mx are the same), but the dash does. Decide early whether you need region-level codes or just language-level ones, because fr and fr-CA are different variants and a mismatch sends someone the default instead.

Where does the value come from? Three common places: a language picker on your signup form, the device or browser locale captured through a mobile or web SDK, or enrichment from data you already hold. Whichever you choose, store the code in the native format above, not a full language name, or the match will fail and your carefully translated French email will never reach the people who needed it.

The drift trap: translations don't update when you edit the original

Here's the line in the documentation that almost nobody reads until it's bitten them: "We do not automatically update translations when you change the default template" (Translate your messages, Customer.io docs). Translate your email today, edit the English next week to fix a price or a date, and every other language still carries the old version. Your French audience drifts out of date one edit at a time, and you won't see it, because you don't read the variant you broke.

How you fix a drifted translation depends on your editor. In Design Studio, you open the language dropdown, choose Refresh from Default, pick the languages to regenerate, and Customer.io re-translates them from your updated default in one step. In the other editors there's no refresh button: you delete the translation and re-add the language variant from scratch. Either way, the system will not do it for you.

So the trap isn't the mechanics, it's forgetting. The fix is a process, not a feature. Make "re-translate the variants" a checklist item on every edit to a default message, and give one person ownership of it. If a translated campaign matters enough to send, it matters enough to refresh when the original changes. Treat the default as the single source of truth and the variants as derived copies that need rebuilding whenever the source moves.

The review loop: AI translation is a draft, not a send

Review every translated variant before it goes out, the same way you'd review any other AI output. Customer.io says so plainly in the editor: "Remember to review your translations for accuracy; generative AI can make mistakes." That's the Swansea sign all over again. The model produces fluent text, fluent text looks finished, and the one person who could catch the error is the one who can't read it.

You don't need a linguist on every send, but you do need to match the review to the stakes. A native or fluent speaker should spot-check anything customer-facing and high-volume before the first send in a new language, and re-check after any major rewrite. For regulated content—legal terms, medical information, financial disclosures—don't ship unreviewed machine translation at all; use a professional translator. The cost of a wrong word there isn't a retweet, it's liability.

This is the same discipline that applies to Design Studio's other AI features, which give you a fast first pass and not a finished asset. Build the review into the workflow: send yourself a test of each variant, check it renders, and preview every language the way you'd preview for dark mode rather than assuming the English preview covers them. And if a translation fails to generate—usually a connection issue with the AI service—Customer.io shows a Retry button in the failure notice, so a failed run doesn't silently ship the default.

Rollout order for an SMB without a localisation team

Start with the languages your own data already shows, not the markets you wish you were in. Pull the language or country distribution of your active list. If 18% of your engaged users are in Brazil and 12% in Germany, Portuguese and German earn the first two variants. Don't translate into ten languages on day one; translate into the two or three your audience actually reads and prove the workflow before you widen it.

Then pick the right messages first. Transactional and onboarding emails—order confirmations, password resets, the first-week activation sequence—carry the highest open rates and the clearest value, so they reward localisation fastest. Newsletters and broadcasts come later. When you do translate a newsletter, note that Customer.io now supports rate limiting on multi-language newsletters, which lets you control send speed across variants (Customer.io release notes, 19 March 2026). A/B testing works on translated newsletters too, though not on API-triggered broadcasts or campaign messages, so plan your tests accordingly.

If your audience already lives outside the US, localisation pairs naturally with the channels they prefer. The same data that tells you which languages to translate often tells you that WhatsApp or LINE would reach them better than another English email. Translate the message and meet people on the channel they actually use, and the combined lift is bigger than either move alone.

Frequently asked questions

How does Customer.io decide which language version to send?

It matches each person's language attribute to your translated variants at send time. If the attribute matches a variant, that person gets the translated message; if it matches nothing, they get the Default message. You don't build branches for this—the match happens automatically inside the single message (Customer.io docs).

What happens if a recipient has no language attribute?

They receive the Default message. The default is the version you draft first, and it's the fallback for anyone whose language preference is missing or doesn't match a variant you've added. That's why your default should be your most widely understood language, usually English.

Do Customer.io translations update automatically when I edit the original email?

No. The docs state it directly: translations are not automatically updated when you change the default template. In Design Studio you can choose Refresh from Default to regenerate variants in one step; in the other editors you delete the translation and re-add the language. Either way it's a manual step, so make re-translation a checklist item on every edit to a default message (Customer.io docs).

Which channels support AI translation in Customer.io?

Email, SMS, WhatsApp, push, and in-app. AI translation runs across all of Customer.io's message channels, so you can localise your whole channel mix from the same single-message model (Customer.io docs).

Does AI translation work in Design Studio?

Yes, since 2 March 2026. Cross-channel AI translation first shipped on 3 October 2025 but excluded Design Studio emails at launch; the 2 March 2026 release brought in-editor translation to Design Studio, including a Refresh from Default option the other editors don't have (Customer.io release notes).

Do AI translations use up my AI credits?

No. Customer.io's billing docs are explicit that only LLM actions consume AI credits; other AI features don't (AI credits, Customer.io docs). In-editor message translation is listed as a separate AI feature, not an LLM action (Use Customer.io with AI), so translating variants doesn't draw down your balance. If you're modelling spend on the features that do, here's how to forecast your AI credit usage before the free bundle runs out.

How should I judge whether the AI translation is good enough to send?

Judge it by stakes, not by a single accuracy figure. For high-volume, customer-facing sends, have a native or fluent speaker spot-check before the first send in a new language and after any major rewrite. For low-stakes internal or behavioural nudges, a lighter check is fine. For regulated content—legal, medical, financial—don't send unreviewed machine translation at all. Customer.io's own guidance is to review every translation for accuracy because generative AI can make mistakes (Customer.io docs).

What parts of my email does Auto-translate actually translate?

Body text, subject lines, preheader text, and image alt text. It does not translate the images themselves, your email layout, Liquid (including default: fallback values), snippets, or text inside custom components unless you detach the component first (Customer.io docs). Check your Liquid fallbacks by hand, since they stay in the source language otherwise.

How do I format the language attribute?

Use a two-letter language code with an optional two-letter region code after a dash, like en or en-US, following the ISO 3166-1 and IETF standards. The value isn't case-sensitive, but the dash is required, and fr and fr-CA count as different variants (Customer.io docs).

Can I still use a professional translator instead of AI?

Yes. When you add a language, leave Auto-translate with AI unticked and paste in your own translated content, or export the email to HTML to send to a translation vendor and import their version back. Many teams use AI for a first draft and a professional for high-stakes or regulated copy (Customer.io docs).

Can I A/B test messages that have translations?

Yes, in newsletters. You can A/B test translated newsletter broadcasts, but not API-triggered broadcasts or campaign messages. Make sure any change you test—a subject line, say—is duplicated across every language variant so the test stays clean (Customer.io docs).

Does Customer.io support every language for AI translation?

It auto-translates most of the locales it supports, but not all of them. The locale list marks the exceptions, and if you pick one of those, Customer.io won't translate it—you'll need a vendor or another service for that language. Check the locale list before you promise a market a localised send (Customer.io docs).

What happens if a translation fails to generate?

You get a Retry button. Translations occasionally fail, usually when there's a connection issue with the AI service, and Customer.io shows a retry option in the failure notification so you can run it again without rebuilding the variant (Customer.io docs).

Sources

David Crowther
Book a free consultation →

On our call, you'll be speaking with David Crowther, founder of NerveCentral.

Our initial consultation is not a sales call—you'll talk, I'll listen and ask questions—then I'll come back to you within 48 hours with our best ideas on how to grow your business.