← Back to blog
6 min readBy Feedyio

Multi-currency, multi-country Google feeds with Shopify Markets (without the currency-mismatch errors)

You expanded into a few more countries with Shopify Markets, pointed your Google feed at them, and now Merchant Center is throwing currency-mismatch or price-mismatch disapprovals you can't reproduce when you check the product page yourself. This is one of the most common cross-border feed problems, and it almost always comes down to one thing: the currency Google's crawler sees on your landing page doesn't match the currency in your feed.

This guide explains how Shopify Markets handles currency and language, what Google actually expects from a multi-country feed, why IP-based currency switching breaks it, and how to set up one feed per target market so country, language and currency always line up.

How Shopify Markets handles currency and language

Shopify Markets lets you group countries into markets and configure each one independently: which currency the customer pays in, which languages are available, and how prices are set (rounded, manually adjusted, or auto-converted at the daily rate). A customer in Germany sees euros and German; a customer in Poland sees złoty and Polish - all from the same catalog.

The target country and language for your Google feed come from this Markets configuration. That's the foundation: get your markets, their currencies and their localized prices right in Shopify first, because everything downstream inherits from them.

One Shopify-specific requirement worth flagging early: when you sync through Shopify's Google & YouTube channel, your product options and variant names must be in English for the sync to work, even though the storefront content can be localized. (VERIFY against the current Shopify requirements page before you rely on it for a specific store.)

How Google expects multi-country feeds: country + language + currency must agree

Google Merchant Center treats a feed as targeting a specific country and a specific feed language. For that combination to be valid, three things have to be consistent:

  • The target country must be one Google supports for Shopping, and you must actually ship there.
  • The currency in the feed must be a currency accepted for that country - and it must match the currency a customer sees on the product page in that market.
  • The feed language must be one of Google's supported feed languages for that country, and ideally match the language of the landing page.

Google will auto-convert the displayed price into a shopper's local currency in some surfaces, but that's a display convenience - it does not excuse a mismatch. The rule that bites people is simpler: the currency on the product page must match the currency in the feed. If your feed says a product costs 49.00 EUR but the page Google crawls renders $53.00 USD, that's a mismatch, and it gets disapproved.

The classic failure: IP-based currency switching and the crawler

Here's the trap that catches cross-border stores. Many shops (or themes/apps) auto-switch the displayed currency based on the visitor's IP address. A German visitor lands and sees euros; a US visitor sees dollars. Convenient for humans - but Google's crawler usually fetches your pages from a US IP.

So the sequence goes:

  • Your German feed correctly lists price: 49.00 EUR.
  • Google crawls the German landing page to verify it.
  • Because the crawler comes from a US IP, your auto-switcher renders the page in USD.
  • Google compares feed (EUR) against page (USD) and flags an "inappropriate currency" / currency-mismatch error.

You'll never see this by opening the page yourself from inside the target country - which is exactly why it's so frustrating to debug.

The contrast is straightforward:

  • Auto-switch currency by visitor IP → crawler sees USD → feed says EUR → disapproved
  • Fixed currency per market URL → crawler sees EUR → feed says EUR → approved

The fix is to stop letting IP decide the currency for the page Google crawls. Instead of silently auto-switching, use a geolocation prompt ("It looks like you're in the US - switch to USD?") that suggests a market without forcing the price to change before the shopper chooses. A correctly configured Shopify Markets setup, where each market has its own localized prices and its own URL, removes the ambiguity. (VERIFY: the IP-crawler mechanism is well documented by practitioners but Google does not publish crawler IP ranges as a guarantee - treat it as the most likely cause, not a certainty, when you diagnose a specific disapproval.)

One feed per target market - and matching landing pages

The reliable structure for multi-country selling is one feed per market/target country, each pointing at landing pages that are fixed to that market's currency and language. Don't try to serve every country from a single feed and hope Google sorts out the conversions.

For each market you want to advertise in:

  1. Create a dedicated feed with that country as the target country.
  2. Set the feed currency to the currency that market actually charges in Shopify Markets.
  3. Point each item's link at a landing page that renders in that same currency regardless of who (or what) is visiting - i.e. a market-specific URL, not an IP-switched one.
  4. Match the feed language to the landing page language for that market.

If Shopify Markets gives you localized URLs (for example a country/language prefix), use those URLs in the feed so the crawler always lands on the right localized, fixed-currency version. The goal is that the page Google fetches is identical in currency and language to what the feed claims - no negotiation, no IP guessing.

Language requirements and the supported-language list

Currency gets the headlines, but language causes its own quieter set of problems. Each Google feed has a declared feed language, and it needs to be a language Google supports for that country and that matches your landing pages.

Google supports a broad list of feed languages, including the ones most cross-border European stores need - Czech, Slovak, Polish, Hungarian, Romanian, German, French and many more. (VERIFY the exact current list against Google's supported-language documentation before you commit a market, because availability per country does change.)

Two practical rules:

  • If a market sells in a language Google doesn't support for feeds in that country, you may need to fall back to a supported language for the feed text while keeping the storefront localized.
  • Keep titles and descriptions in the feed in the same language as the landing page. A Czech feed pointing at a German page is a mismatch even when the currency is fine.

How Feedyio builds per-market feeds from Shopify Markets

Feedyio reads your Shopify Markets configuration and generates a separate, correctly-targeted feed for each market - with the right currency, the right feed language, and links pointing at the matching localized landing pages, so the country/language/currency triplet stays consistent and you avoid the IP-switching trap. Prices and stock sync hourly, so a currency or price change in a market propagates to the feed before Google re-crawls and flags it.

If you're setting up cross-border Shopping, start with a clean Google Merchant Center feed and check which of your target countries are supported. Then point one feed at each market and let the alignment take care of itself.

Selling in multiple currencies and tired of currency-mismatch disapprovals? Try Feedyio free on the Shopify App Store.