Quick answer: hreflang tags tell Google which language or region version of a page to show which users, so your English, French, and German versions don’t compete with each other or get served to the wrong audience. On Shopify, Markets generates hreflang automatically for published language and region URLs — you rarely hand-write them. The failures that matter are missing return tags (hreflang must be reciprocal), wrong or invented region codes, and pointing at unpublished or redirecting locales. Verify the rendered tags, not your intent.

If you have turned on a second language or a country-specific market in Shopify, hreflang is what keeps the versions from cannibalizing each other in search. Get it right and Google shows the French page to French users and the US page to US users; get it wrong and it shows the wrong one, or picks one version and buries the rest.

What hreflang actually does

An hreflang annotation is a small tag — <link rel="alternate" hreflang="fr-ca" href="..."> — that says "this URL is the French-Canadian version of this page." A page lists one for every language/region variant it has, including itself, plus an x-default for everyone who matches nothing specific. Google reads the cluster and routes each searcher to the right version instead of guessing.

The single rule that trips people up is reciprocity: every page in a cluster must link to every other page in the cluster, including back to itself. If the English page points to the French page but the French page does not point back, Google treats the annotation as untrusted and ignores it.

How Shopify handles it

With Shopify Markets, when you publish a language or a region, Shopify adds the hreflang annotations for those URLs for you. This covers the common case well — you do not write the tags by hand. Where gaps appear: a locale that is translated but not published, a market that shares a URL with another instead of having its own, or hreflang added by a translation app that does not match what Markets emits. Any of those can produce a broken or incomplete cluster.

The three mistakes that break it

  1. Missing return tags. The reciprocity rule above. Most "hreflang not working" cases are this.
  2. Wrong codes. The value is a language (ISO-639: en, fr, de) optionally plus a region (ISO-3166: en-gb, fr-ca). Invented values like en-uk (it is en-gb) are silently dropped.
  3. Pointing at bad URLs. An hreflang that targets a page which redirects, 404s, or is noindexed poisons the cluster. Every listed URL should return 200 and be indexable.

How to verify

View source on a translated page and confirm the hreflang links render with valid codes and absolute URLs. Spot-check that each listed URL returns 200 and lists the others back. Google Search Console’s International Targeting report surfaces missing-return-tag and invalid-code errors across your store. Fix the reciprocity and code errors first — they account for most real-world hreflang failures, and they are the ones that silently waste your translation work.