Why Your Upsell Offer Translations Aren't Showing on Your Store
You translated an upsell offer, but shoppers browsing in that language still see your primary language. Almost always this is one of a handful of things, and you can check them yourself in a couple of minutes.
This article is the troubleshooting companion to Translating Your Upsell Offers, which covers how to translate an offer in the first place.
Start here: the five-second checks
Work down this list in order. The first three account for most cases.
| Check | What to look for |
|---|---|
| Did you save? | Auto-translate results are unsaved changes until you click Save. If you navigated away, they are gone. |
| Is the language published? | An unpublished language is never served to shoppers, even though you can still type translations for it. |
| Has your product page refreshed? | Changes reach your product pages a few minutes after saving, once the page reloads. Cart and checkout update straight away. |
| Is this text part of the offer? | Labels shared across the whole app live in the Upsell Builder Localization section, not on an individual offer. |
| Did you edit the offer afterwards? | Editing primary-language text you had already translated leaves the old translation behind until you click Update all languages. |
💡 The quickest way to see what a shopper sees: open the offer and switch the Preview language picker in the Preview panel. It renders the offer exactly as a shopper in that language gets it, falling back to your primary language for anything untranslated.
Your translations were never saved
Nothing in Vitals translates or saves on its own. Every auto-translate run — whether you clicked "Auto-translate to French", "Replace all French translations", or "Update all languages" — lands as unsaved changes for you to review.
If you closed the tab, switched to another offer, or clicked Discard, that run was thrown away.
What to do: open the offer's translations page again. If the fields are empty and the status line still reads something like "4 of 12 translated", run auto-translate again and click Save this time.
If you saved several languages at once and only some of them took, save again — the ones that did not go through keep their unsaved changes ready for another attempt.
The language isn't published in Vitals
This is the single most common cause, and the most confusing one, because everything in the admin looks like it worked: the fields accept your text, and the save succeeds. Shoppers just never receive it.
A language has to be published in Vitals before it is served to your storefront. Two signs you have hit this:
- The language is missing from the Preview language picker in the offer editor. Only published languages are listed there.
- On the translations page, the auto-translate button is greyed out, and hovering it says "Auto-translate only works on published languages. Publish this language to use it." Running auto-translate on an unpublished language does nothing at all.
What to do: publish the language, then re-run auto-translate and save. Any wording you typed by hand while it was unpublished is still there.
A language that is already live on your Shopify storefront can still be unpublished in Vitals. The two settings are separate, so check the language's status in Vitals specifically.
Your product page hasn't picked up the change yet
Offers on your product pages are served from a cached file, which is refreshed shortly after you save. Offers in the cart, at checkout, and on the thank-you page are not cached and update immediately.
So this is the tell-tale pattern: the new wording shows in your cart drawer but the product page still has the old text. That is the refresh window, not a translation problem.
What to do: wait a few minutes, then reload the product page — a hard refresh, or an incognito window, avoids your browser's own cache. If it is still wrong an hour later, it is not this.
The text belongs somewhere else
Each offer's translations page holds the text belonging to that one offer — its headline, subtitle, badges, button label, tier names.
Text that appears once across the whole app is not there. Shared labels like the Pop-up on Checkout button live in the Localization section of the Upsell Builder app, and you translate them once for every offer.
What to do: switch the Preview language picker to the language in question and look at which text is still falling back. If the wording that is falling back is a shared label rather than something you wrote for this offer, translate it in Localization instead.
You edited the offer after translating it
Translations do not refresh themselves. If you rewrite a headline you had already translated, the old translation stays on your store until you update it.
Vitals catches this: after you change primary-language text on an offer that has translations, a notice appears with "Update all languages". Clicking it re-translates just the fields you changed, into every published language at once. One Save then stores your edit and its refreshed translations together.
If you dismissed that notice by leaving the page, edit the field again (or open the translations page for that language) and put the new wording through.
You cleared a field and expected the original to come back
Clearing a translated field stores it as genuinely empty for that language — it does not fall back to your primary language.
If you emptied a field to "reset it", type the wording you want instead, or run auto-translate to fill it again.
The reverse is also true and is deliberate: if you empty a field in your primary language and click Update all languages, its translations are cleared everywhere too, so text you deleted cannot keep appearing on your store in another language.
Frequently Asked Questions
Auto-translate did nothing at all — no result, no error. Why?
The language you were translating into is almost certainly not published in Vitals. Auto-translate only writes to published languages, so on an unpublished one it comes back with nothing to show. Publish the language and run it again.
I don't have a "Translations" link or a "Preview language" picker on my offer.
Both appear only when your store publishes more than one language. On a single-language store there is nothing to translate between, so Vitals hides them. They also do not appear on One Click Post-Purchase offers, whose text is rendered by Shopify after checkout.
The count of untranslated fields looks wrong.
Fields you leave blank in your primary language are not counted — there is nothing to translate — and sections that are entirely empty are hidden. That is what makes "All fields translated" reachable, and it can make the count lower than you expect.
A language I removed from Shopify still shows Vitals text. How do I stop it?
Get in touch with support with your store URL and the language in question, and we will clear it for you.
One of my placeholders stopped working after translating.
Placeholders like {{ product }} have to survive into the translation exactly as they appear in the source text. Open the offer's translations page and look for the flag Vitals puts on any field whose translation is missing a placeholder its source has, then add the placeholder back and save.
Still stuck?
Contact support with your store URL, the offer, the language, and what you see on the storefront versus what you expect. Screenshots of the offer's translations page and the storefront side by side get us to an answer fastest.