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 Settings → 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 modal that asks on the first page load).
| Pattern | Where it lives | When to use |
|---|---|---|
| Dropdown | Header, top-right | Default. Up to ~10 markets. |
| Modal | Header link opens a full modal | 10+ markets, or for “search by region” UX |
| Footer | Footer link only — no header chrome | Editorial / luxe stores wanting clean header |
| Country gate | First-visit modal, dismissible | Optional, off by default. Toggle separately. |
You set the pattern in Theme settings → Markets → Switcher pattern. The four options are Dropdown (default), Modal, Footer only, and Off (no switcher).
Dropdown (default)
The header shows a small ”🇺🇸 USD” pill in the top-right. Clicking it expands a dropdown with country and language pickers. Best for stores with up to 10 markets where customers know where they want to shop.
Modal
The header shows a “Country / language” link instead of a dropdown. Clicking opens a full-screen modal with grouped country lists (by region — Americas, Europe, Asia-Pacific, etc.) and a language picker. Best for catalogs with 10+ markets or where you want to surface flag emojis and full country names without crowding the header.
Footer only
Removes the switcher from the header entirely. Adds a small switcher to the footer. Best for editorial / luxury stores that want a minimal header.
Country gate
Independent of the switcher pattern. When enabled, the first-time visitor sees a centered modal:
Looks like you’re shopping from Germany. Switch to EUR € for local prices, or stay in USD.
Two buttons: Switch (changes localization to the detected country
- market currency) and Stay (dismisses the modal and remembers
the choice in
localStoragefor 30 days).
Mercer detects the visitor’s country via Shopify’s request.country
which is server-side geo-IP. No third-party geolocation is used. The
modal does not appear if:
- The visitor has already dismissed it (cookie set).
- The detected country matches the active country.
- No localization options are configured for the detected country (so the switch would be a no-op).
To enable: Theme settings → Markets → First-visit country gate.
Pricing pattern
Mercer renders prices in the active country’s currency. Two patterns control how non-USD prices are formatted:
| Pattern | Behavior |
|---|---|
| Local format (default) | Uses each market’s locale formatting. e.g. “$1,234.00” / “1.234,00 €” / “¥1,234”. |
| Round up | Rounds prices up to the nearest currency unit. e.g. “12.34 €” → “13 €”. |
Toggle in Theme settings → Markets → Price pattern. Most stores should leave this on Local format. Round up is for stores that prefer “clean” prices in display currencies.
Hreflang
Mercer emits <link rel="alternate" hreflang="..." href="..." />
tags in the <head> of every page when localization has more than
one language available. This signals to search engines which content
is the canonical version per language. No merchant action required;
hreflang renders automatically when Markets has multiple languages
configured.
If you want to verify hreflang is rendering, view the page source on
any page and search for hreflang. You should see one tag per
configured language plus an x-default tag.
Localized links
Anywhere Mercer renders an internal link, the link is automatically
prefixed with the active country / language path (e.g. /de-de/products/...).
You don’t have to do anything; Mercer’s localized-href snippet
handles this for every section, block, and template that emits a URL.
This includes:
- Navigation menu links
- Cart drawer “View cart” / “Checkout” buttons
- Featured collection CTAs
- Product card “View product” overlay links
- All buttons in image-with-text and multi-column blocks
- Custom Liquid blocks (when using
link.urlinstead of hard-coded/products/...).
If you hard-code a path like /products/wool-trench in a Custom
Liquid block, that path will not be auto-localized. Use the
linklists.<handle> or link.url Liquid drops where possible.
Common Markets pitfalls
”My switcher doesn’t show”
Three things to check:
- Theme settings → Markets → Switcher pattern — is it set to Off?
- Settings → Markets → Markets list in the Shopify admin — are there 2+ markets configured? A single market means no switcher renders (because there’s nothing to switch to).
- If you have multiple markets but only one has the same currency and language as the active one, the switcher only shows the options that meaningfully differ. This is a Shopify-side filter, not a Mercer one.
”My country gate isn’t appearing”
The country gate only appears once per visitor (set in localStorage
for 30 days). 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:
- Settings → Markets — is the visitor’s country in an active market?
- The market’s Pricing → Local pricing — is the currency you expect set as the local currency?
- 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.