International: markets, currencies and translations

Basic
October 8, 2026

If you sell across markets and languages, offers follow without separate configuration. Prices are re-fetched per shopper country from Shopify's own contextual pricing, so an upsell always quotes the price Shopify would actually charge — in the right currency, including any market-specific adjustments. Separately, 18 offer text fields can be translated per locale, with shop-wide defaults so you write each phrase once rather than per offer.

Prices come from Shopify, not a conversion table

This is where multi-currency setups usually go wrong. UpsellPlus applies no exchange rates of its own and maintains no per-country price list. When a shopper's country is known, the offer's variant prices — selling price and compare-at price — are re-fetched from Shopify's contextual pricing, the same source your storefront and checkout use.

So the upsell shows the price Shopify would charge that shopper, including market-specific price adjustments and rounding rules you've configured. There is no scenario where the upsell quotes one number and checkout charges another because a rate drifted.

Three behaviours worth knowing:

  • Single-market stores skip it entirely. With no shopper country in play the step is bypassed — no extra calls, no added latency.
  • It fails soft. If the pricing lookup fails, the offer still shows at your default-currency prices rather than disappearing.
  • Subscription prices are protected. Contextual pricing isn't aware of selling-plan adjustments, so offers priced by a selling plan are explicitly excluded from being overwritten.

For size-upgrade offers, the item already in the cart is priced in the shopper's market too, so “upgrade for $12 more” is calculated on local prices rather than converted afterwards.

Your markets come from Shopify

Enabled markets are read directly from Shopify — up to 50 — along with each one's country, currency and default locale. Add or disable a market in Shopify and it follows, with nothing maintained separately.

Targeting by market, country, province or language

Four of the targeting rules cover geography and language, and they answer different questions: the Shopify Market a shopper is browsing, the shipping destination country (which can differ), customer province or state for sub-national targeting, and customer language for stores where language and place don't line up. They combine with every other rule, so “EU market, cart over €80, not tagged wholesale” is a single offer.

What you can translate — all 18 fields

GroupFields
Content (4)Callout banner, callout subtext, subtitle, message
Buttons (3)Accept, decline, add
Product labels (3)“Learn more” link, variant placeholder (defaults to “Select option”), carousel navigation prompt (defaults to “Select style”)
Order summary labels (6)Quantity, shipping, savings, subtotal, total, taxes
Timer (1)Countdown timer label

The editor only shows the fields a given surface actually renders, so you never fill in text that won't be used. Content and the three product labels appear everywhere; the add button on every surface except post-purchase and POS; accept/decline, the timer label and the six order-summary labels on post-purchase, the only surface with an order summary and a countdown.

Product titles, variant names and prices come from Shopify and are localised by Shopify.

Write each phrase once

Translations resolve from three layers. Your offer's own text is the base. Shop-wide defaults supply button and label translations across every offer — so “Ajouter au panier” is written once, not on each offer. Per-offer translations override both where a specific offer needs different wording.

For your primary language the offer's own text wins. For every other locale the shop default beats the untranslated base, and an explicit per-offer translation beats everything. Nothing is machine-translated — every string is yours.

Locale fallback

Matching tries the exact locale first, then the base language: a shopper on fr-CA is served your fr translation when no Canadian French version exists. Dynamic tokens still resolve inside translated text, so a localised sentence containing a product name or price renders correctly in every language.

What you can build with it

Sell one offer everywhere. Build a cross-sell once and let price and language resolve per shopper, instead of duplicating it per region.

Region-specific products. Scope an offer to one market or shipping country when the add-on only makes sense there.

Translate once, apply everywhere. Set shop-wide button and label defaults per language, then override only the offers that need special wording.

Regional phrasing where it matters. Give fr-CA different wording from fr and let everything else fall back automatically.

Requirements & fit

Works on any Shopify plan. Per-market pricing requires Shopify Markets configured with a currency on each market. Contextual pricing reflects what Shopify is set up to charge — UpsellPlus does not apply its own conversion rates.

Related Help Center articles

Try it on your store

Install UpsellPlus free and launch your first offer in minutes, or book a walkthrough with our team.