ProductHow it worksDocsBlogPricingGet Framer Plugin
← Blog

Shopify Markets on a Framer Storefront: Currency and Localization

Shopify Markets works on a Framer storefront, and the division of labour is clean: prices, currencies, tax treatment and product availability come from Markets through the Storefront API, while Framer Localization handles translated page copy and locale routing. Markets owns the money and what is sellable. Framer owns the words. Every integration failure in a multi-market Framer build traces back to one of those two halves being asked to do the other's job.

Shopify Markets is a built-in admin feature that groups customers by location, customer group, retail location or sales channel, then tailors currency, pricing, catalog, taxes, language and domains for each group from a single store. On a Liquid theme, the theme reads that context automatically. On Framer, nothing is automatic — context has to be passed deliberately on every query.

What Shopify Markets controls on a Framer storefront

Here is the split, responsibility by responsibility. This is the table the Liquid-centric guides never write, because on a theme the boundary is invisible.

Responsibility Owner How it reaches Framer What a plugin must pass through
Currency + FX Shopify Markets @inContext(country: DE) on every price query Country code on all product, collection and cart queries
Product prices Shopify Markets Market catalog price lists Never cache prices across country contexts
Tax + duties Shopify Markets Calculated at checkout, not in the API Nothing — hand off to checkoutUrl untouched
Product availability Shopify Markets Unpublished products filtered out by context The same country code, or the catalog silently differs
Product copy (title, description, options) Shopify (translations) @inContext(language: ES) Language code alongside country
Page copy, headings, CMS, SEO meta Framer Localization Framer locales Locale → country/language mapping
Domains + subpaths Both (must agree) Framer locale routing, Markets domains Consistent locale-to-market mapping

Two rows carry most of the risk. Currency and product availability are decided by the same country argument, so a plugin that forgets it on one query — a related-products shelf, a search result, a quick-add drawer — shows German visitors US prices for products they cannot buy. And because tax and duties are computed at checkout rather than returned by the API, any attempt to display a landed total on the Framer side is a guess.

Shopify's own documentation is blunt about the failure mode when a currency is not enabled:

Any queries for countries that aren't enabled will default to the store currency.

That is a silent fallback, not an error. The page renders, the price is simply wrong.

How market context travels through the Storefront API

The mechanism is one GraphQL directive. @inContext accepts a country argument, a language argument, or both, and it contextualizes whatever query it is attached to. International pricing requires Storefront API version 2022-07 or later, and multilingual content requires 2022-04 or later — both comfortably old, so version is rarely the blocker. Discipline is.

Carts work differently, and this is the step most Framer integrations get wrong. A cart's context is not set by @inContext; it is set by buyerIdentity.countryCode on cartCreate, which both contextualizes the estimated cost and confirms the products are published for that country. Miss it and the cart quietly reverts to the store's primary market even though every product page was correct. If you are auditing an existing build, the 2026-07 Storefront API changes are worth reading alongside this.

On the app side, the ground moved recently. Apps touching the Markets or Catalogs APIs must run API version 2025-04 or later to be compatible with the new Markets, which also lifted the old 50-market ceiling for Global-e merchants. A Framer plugin pinned to an older version does not fail loudly — it returns a compatibility warning in the admin and stale market data to your site.

How many countries is Shopify in?

Shopify does not publish a single market-coverage number, and the figures circulating in roundups are not sourced to Shopify. What is documented is narrower and more useful: local-currency selling depends on your payment processor, not on a country list. Shopify Payments or Adyen is required to present and charge in a customer's local currency, and where a local currency is unsupported, customers see the market's base currency instead.

Managed Markets — the service formerly sold as Markets Pro — is tighter still. It is available to businesses based in the continental United States plus certain Canadian and UK stores, with Global-e acting as merchant of record for duties, tax remittance and customs. So the honest answer for a Framer build: check currency support per market in payment settings before promising a client a market list, because the Storefront API will happily serve a country your checkout cannot charge.

What is the downside of using Shopify?

For multi-market Framer storefronts specifically, three limits bite.

Cost scales with cross-border volume. Managed Markets charges a 3.25% transaction fee on Shopify Plus and 3.5% on Basic, Grow and Advanced, on top of FX and payment processing. Adaptive pricing, launched 3 March 2026, guarantees the exchange rate for one week and derives international prices from domestic ones — predictable, but the fee stays.

Reporting stays in one currency. Shopify reports can only be viewed in the store currency, and selling in multiple currencies across countries requires multiple business entities, available only on Plus and Enterprise Commerce.

Translation is split across two systems. Framer Localization covers 238 languages and regional variants, but only for content stored in Framer. Shopify product translations are created separately through the Admin API and requested with a language context. Two systems, two workflows, and a mapping table you maintain by hand. If your catalog also pushes against Framer CMS field limits, that mapping gets heavier fast.

Setting it up without silent breakage

Work in this order. Enable each target country's currency in payment settings first, because the API's default-to-store-currency fallback hides mistakes made later. Publish products per market and confirm the catalog from the Storefront API rather than the admin. Then create Framer locales and write the explicit locale → {country, language} map; do not infer country from language, because en spans the US, UK, Australia and more. Finally, pass that pair on every query, cart mutation included, and test with a country whose currency is deliberately disabled to confirm your fallback is visible rather than silent.

A sync layer like FramerLink matters here only in one respect: whether it propagates country and language context on every request it makes, or drops it on the queries nobody checks. That is the question to ask of any Framer-to-Shopify tool before a multi-market build, not how many products it syncs.

Frequently asked questions

What is Shopify Markets?

Shopify Markets is a built-in Shopify admin feature for managing cross-border sales, retail locations and B2B expansion from a single store. Each market sets its own currency, prices, product availability, taxes, languages and domains, so merchants customize regional experiences without duplicating the store.

Does Shopify Markets work with a Framer storefront?

Yes. Markets settings are exposed through the Storefront API, so a Framer site reads localized prices, currencies and product availability from Shopify by passing country and language context on every query. Framer Localization handles translated page copy and locale routing separately.

Does Framer Localization translate Shopify product data?

No. Framer Localization translates page copy, CMS fields and SEO metadata that live in Framer. Product titles, descriptions and option names are Shopify resources, so they must be translated in Shopify and requested with a language context on the Storefront API query.

Do I need Shopify Payments to show local currencies?

Yes for automatic local currency. Shopify requires Shopify Payments or Adyen to present and charge in a customer's local currency. Per-market product prices and percentage adjustments work on all plans without either, but orders through other providers process in your store's default currency.

Sources