Multilingual SEO

Hreflang on Shopify: The Complete Guide to International SEO Tags

Get hreflang wrong on your Shopify store and Google will serve your English product pages to French shoppers — silently, with no error in Search Console. Understanding exactly how hreflang on Shopify works, what the platform handles automatically, and where the gaps are is the difference between a multilingual store that ranks and one that cannibalizes itself.

What Hreflang Actually Does (and Doesn't Do)

Hreflang tags tell Google which version of a page to show users based on their language and region. They don't directly affect rankings — they affect which URL ranks for which audience. Without them, Google picks a "canonical" version of your content and may suppress your translated pages entirely.

Each tag follows this pattern:

<link rel="alternate" hreflang="fr" href="https://yourstore.com/fr/products/example" />

The tag sits in the <head> of every page. Critically, the relationship must be reciprocal: if your French page points to your English page, your English page must also point back to your French page. A one-way tag is treated as if it doesn't exist.

The hreflang value combines an ISO 639-1 language code (e.g. fr) with an optional ISO 3166-1 region code (e.g. fr-CH for French in Switzerland). You can use language-only tags when you're targeting all speakers of a language regardless of location.

How Shopify Generates Hreflang Tags Automatically

When you use Shopify Markets with native translated storefronts, Shopify handles hreflang injection without any theme edits. Here's what it does:

  • Adds <link rel="alternate"> tags to every translated page's <head> automatically
  • Uses subfolders (e.g. /fr/, /de/) or subdomains depending on your Market domain configuration
  • Generates per-market sitemap index files accessible via sitemap.xml — the exact file names within that index are controlled by Shopify and vary; do not assume a predictable naming convention like sitemap_fr.xml
  • Keeps tags in sync as you add or remove Markets

This is genuinely useful scaffolding. For most standard Online Store 2.0 themes using Shopify Markets, the structural hreflang implementation is handled correctly.

Where Shopify's Automatic Hreflang Falls Short

Automatic generation only gets you so far. Four real gaps affect merchant stores regularly:

1. The x-default Tag and Your Primary Market Domain

Shopify adds an x-default tag pointing to your primary market's domain or subfolder. The specific URL used is controlled by the Primary Market setting in Shopify Markets — whichever domain or subdomain you assign to your primary market becomes the x-default destination. If you change your primary market's domain without reviewing this setting, your x-default can point to the wrong URL.

Check: Settings → Markets → [Your Primary Market] → Domains. The URL shown there is what Google receives as x-default. It should point to your most broadly relevant storefront — typically your English or international-facing store — not a region-locked one.

2. Missing or Incomplete Translation Coverage

Shopify generates the hreflang tag for a language as soon as that language is enabled in Markets. It does not check whether the content is actually translated. A page with an hreflang="fr" tag but untranslated English body copy sends French users to an English page — and Google eventually figures this out, reducing trust in your hreflang signals.

This is where translation quality and completeness matter directly for SEO. If you're working through how to translate Shopify product descriptions without losing conversions or translating your Shopify collections, completing those translations is not just a UX task — it's what makes your hreflang tags valid in practice.

3. Translated SEO Meta Fields Are Often Skipped

Many merchants translate body content but leave <title> tags and meta descriptions in the original language. Google reads these during crawling and uses them as signals about the page's language. If your French product page has an English meta title, you're undermining the hreflang signal you worked to set up. Every language variant needs translated SEO meta fields — not just body copy.

4. Headless and Hydrogen Storefronts Break Native Generation

If you've moved to a headless architecture using Shopify's Hydrogen framework or a third-party headless frontend, Shopify's automatic hreflang injection does not apply. The tags are rendered by the Online Store theme layer — headless storefronts bypass this entirely. You're responsible for generating and injecting hreflang tags in your custom frontend, typically by querying the Storefront API for available locales and building the tag set server-side. This is a significant implementation gap that catches headless merchants off guard. If you're running headless, treat hreflang as a custom build requirement, not a platform feature.

How to Audit Your Shopify Hreflang Implementation

Don't assume Shopify's automatic output is correct — verify it.

Step 1: Check raw page source On any translated page, right-click → View Page Source and search for hreflang. Confirm:

  • Every active language has a corresponding tag
  • Your primary-language page is included in the set (self-referential alternate)
  • x-default is present and points to the right URL
  • Tags are reciprocal (spot-check by visiting a linked URL and verifying it points back)

Step 2: Validate with Merkle's hreflang testing tool Merkle's hreflang Tag Testing Tool crawls a URL and validates the full set of alternate tags — checking for missing reciprocals, incorrect language codes, and broken URLs. This is the correct tool for validation. Aleyda Solis's hreflang generator is a generation tool, not a validator; don't confuse the two.

Step 3: Check Google Search Console for hreflang errors In GSC, go to Index → Sitemaps to confirm your sitemap index is submitted and being read. For hreflang-specific errors, go to Search results and filter by country to see if unexpected URLs are appearing for markets you've translated. Dedicated hreflang error reporting in GSC is limited — the most reliable signal is whether your translated pages are getting impressions from the correct countries in the Performance report.

Step 4: Monitor for cannibalization If your English and French product pages are competing for the same queries in French-speaking markets, your hreflang tags aren't being read correctly. Use the Performance report filtered by country (e.g. France) to check which URLs are receiving impressions.

Keeping Hreflang Valid as Your Catalog Changes

Hreflang tags only remain valid if your translations stay current. Every time you update a product, the hreflang tag for that page's translated versions points to content that may now be out of sync. This is why change detection — automatically flagging updated content for re-translation — matters for international SEO, not just user experience. For a deeper look at this, see how to keep your Shopify translations in sync as your catalog changes.

StoreLingo detects changed content automatically and queues only the updated fields for re-translation, which means your translated pages stay current and your hreflang signals remain trustworthy. It also translates SEO meta fields alongside body content — closing the gap that leaves French pages with English title tags.

Add StoreLingo on the Shopify App Store →

For a broader look at how multilingual structure affects rankings across all your markets, the guide to Shopify multilingual SEO covers canonical tags, URL structure, and crawl budget alongside hreflang.

FAQ

Does Shopify automatically add hreflang tags when I enable a new language? Yes — when you add a language through Shopify Markets and use a standard Online Store theme, Shopify injects hreflang tags automatically into every page's <head>. However, this doesn't mean the tags are effective: if the translated content is incomplete or SEO meta fields aren't translated, Google may disregard the signals.

What language codes should I use in hreflang tags — language only, or language plus region? Use language-only codes (e.g. fr) when you're targeting all speakers of that language globally. Add a region code (e.g. fr-FR vs fr-CH) only when you have distinct storefronts with meaningfully different content — separate pricing, currency, or product availability — for those regions. Using too many region-specific tags without genuine content differences creates complexity without benefit.

Why are my translated Shopify pages not ranking in their target markets despite having hreflang tags? The most common causes are untranslated SEO meta fields (title and description still in the source language), missing reciprocal tags on one side of the language pair, and incomplete content translation that signals to Google the page isn't genuinely localized. Audit with Merkle's validation tool, confirm meta fields are translated, and verify the x-default tag points to your intended primary market URL in Shopify Markets settings.

Translate your store into 47 languages

StoreLingo translates products, collections, pages and articles with AI — review before publishing, keep your brand terms consistent.

Add to Shopify →