# Shopify Markets to multi-currency feeds

Selling into several markets means one feed per market, not one feed with several currencies. Each needs its own prices, its own currency, its own product URLs and its own tax treatment, and all four come from the market configuration rather than from the product.

- **Canonical URL:** https://www.feedlab.io/knowledge/mappings/shopify-markets-to-multi-currency-feeds
- **Last reviewed:** 18 September 2026
- **Source:** feedlab knowledge base
- **Licence:** free to quote and cite with attribution to feedlab


## The Shopify side

| Property | Value |
| --- | --- |
| API field | `market.webPresence + priceList` |
| Called | Markets, with their domains and price lists |
| Found at | Settings → Markets, where each market has its own domain or path, currency and price adjustments |
| Feeds | `price`, `link` |


## Before and after

| In Shopify | In the feed | Note |
| --- | --- | --- |
| `UK market, price 49.00` | `price 49.00 GBP, link example.com` | The primary market feed. |
| `DE market, price list 56.00` | `price 56.00 EUR, link example.de` | The market price, not a conversion of 49.00. |
| `DE market, VAT inclusive` | `56.00 EUR including VAT` | Tax treatment follows the market, not the store. |
| `US market, tax excluded` | `price 59.00 USD, tax handled separately` | The opposite convention from the same product. |
| `product not available in DE` | `(excluded from the German feed)` | Market catalogue restrictions have to reach the feed. |



## The transformation, step by step

1. **Generate one feed per market, not one feed for all of them** — Every channel documented here expects a feed to describe one market. A single file carrying several currencies is not a supported shape anywhere, and the channel will read one of them and be wrong about the rest.
2. **Read the market price rather than converting** — A market can have a price list with its own prices, percentage adjustments and rounding rules. Converting the store price at a live rate produces a number the storefront does not charge, which is a landing-page mismatch on every row.
3. **Build URLs from the market's own domain or path** — Markets are served on their own domain or a path prefix. Sending the primary domain to every market means shoppers are redirected, or worse, arrive on a page priced in a currency they cannot pay in.
4. **Apply the market's tax convention** — Whether the submitted price includes tax is a property of the market. One catalogue therefore produces a VAT-inclusive German feed and a tax-exclusive US feed from the same underlying price, which is a per-feed setting rather than a per-product one.
5. **Include only what the market actually sells** — Markets can restrict catalogue availability, so a product sold in the UK may not be purchasable in Germany. Feeding it into the German channel advertises something a shopper there cannot buy.



## What goes wrong

### Converted prices do not match the storefront

Market price lists apply adjustments and rounding, so a converted price is almost never the price the customer is shown. It is the most common multi-market feed error and it produces a price mismatch on every product rather than on a few.

### One feed with several currencies is not a feed

It is a tempting shape because the data is all there, and no channel supports it. The file uploads, the channel reads one currency, and the prices for every other market are wrong in a way that looks like a pricing error rather than a structural one.

### Market URLs are easy to forget

Prices get localised and URLs do not, because the price is obviously per market and the URL feels universal. A shopper then lands on a page in the wrong currency, which fails both the shopper and the landing-page check.

### The number of feeds multiplies

Four markets and four channels is sixteen feeds, each needing generation, scheduling and monitoring. That is a pipeline problem rather than a mapping one, and it is the point where hand-maintained feeds stop being viable.




## How feedlab maps it

feedlab treats the market as part of the feed definition: each generated feed carries its market's price list, currency, domain, tax convention and catalogue availability, from one shared set of mapping rules. Adding a market produces a new feed per channel rather than a new set of rules to maintain.






## Frequently asked questions

### Can one feed cover several currencies?

No. Every channel expects a feed to describe one market. A file carrying several currencies will be read as one of them, making the prices wrong for every other market.

### Should I convert my prices for other markets?

No. Read the market price list. Shopify Markets applies its own adjustments and rounding, so a live conversion produces a price your storefront does not charge.

### Do market feeds need different product URLs?

Yes. Each market is served on its own domain or path prefix, and sending the primary domain means shoppers are redirected or land on a page in the wrong currency.

### How many feeds does a multi-market store need?

One per market per channel. Four markets across four channels is sixteen feeds, which is the point at which generation and monitoring matter more than the mapping itself.




## Primary sources

- [Shopify: Markets](https://shopify.dev/docs/apps/build/markets)
- [Google: price attribute specification](https://support.google.com/merchants/answer/6324371)



