Skip to Content
Markets

Markets

If you sell across multiple countries or in multiple currencies, this guide walks through how Mercer surfaces Shopify Markets to your customers.

This guide assumes you’ve already set up Markets in your Shopify admin under Markets. Mercer reads from localization.country, localization.language, and localization.available_countries — all standard Shopify objects. If your store is single-market, you can skip this guide; nothing in Mercer requires Markets to be configured.

Three switcher patterns + a country gate

Mercer offers three patterns for the switcher (where the customer can manually change country / language) plus an optional first-visit country gate (a dismissible toast that asks on the first page load).

PatternWhere it livesWhen to use
DropdownHeader, top-rightUp to ~8 markets.
ModalHeader link opens a full modal10+ markets, or to surface full country names
FooterFooter only — nothing in the header or menu drawerEditorial / luxe stores wanting clean header
Country gateFirst-visit toast, dismissibleOptional, off by default. Toggle separately.

You set the pattern in Theme settings → Markets → Switcher style. The four options are Dropdown, Modal, Footer only, and Off. The shipped default is Dropdown, so a header switcher appears automatically once there’s something to switch — 2+ countries or 2+ published languages (a single-country store with multiple languages shows the language picker only). Switch to Modal, Footer only, or Off if you prefer.

The header shows a small ISO·currency chip in the top-right (e.g. “US · USD”). Clicking it expands a dropdown with country and language pickers. Best for stores with up to 8 markets where customers know where they want to shop.

The header shows the same ISO·currency chip as the Dropdown variant (e.g. “US · USD”). Clicking opens a centered modal with a country <select> and a language <select>, plus a quick-pick grid of up to eight countries (the first in your list, always including the current one) — each tile showing the country name and its currency (ISO code + symbol). The country list is a flat, alphabetized set, not grouped by region. Best for catalogs with 10+ markets or where you want to surface full country names without crowding the header.

Removes the switcher from the header and the menu drawer. Adds a small switcher to the footer. Best for editorial / luxury stores that want a minimal header.

Whenever the header uses its menu drawer — on phones and tablets, and on desktop when the menu doesn’t fit — the drawer also includes an inline country / language switcher. There’s no separate setting for it: it appears with Dropdown or Modal and is omitted with Footer only and Off.

Country gate

Independent of the switcher pattern. When enabled, the first-time visitor sees a dismissible suggestion toast (not a centered modal) with generic copy:

It looks like you’re in {country}. Switch to view available prices, taxes, and delivery options.

The detected country / currency name is filled in at runtime; the copy is not hardcoded to any specific country or currency.

Two buttons: Take me there (switches localization to the suggestion — the detected country + market currency, or just the language for a language-only suggestion) and Stay here (soft-dismisses the toast). A separate Don’t ask again on this device checkbox controls how long the dismissal is remembered. Dismissals are stored in localStorage: a soft dismiss (the X or Stay here) is remembered for 1 day; opting in to the checkbox remembers the choice for 365 days.

The gate also handles a language-only suggestion. The toast only renders on stores with 2+ published countries, but within that, if a visitor’s detected country already matches the active one and only their detected language differs, the same toast appears with “View this store in {language}” framing — suggesting the language instead of a country. The country-change and language-change cases share the toast and the same two buttons.

Mercer detects the visitor’s country client-side via Shopify’s /browsing_context_suggestions.json browsing-context endpoint (which is itself IP-resolved server-side). No third-party geolocation is used. The toast does not appear if:

  • The visitor has already dismissed it (dismissal recorded in localStorage).
  • The detected country and language both match the active market (nothing to suggest).
  • No localization options are configured for the detected country (so the switch would be a no-op).

To enable: Theme settings → Markets → Country selection prompt.

Pricing pattern

Mercer renders Shopify’s active prices through the money filter. Two patterns control the accompanying presentation; currency comparison is against your shop’s primary currency, not a fixed currency such as USD:

PatternBehavior
Local only (default)Displays the active price using Shopify’s money formatting.
Round-up disclosureDisplays the same numeric price, plus a Rounded for {{ currency }} label when cart.currency differs from shop.currency. This setting does not calculate or apply rounding.

Toggle in Theme settings → Markets → Price localization pattern. Leave this on Local only unless the disclosure accurately describes your pricing setup. Configure currency conversion and rounding in Shopify; the theme’s label does not change what customers pay.

Hreflang

