Shopify Builds>Primitives>Shopify Markets

Shopify Markets

Definition

Shopify Markets is the platform's model for selling into more than one country from a single store. A market groups countries and carries its own currency, pricing, domains or subfolders, languages and duties settings. The storefront resolves the active market per request, and themes read it to localize prices, forms, routing and copy without maintaining a separate store per country.

Documented at https://shopify.dev/docs/apps/build/markets.

How we've used it

Two markets on one theme is the case we keep meeting, and it decides far more than currency. The reliable discriminator at render time is the request host, so anything that must differ per storefront branches on it: structured data emits one complete graph per domain with its own currency, region and absolute identifiers, and hreflang alternates are built from the request path with the language prefix stripped, so each domain resolves to its own canonical entity instead of competing with its sibling. A host matching neither branch emits nothing, which keeps a preview theme from publishing the wrong market's prices. The selector is the other recurring job: Shopify's localization form is rendered in the header, the footer and a drawer on one page, so option ids have to be namespaced per instance or the three collide.

Builds using it

22 further gated builds use it; their pages follow.

Related entities

Theme locales and internationalization · Section context files · Structured data (JSON-LD) · Customer accounts

Builds

Audience-targeted announcement bar with sticky-height measurement

Dawn's announcement bar, extended so each announcement block carries an audience setting, the section counts the matching blocks before it renders, and that count decides whether the page gets no bar, a static line or a carousel — with slide numbering that matches what's actually on screen, and a pinned height the rest of the layout can read.

LUS Brands

Adults/Kids audience-switching header with automatic menu swap

One Liquid predicate decides which audience a page belongs to. The header reads it, replaces the entire navigation with the kids menu, and keeps a two-button switch back to the adult side in reach on desktop and mobile alike.

LUS Brands

Country/market selector hardened for three simultaneous instances

Dawn's country selector, rendered three times on every page, with every option id namespaced by the position that rendered it and three ARIA attributes removed — so the three instances stop colliding and the vendor's own localization script needed no change at all.

LUS Brands

Configurable PDP block system on the Palo Alto theme (Recharge widget placement, size charts, siblings, quick view)

Merchandiser-orderable buy-box blocks on Three Ships' licensed theme, with the subscription app block captured and re-emitted inside the buy box, plus metafield-driven size charts, a product-family switcher and a sticky add-to-cart bar.

Three Ships

Market-forked product JSON-LD authored in the product section, with a templated tier for the catalog

Two tiers of structured data at the foot of one Three Ships product section: complete, per-market `@graph` documents for the hero SKUs, branched on `request.host`, and a Liquid-templated Product and Offer block that reads variants, currency and barcode for the rest of the catalog.

Three Ships

Eight WebMCP tools that make a product page answerable — and buyable — by a browser agent

A feature-detected block in the theme layout registers eight `navigator.modelContext` tools on one trial-kit product page — seven an agent can read from, one that adds a Liquid-fixed variant to the cart.

Three Ships