You've set up a French version, a Canadian version, maybe a German storefront too, all running through Shopify Markets or a translation app. Then Google keeps showing shoppers in Berlin the English-language page, or worse, treats your regional pages as duplicate content and buries all of them. The pages exist. Search engines just don't know how they relate to each other.
That's exactly what hreflang solves, and it's more relevant on Shopify than almost any other platform, since Shopify's own approach to international selling — Markets, domains, subfolders, translation apps — changes how and where the tag actually needs to live.
Hreflang on Shopify is added either automatically, by Shopify Markets when a store uses separate URLs per market, or manually, by editing theme.liquid or configuring a translation app's SEO settings. Each market page needs a full set of hreflang tags — one per language/region combination, plus a self-reference and an x-default fallback — and the setup should always be checked with Search Console or a dedicated testing tool.
What is hreflang, and why does Shopify complicate it?
Hreflang is an HTML attribute that tells search engines which language and, optionally, which country a page is meant for, and which other URLs are alternate versions of that same page for different audiences. It doesn't translate anything or redirect anyone — it's a signal, not a mechanism.
- Shopify has more than one way to "go international." A store might use Shopify Markets with country-specific subfolders or domains, a third-party translation app layered on top, or a single domain serving multiple currencies without separate URLs at all — and hreflang only applies where distinct URLs actually exist.
- Markets can auto-generate hreflang, but only under the right conditions. If every market has its own URL structure, Shopify handles the tag generation. If markets share the same URL and only swap currency or content dynamically, there's nothing for hreflang to point to.
- Apps add a second layer. Translation and localization apps often create their own locale URLs and are responsible for their own hreflang output, which may or may not overlap cleanly with what Shopify Markets generates.
- The core rule doesn't change. Every version of a page needs to list every other version, including itself, and a shared x-default should point somewhere sensible for unmatched visitors.
The technical concept is simple. The Shopify-specific part is figuring out which layer of your setup — Markets, app, or theme — is actually responsible for producing the tags.
Why hreflang matters for Shopify stores specifically
Ecommerce stores selling across borders run into problems that content sites don't, and Shopify's structure makes hreflang more, not less, important:
- Product pages repeat almost verbatim across markets. A German subfolder and a UK subfolder often share nearly identical product descriptions, which without hreflang reads to search engines as duplicate content competing against itself.
- Currency and shipping differences make the wrong version costly. A shopper landing on a USD listing when they're in the Eurozone sees confusing pricing before they even reach checkout, hurting conversion on top of SEO.
- Markets expansion happens gradually. Stores often add one country at a time, and each new market needs its hreflang set updated to include the new URL — an easy step to forget mid-rollout.
- Search visibility per country is the whole point of expanding. Correct hreflang is what lets a French page actually rank for French searchers instead of the original domain outranking it everywhere.
Step-by-step: adding hreflang to a Shopify store
- Confirm how your markets are structured. Check Shopify admin under Settings → Markets to see whether each market has its own subfolder, subdomain, or domain, since hreflang only makes sense where URLs actually differ.
-
Check whether Shopify is already generating hreflang. View the page source of a live market URL and search for
hreflangin the<head>— if Markets is using domain-based or subfolder-based URLs, the tags are frequently already there. - If tags are missing, decide where to add them. For most themes this means editing theme.liquid directly; for stores using a translation app, check the app's own SEO or hreflang settings first, since it may already own this part of the head section.
-
List every market and its correct locale code. Match each market to an ISO language code, adding a region code where the market is country-specific, such as
en-gbfor the UK market versus a plainenfor a language-only market. -
Build the full alternate set for each page. Every page needs a link to every other version of itself, including a self-referencing tag for its own URL, plus one
x-defaultentry pointing to the fallback version. -
Add the tags to the head section. Whether pasted into theme.liquid or configured through an app, the tags must render inside
<head>on every relevant page template, not just the homepage. - Validate every market URL. Run each live market page through Search Console's International Targeting report or a hreflang testing tool to confirm all tags are present, reciprocal, and using valid locale codes.
Common hreflang mistakes on Shopify
1. Forgetting the self-referencing tag
Every market page needs to include a hreflang entry pointing back to itself, not just links to the other markets — leaving it out is one of the most frequent errors Search Console flags on multi-market Shopify stores.
2. Mixing up language-only and region-specific codes
Using en-en instead of the correct en, or applying a country code
to a market that's actually language-only, produces invalid pairs that search engines
simply ignore.
3. Letting Markets and an app both try to own hreflang
When a translation app and Shopify Markets both attempt to inject hreflang into the same page, the result is often duplicate or conflicting tags — one of the two should be the single source of truth.
4. Adding a new market without updating existing pages
Hreflang is reciprocal by design — every existing market's tag set needs to be updated to reference a newly added market, not just the new market's own pages.
Real-world examples
How different Shopify setups end up handling hreflang in practice:
The common thread: hreflang only has work to do once distinct URLs exist for distinct audiences — the setup path just depends on what's generating those URLs.
Shopify hreflang methods compared
A look at the main ways hreflang gets implemented across different Shopify setups.
| Method | Setup effort | Automation | Best for |
|---|---|---|---|
| Shopify Markets (subfolders/domains) | Low, built into Markets | Mostly automatic | Stores using Shopify's native international setup |
| Translation/localization app | Moderate, app config needed | Depends on the app | Stores adding languages without full Markets rollout |
| Manual theme.liquid edit | High, needs careful editing | Fully manual | Custom setups Markets and apps don't fully cover |
| Hreflang generator tool | Low, form-based output | Manual paste, no ongoing sync | Building or double-checking a tag set quickly |
Generate your hreflang tags right now — free
The Rebrixe Hreflang Generator builds a complete, reciprocal set of hreflang links for every market and locale you enter, including a correctly placed x-default — ready to paste into theme.liquid or hand to whoever manages your Shopify theme.