Multi-Market Merchandising on Shopify Plus: Currency-Aware Ranking, Regional Language, and Inventory-Aware Results
Key Takeaways
- Shopify Markets localizes price, currency, and product availability automatically. It does not change what your search ranks or how your collections sort.
- What resolves per market on its own: the market price and currency, and which products are published to that market. Everything else in ranking and merchandising stays shared across markets unless you configure it.
- Regional language ("trainers" in the UK, "sneakers" in the US) is best handled by semantic understanding plus location context, not a per-market synonym list you maintain.
- Sort order and merchandising rules can be scoped to a market or region using contextual conditions and conditional sort expressions.
- The search layer can surface what is available and in stock per market. Routing to a specific local-fulfillment SKU is a fulfillment decision, not a search feature.
You expanded into the UK. Maybe the EU, Canada, or Australia. You translated the storefront, switched on currencies, and assumed the search experience localized along with everything else.
It didn't. A shopper in London searches your store and gets the same product order a shopper in Ohio gets, in different labels and a different currency. The merchandising underneath never moved.
That gap, between a storefront that reads localized and a discovery experience that actually is, is where international revenue quietly leaks. NNGroup makes the same point bluntly: to win in an international market, sites "must go beyond translation and localization."
What follows is the mechanics: what changes per market on Shopify Plus, what you set up, and what the search layer honestly does not do. It ends with a per-market QA grid you can run on your own store this week.
Why isn't translating the storefront the same as merchandising it?
Translating a Shopify storefront localizes the language shoppers read, but it does not localize search and merchandising. Ranking, sort order, and merchandising rules stay shared across every market unless you configure them per region. So shoppers abroad often see home-market search results wearing translated labels, which is a discovery gap, not a translation one.
Translation changes the words on the page. It does not change which products rank, what a collection sorts by, or whether the engine understands the words a shopper in that market actually types.
The obvious objection: doesn't Shopify Markets handle all of this? It handles a real and important slice. Markets resolves the right price, the right currency, and which products are available in each region.
What it does not touch is the ranking and merchandising logic that decides what shows up, and in what order.
What actually changes per market?
On Shopify Plus, we resolve market price, currency, and product availability automatically once Shopify Markets sync is on. Sort order and merchandising rules are configurable per market. The base ranking model and its signal weights stay shared across all markets unless you scope a rule to a region.
Three categories. Get these straight and the rest of the post is easy.
- Automatic per market. The resolved market price and currency apply to every variant, and the catalog is filtered to the products published to that market. You don't configure this; Markets sync does it.
- Configurable per market. Sort order and merchandising rules. These can be scoped to a market or region, but only when you set them up. Left alone, they run home-market logic everywhere.
- Shared until configured. The global ranking signal weights and the base relevance model. These behave the same in every market unless a rule narrows them to a region.
The mistake we see most often is assuming everything lives in column one. Most of discovery lives in columns two and three.
A few mechanics worth knowing, because they're what make the columns real:
- Market modes. Three of them. Off (no market handling), Pricing Only (resolved price and currency), and Strict (price, currency, and availability filtering). Strict mode excludes products not published to the market, so shoppers never see what they can't buy there.
- Market resolution. The shopper's country, carried as
context.geo.countryin ISO 3166-1 alpha-2 form, resolves to a market through the synced region table, falling back to your primary market when there's no match. - The market handle on the catalog.
available_market_idscan be exposed as a filterable catalog attribute, which is what lets a merchandising rule reference the market at all. - Currency for the frontend. The response carries
_meta.pricingwithcurrency_codeandcurrency_decimal_places, so the storefront formats the number correctly.
So is anything truly automatic? Yes: price, currency, and availability. We're explicit about that because the rest of this post asks you to configure things, and you should trust where the line sits before you start.
How do currency and price work across markets?
Showing the correct currency and market price is automatic once Shopify Markets sync is on. Price-based sort order can be made market-specific using conditional sort expressions keyed to the shopper's country. A market-specific price-tier boost as a standalone ranking action is not a documented feature, so treat per-market price logic as a sort-and-filter decision, not a boost.
"Currency-aware ranking" sounds like one feature. It's three different things, and people conflate them constantly.
- Showing the right price in the right currency. Automatic. The resolved market price and currency apply to every variant the moment Markets sync is on. Nothing to configure.
- Price-driven sort logic per market. Configurable. A conditional sort expression activates on the shopper's context, so you can sort one way for one country and another way for another. The documented example sorts price descending for US shoppers and ascending for Canadian ones.
- A named "price-tier boost" that varies by market. Not something we'll claim here. It isn't in the ranking-relevancy docs, and we'd rather tell you the two levers that exist than sell you a third that doesn't.
Getting the displayed price right matters. Stripe notes that showing amounts in a foreign currency "immediately introduces problems," because shoppers have to mentally convert and start worrying about hidden fees. That piece is automatic. The hard part is everything ranked around the price.
Underneath sits the FX problem. A flat "under $100" mental model breaks across currencies, because the same numeric threshold means very different value in each market.
Price-based sort or filter logic operates on the market-resolved price. So the lever that exists today is segmented or conditional sort keyed to geo. Not a cross-currency price facet.
So can't you just boost cheaper products in price-sensitive markets? You can express that intent as a conditional sort by geo. Calling it a per-market "boost" overstates what the ranking rules actually do today, and we won't.
How do you handle regional language without a per-market synonym list?
You should not maintain a per-market synonym list. Regional language like "trainers" in the UK and "sneakers" in the US is handled by semantic understanding plus location context, which reads meaning and applies regional variants automatically. Reserve manual regional terms for deliberate decisions, such as brand-coined names or region-specific redirects, not for language the engine already understands.
The tail question is "how do I localize synonyms per market." Our answer is the one we made in why your synonym list is a bug: regional language is a language-understanding problem, not a list-maintenance one. The engine reads meaning and reads region. Nobody hand-types a per-market dictionary.
The trainers-and-sneakers case isn't ours to invent. Our user intent processing docs use it directly: a UK shopper searching "trainers" sees athletic shoes, while the same search from a US shopper expands to include "sneakers."
The cost of getting it wrong is well-documented too. Baymard's search research, drawn from 25 rounds of moderated testing across 4,400+ sessions, surfaced more than 700 search-specific usability issues on multi-million-dollar sites. Query language a store can't parse is a recurring one.
Shoppers don't retry with the industry term. They assume you don't carry the product and leave. A per-market list is the slow, manual answer to that, while reading the language covers it by default.
Regions also bring different query shapes. Baymard catalogs eight distinct query types, and notes that shoppers "rely on a wide range of linguistic shortcuts when they search." A hand-built dictionary can't keep up with that surface. Reading the language can.
The documented mechanics that do this work, from user intent processing:
- Query expansion. Synonyms, related terms, and alternative phrasings, weighted by relevance. "Sneakers" reaches "athletic shoes" and "trainers"; "couch" reaches "sofa" and "loveseat."
- Abbreviation normalization. Handled during typo correction, so "lbd" resolves to "little black dress" and "pjs" to "pajamas."
- Regional language variants. Location context shapes interpretation, including regional spelling. This is where the trainers-and-sneakers split gets resolved automatically.
- Multilingual mode. Queries and products in multiple languages, set by your catalog and customer base.
One honest boundary, the same one we drew for synonyms: this is not "zero configuration ever." Search Instructions still let you steer merchandising in plain English when you want to. The point is you do not hand-maintain a per-market term dictionary.
But our markets really do use different words, you might say. Yes, and the engine handles that through meaning and region.
You only hand-write a term when it expresses a business decision the engine could not infer: a brand-coined name, a region-specific redirect, a compliance term. That's merchandising, a deliberate choice. It is never a gap-filler for language the engine should already read.
How do you set a different sort order or rules per market?
Per-market merchandising on Shopify Plus runs through two levers. Conditional sort expressions make one sort order behave differently by country, with a fallback for other regions. Contextual conditions scope merchandising rules to a Shopify Market by handle, market ID, or country. Together they let one configuration serve every market without a separate setup per region.
This is where multi-market merchandising actually happens, and it's the most actionable part of the whole post.
Conditional sort expressions. One sort order, different behavior per region. An expression activates when geo.country matches, with a fallback expression for everyone else. The documented pattern reads like "sort by price descending if geo.country = US, price ascending if geo.country = CA, title ascending as the fallback." You maintain one sort order, not a separate one per market.
Segmented metrics. A step further. They select the most relevant metric value per visitor context, with a smoothing factor that blends local performance against global. The default is 50, and lower values (roughly 1 to 50) favor local performance while higher values favor global stability.
This is the lever for the product that sells well in one market and quietly underperforms in another.
Contextual conditions. These scope a merchandising rule to a market. A rule can target:
- A specific Shopify Market by handle (the docs example targets the market handle "ca").
- A market by ID, or by its market countries.
- Country or region directly, alongside device, channel, UTM, and customer attributes.
Operators are case-insensitive on string matching, so you don't fight capitalization. Per-market pinning and geo-targeting come from available_market_ids exposed as a filterable attribute, combined with these conditions.
If you want different curation in Canada than in the US, this is the surface that does it. For the full picture of what these rules can drive, our Merchandising product is the place to start.
Can search route results to local-fulfillment SKUs?
The search layer can surface what is available and in stock for a market: Strict mode filters to products published to that market, the Inventory signal ranks in-stock products higher, and location-based sell-out detection respects your fulfillment locations. It does not route results to a specific local-fulfillment SKU. True fulfillment routing is a Shopify inventory and fulfillment decision, not a search feature.
The tail question imagines a search engine routing results to whatever ships from the nearest hub. The honest, docs-grounded answer is narrower, and still useful. What the search layer does today:
- Availability filtering. In Strict mode, products not published to the market are hidden, so shoppers don't see what they can't buy there.
- The Inventory signal group. In-stock status factors into ranking, so in-stock products rank ahead of out-of-stock ones.
- Location-based sell-out detection. With Sell Out Check Locations, a product counts as sold out only when it's out of stock across your selected fulfillment locations, which keeps pinned products honest against your real footprint.
What the search layer does not do, per the docs: route a result to a specific local-fulfillment SKU. The context payload carries no inventory or fulfillment-location fields, so search has nothing to route on.
Fulfillment routing lives in Shopify's inventory and fulfillment configuration, not in search ranking. Anyone who tells you their search engine "routes to your nearest warehouse" is either describing Shopify's fulfillment logic or overselling.
We'd rather you trust this page because we drew the line here than have you discover it after a migration.
How do you run one configuration across many markets?
The efficient pattern is one configuration that adapts per market, not a separate build per region. Let Markets resolve price, currency, and availability. Let the engine handle regional language. Scope sort orders and merchandising rules by country or market with conditional expressions and contextual conditions. Then make results inventory-aware for your actual fulfillment footprint.
Pulled together, the operating model is five steps:
- Confirm what's automatic. Markets sync on, mode set to Pricing Only or Strict, so price, currency, and availability resolve per market without you touching them.
- Localize language at the engine, not in a list. Rely on semantic understanding plus location context for regional terms. Add a manual term only as a deliberate decision.
- Scope sort by region. One sort order with conditional expressions keyed to
geo.country, plus segmented metrics where local performance diverges from global. - Scope merchandising rules by market. Contextual conditions on market handle, ID, or country, for the regions that actually need different curation.
- Make results inventory-aware per footprint. Strict-mode availability, the Inventory signal, and Sell Out Check Locations set to your real fulfillment locations.
One configuration, many markets. You set it up once, and it adapts on its own as shoppers arrive from different countries. That's the difference between Merchandising you maintain per region and merchandising that scales with your expansion.
How do you QA search across every market in one afternoon?
For each market you sell into, run the same set of checks and record pass or fail in a grid. Five dimensions: currency, availability, language, sort, and in-stock. Any "fail" cell is a market that is translated but not merchandised. The grid takes an afternoon and tells you exactly which regions are inheriting home-market discovery by accident.
A dashboard won't catch this. The merchandising looks configured because the home market is configured, and the other markets quietly inherit it. The only reliable check is searching the store the way a shopper in each region would.
So you search like a UK shopper, then a Canadian one, then an Australian one. Same queries, different market context, and you watch what each one actually gets back.
The five checks, one column each:
- Currency. Does the resolved price and currency display correctly for the market?
- Availability. Do products unpublished to the market correctly disappear in Strict mode?
- Language. Do regional terms like "trainers" return the right products in that region?
- Sort. Does the collection sort match the intent you set for that market, or is it silently the home-market order?
- In-stock. Do out-of-stock items rank below in-stock, and does sell-out respect your fulfillment locations?
Starter checks, adapt to your catalog:
- Run your top 10 queries from each market.
- Run one regional-language query per market.
- Spot-check a high-traffic collection's sort order per market.
- Pull the market-resolved price on three best-sellers.
- Confirm a market-excluded product is hidden in Strict mode.
Every "fail" cell is a vote to configure that market deliberately instead of letting it inherit the home market.
Run the grid on your markets. Then book a demo and we'll run the same checks live against your catalog, market by market.
Translation changes the words. Merchandising changes what shoppers find. Markets gives you the first for free; the second is a configuration, and the per-market grid tells you exactly which markets are still waiting for it. Run the grid. The fails are your roadmap.
FAQs
1. Does Shopify Markets change my search results per region? Not on its own. Shopify Markets localizes price, currency, and product availability per region. It does not change what your search ranks, how your collections sort, or your merchandising rules. Those stay shared across every market unless you configure them per region with conditional sort expressions and contextual conditions.
2. How do I show different search results per Shopify Markets region? Scope your merchandising to the market. Use conditional sort expressions keyed to the shopper's country so one sort order behaves differently per region, and use contextual conditions to target a Shopify Market by handle, ID, or country. Price, currency, and availability already resolve automatically once Markets sync is on.
3. How do I price-filter or sort across currencies on Shopify? Showing the correct currency and price is automatic once Markets sync is on. For sort, use conditional sort expressions keyed to geo.country, since price logic operates on the market-resolved price. A cross-currency price facet and a per-market price-tier boost are not documented features, so treat per-market price logic as a sort-and-filter decision.
4. How do I localize synonyms per market on Shopify? You don't maintain a per-market synonym list. Regional language like "trainers" in the UK and "sneakers" in the US is handled by semantic understanding plus location context, which reads meaning and applies regional variants automatically. Reserve manual terms for deliberate decisions, like brand-coined names or region-specific redirects, not for language the engine already understands.
5. How do I make search results market-aware for inventory and availability? Use Strict mode to filter the catalog to products published to that market, the Inventory signal group to rank in-stock products higher, and location-based sell-out detection so a product counts as sold out only when it's out of stock across your selected fulfillment locations.
6. Can I set a different sort order per Shopify Market? Yes. Conditional sort expressions let one sort order behave differently by country, activating when geo.country matches with a fallback for other regions. Segmented metrics go further, selecting the most relevant metric value per visitor context with a smoothing factor that defaults to 50 and blends local against global performance.
7. Can search route results to local-fulfillment SKUs on Shopify? No. The search layer surfaces what's available and in stock per market through Strict-mode availability filtering, the Inventory signal, and location-based sell-out detection. It does not route a result to a specific local-fulfillment SKU. The context payload carries no fulfillment-location fields. True fulfillment routing is a Shopify inventory and fulfillment decision, not a search feature.
Jake Casto · Founder, Layers
Jake Casto is the founder of Layers, the enterprise search and merchandising platform built for Shopify Plus. He previously co-founded Proton, a Shopify Plus engineering studio that shipped more than 400 storefronts, where Layers began as an internal tool for a problem that kept repeating. He writes about search infrastructure, performance, and the engineering behind discovery at scale.
Connect on LinkedIn