Shopify generates hreflang from your published language and market domain configuration. Mercer includes Shopify’s required content_for_header output and does not generate an additional set of hreflang tags, including on single-country stores with multiple languages.

View the published page’s source and search for hreflang to inspect the alternates for your setup. The output depends on your market, domain, and language configuration; there is no separate Mercer hreflang toggle. See Shopify’s international SEO guide .

Right-to-left (RTL) support

The <html dir> attribute flips to rtl automatically for any right-to-left script the theme recognizes — ar, he, fa, ur, ps, sd, ug, yi, dv, and ckb (ar and he being the common examples). All other locales keep dir="ltr".

Mercer’s CSS uses logical properties (inline-start, inline-end, margin-inline-*, and related properties), so page layout mirrors without a separate RTL stylesheet. Drawer and off-canvas motion for cart, mega-menu, and filter sheet surfaces is explicitly RTL-aware.

PDP gallery arrow keys and horizontal scrollers also respect direction: left / right behavior inverts under RTL so keyboard and button navigation match the visual reading direction.

Preview your published RTL locale and test navigation, product selection, and cart flows before launch. Direction-aware CSS and JavaScript are in place, but that does not establish that every page and app integration has been visually checked in your language. The bundled EU language packs listed below are LTR.

EU language packs

Mercer ships locale files for French (fr), German (de), Italian (it), and Spanish (es) alongside the default English. Each locale includes storefront strings (fr.json, de.json, it.json, es.json) and Theme Editor strings (fr.schema.json, de.schema.json, it.schema.json, es.schema.json).

To activate a language, add it under Settings → Languages in Shopify admin, prepare its translations, and publish it. Assign the language to the relevant market and domain under Markets → [market] → Domain / language. Mercer reads Shopify’s active language; no theme setting is required. See Shopify’s language guide  and market domain and language setup .

The bundled translations are AI-assisted drafts awaiting native-speaker review. Before public-facing production use, have a native-speaker copy editor review the storefront and Theme Editor wording for your market. The locale work prioritizes key completeness and placeholder integrity — tokens such as {{ price }} and {{ count }} are preserved byte-identically — over final translation polish.

Pluralization sub-keys (one / other) are preserved per locale. HTML-bearing values keep their tags.

Use Shopify’s routes object and object URLs such as product.url, collection.url, and navigation link.url to retain the active storefront context. Mercer also calls its localized-href snippet in places that accept raw merchant-entered paths. The snippet adds the active path prefix where needed; it is not a global link rewriter.

A hard-coded /products/wool-trench in Custom Liquid is not automatically processed by that snippet. Prefer Shopify’s URL objects, or explicitly render the helper for a raw path:

<a href="{% render 'localized-href', path: '/products/wool-trench' %}"> Shop the wool trench </a>

Common Markets pitfalls

”My switcher doesn’t show”

Three things to check:

  1. Theme settings → Markets → Switcher style — has it been changed to Off? (The default is Dropdown.)
  2. Markets in the Shopify admin — is there something to switch to? The switcher renders once you have 2+ countries or 2+ published languages. A single-country, single-language store has nothing to switch to, so no switcher renders. (A single-country store with multiple languages still shows the switcher — the language picker only.)
  3. Check which countries Shopify makes available to the storefront. Mercer lists localization.available_countries; countries are not removed merely because they share a currency or language.

Hiding the controls on a single-country, single-language store does not by itself disable the Markets assets. Switcher style → Off disables the switcher; the optional country gate is configured separately.

”My country gate isn’t appearing”

The country gate only appears once per visitor (the dismissal is set in localStorage — 1 day for a soft dismiss, or 365 days if the visitor ticked Don’t ask again on this device). If you’ve already seen it, clear localStorage for your storefront URL or browse in incognito.

It also doesn’t appear if the detected country has no configured market — the switch would be a no-op.

”Prices show in the wrong currency”

This is usually a Markets configuration issue, not a Mercer one. Check:

  • Markets — is the visitor’s country in an active market?
  • The market’s currency and pricing configuration — is the currency you expect selected?
  • The market’s Catalogs — is the product included?

Mercer renders whatever Shopify reports as the active price.

”My country gate switches the customer but the page doesn’t reload”

The country gate uses Shopify’s standard localization form to switch. On submit, Shopify redirects to the same page with the new localization applied. If your customer’s browser is blocking form-submit redirects (rare), the page won’t reload — but this is out of Mercer’s control. The switch itself takes effect; the next navigation reflects it.

What’s next