Skip to content
Store slow, dated, or hard to edit? Request a Store Diagnostic
Running B2B on spreadsheets or email? Plan Your B2B Project
SEO

Hreflang on Shopify Markets: A Practical Setup Guide for Multi-Region Stores

Shopify Markets makes it straightforward to sell into multiple countries from one store, different currencies, localised pricing, region-specific domains or subfolders, translated content. What it doesn’t do automatically is guarantee that Google understands the relationship between all those regional versions of your pages. That’s hreflang’s job, and it’s one of the more commonly misconfigured pieces of international Shopify SEO.

Get hreflang wrong and the practical result is usually one of two things: Google shows Australian shoppers your US pricing and product pages in search results, or your regional pages end up quietly competing against each other instead of reinforcing one another. Neither is catastrophic on its own, but both leak traffic and conversions you’ve already paid to localise for.

This guide walks through how Shopify Markets structures international URLs, what Shopify generates automatically versus what you still need to configure or check yourself, the mistakes that come up most often, and a step-by-step checklist to verify your setup is actually working.

How Shopify Markets structures international URLs

Shopify Markets supports a few different URL approaches depending on your plan and setup, and the option you choose directly affects how hreflang needs to be configured:

  • Subfolders on your primary domain, for example yourstore.com/en-au/ for Australia and yourstore.com/en-us/ for the US. This is the most common setup and is available on standard Shopify plans through Markets’ domain and language configuration.
  • Root domain with market-based content switching, a single URL structure where Shopify serves different currency, pricing, and (if translated) language content based on the visitor’s detected market, without a distinct subfolder per region. This is simpler to set up but gives you less explicit URL-level signalling for search engines.
  • Separate country-code domains or subdomains (for example yourstore.com.au alongside yourstore.com, or au.yourstore.com), generally associated with Shopify Plus, where merchants run genuinely separate top-level domains or subdomains per major market and connect them under one Markets setup.

Which structure you’re on matters because hreflang works by pointing between distinct, crawlable URLs. If two markets don’t actually have separate URLs, if Shopify is only swapping currency and price display for the same URL based on geolocation, with no subfolder or domain distinction, there’s nothing distinct for hreflang to point between for that pair of markets. Hreflang is only meaningful where you have genuinely separate indexable URLs per market or language.

What Shopify auto-generates vs what you still need to check

This is where most of the confusion sits. Shopify Markets does a reasonable amount of hreflang work automatically once you’ve set up subfolders or domains for your markets, but “automatic” doesn’t mean “correct for every store” or “complete.”

What Shopify typically handles for you:
– Once markets are configured with distinct URL structures (subfolders or domains) and language settings, Shopify generally outputs hreflang annotations linking equivalent pages across those markets in the page <head> or via HTTP headers.
– Currency and, where translations are set up, language content per market are handled through Shopify’s native Markets and Translate & Adapt (or equivalent language) features without custom code.

What still needs merchant attention:
x-default. Shopify’s automatic hreflang output doesn’t reliably cover every store’s intended x-default behaviour out of the box, and this is the single most commonly missing piece we see in Shopify Markets hreflang setups. You need to deliberately decide which URL serves as the fallback for visitors whose language/region doesn’t match any of your configured markets, and confirm it’s actually present in the tag set.
Non-translated markets. If you’ve added a market for pricing/currency purposes only, without translating content, the hreflang relationship between that market and your other markets can end up ambiguous, the URLs may be near-duplicate content in the same language rather than genuinely distinct localised pages, which changes how hreflang should be applied.
Custom domains added outside standard Markets flow. If a domain was connected in a way that sits outside Shopify’s expected Markets configuration (common on stores that migrated domains or had custom development work done), hreflang generation for that market can be incomplete or missing entirely.
Pages outside the standard theme templates. Landing pages, custom-coded sections, or apps that inject their own content don’t automatically inherit Shopify’s Markets hreflang handling if they weren’t built with Markets in mind.
Verifying the output is actually correct, not just present. Shopify generating hreflang tags doesn’t guarantee every tag points to a genuinely equivalent, live, indexable URL, broken or mismatched pairs are common enough to be worth checking directly rather than assuming.

In short: Shopify Markets gives you the infrastructure and does a meaningful amount of the technical implementation, but it’s not a “set and forget” feature for hreflang specifically. Someone still needs to check the output.

Common hreflang mistakes on Shopify Markets

Missing x-default. Without an x-default tag, Google has no defined fallback for search users whose language or region doesn’t match any of your specific hreflang entries. This usually isn’t catastrophic, but it’s a gap that’s easy to close and often gets missed because it’s not always something Shopify configures automatically per store.

Mismatched language-region codes. Hreflang uses ISO language codes (like en) optionally paired with ISO region codes (like AU), written as en-au. A surprisingly common error is inconsistency, one page using en-AU and a linked equivalent using en-au-2 or an invalid region code, or applying a region code where a language-only code was intended (using en-au for a market that’s actually just “English” content with no region-specific differentiation). Invalid or inconsistent codes mean Google may simply ignore that hreflang pair.

Conflicting canonical and hreflang signals. This is a subtle but serious one. If your Australian page (/en-au/products/widget) has a canonical tag pointing to your US page (/en-us/products/widget), which can happen if canonical tags were set up carelessly, copied from a single-market setup, or misconfigured by an app, you’re sending Google contradictory instructions: the hreflang says “these are different, keep both,” while the canonical says “this page isn’t the real one, index the other instead.” Google’s own guidance is that canonical and hreflang should agree; when they conflict, Google will generally favour the canonical, meaning your intended regional page may not get indexed as its own entity at all.

Non-reciprocal hreflang pairs. Hreflang is meant to work as a reciprocal set, if your AU page references the US page, the US page needs to reference the AU page back. One-directional hreflang (common when pages are added or edited individually rather than through Shopify’s market-wide tooling) is frequently ignored by Google entirely for that pair.

Assuming currency-only markets need full hreflang treatment. If two “markets” in your Shopify setup are really the same URL and same content with only currency changed based on geolocation, there may not be a genuine hreflang case there at all, forcing tags onto functionally identical content can create more confusion than it solves.

Step-by-step: setting up and verifying hreflang on Shopify Markets

Use this as a working checklist rather than a one-off task, it’s worth revisiting whenever you add a market or change domain/subfolder structure.

  1. Confirm your URL structure per market in Shopify admin under Settings > Markets. Check whether each market is using a subfolder, a separate domain, or is sharing the primary domain with only currency/content switching (no distinct URL).
  2. Decide which markets genuinely need hreflang. Markets with distinct URLs and either different languages or meaningfully localised content are candidates. Markets that only change currency/pricing on an identical URL structure generally aren’t.
  3. Set your x-default deliberately. Decide which market/language version should serve as the fallback (commonly your primary or global market) and confirm it appears in the hreflang set, don’t assume Shopify has picked one for you.
  4. Check the actual rendered output. View source (or use a crawling tool) on a page in each market and confirm the hreflang tags are present, point to live URLs (not 404s or redirects), and use valid, consistent language-region codes.
  5. Confirm reciprocity. For each pair of market pages, check that both sides reference each other, AU references US and US references AU, not just one direction.
  6. Check canonical tags agree with hreflang. On each regional page, confirm the canonical tag points to itself (or a genuinely intended canonical target), not to a different market’s URL.
  7. Test with Google Search Console. Use the URL Inspection tool on pages from each market to see how Google is currently interpreting and indexing them, and check the International Targeting-related data where available.
  8. Re-check after any Markets configuration change. Adding a market, changing a domain, or restructuring subfolders can change hreflang output, this isn’t a configure-once setting.

Practical checklist summary:

  • [ ] URL structure per market confirmed (subfolder, domain, or shared URL)
  • [ ] x-default explicitly set and verified
  • [ ] Language-region codes valid and consistent (ISO format, e.g. en-au)
  • [ ] Hreflang pairs are reciprocal across all markets
  • [ ] Canonical tags agree with hreflang targets (no conflicts)
  • [ ] Rendered output checked via view-source or a crawler, not assumed
  • [ ] Non-standard pages (landing pages, apps, custom sections) checked separately
  • [ ] Re-verified after any change to Markets domain/subfolder setup

When this is worth bringing in a specialist

Hreflang on a single-market Shopify store is rarely worth agency involvement, it’s either not needed or trivial to check manually. It becomes genuinely worth outside help once you’re running several markets, mixing subfolders with separate domains, layering in translated content, or you’ve noticed specific symptoms like Australian visitors landing on US product pages in Google results, or regional pages that seem to be cannibalising each other in rankings.

Because hreflang errors are invisible in normal browsing, the store looks and works fine to a human visitor in every market, they tend to go unnoticed until someone specifically audits the international setup. This is a core part of what international Shopify SEO support is built to catch: verifying that Markets’ auto-generated signals, your canonical tags, and your actual URL structure are all telling Google the same story across every region you sell into.

FAQ

Does Shopify Markets set up hreflang automatically?
Partially. Once you’ve configured markets with distinct subfolders or domains, Shopify generally generates hreflang annotations linking equivalent pages. However, things like x-default, non-standard pages, and the accuracy of the generated pairs still need manual verification, it’s not a fully hands-off feature.

What is x-default and why does it matter for a Shopify Markets store?
X-default is the hreflang fallback tag that tells Google which version of a page to show to a visitor whose language and region don’t match any of your specifically targeted markets. Without it, there’s no defined default, and Shopify doesn’t always set this automatically depending on your configuration.

Can I use hreflang if my markets share the same URL and only change currency?
Generally no, or at least not meaningfully. Hreflang works between distinct, crawlable URLs. If two markets are technically the same URL with content swapped by geolocation, there’s no separate indexable page for hreflang to reference on either side.

What happens if my canonical tag and hreflang tags disagree?
Google treats this as a conflicting signal and will generally prioritise the canonical tag, which can mean your regional page doesn’t get indexed as its own entity even though hreflang says it should be treated separately. Canonical and hreflang need to agree on every page.

Do I need hreflang if I only translate some pages, not the whole store?
You can still implement hreflang for the pages that do have genuine market-specific or language-specific versions. Just be careful not to apply hreflang tags to pages that are actually identical content across markets, that can create more inconsistency than leaving them untagged.

Next step

International SEO problems on Shopify are quiet ones, nothing looks broken until you check Search Console data by country or trace where specific markets’ traffic is actually landing. If you’re running (or planning) multiple markets and want a second set of eyes on your hreflang, canonical, and URL structure, a Shopify SEO audit covers this as part of a full technical review, or you can book a call to talk through your current Markets setup directly.

Niraj Raut
Written by Niraj Raut SEO Manager

Niraj Raut is the SEO Manager and co-founder at Nexly. He helps Australian Shopify and Shopify Plus brands earn durable organic growth through technical SEO, search-led store architecture and content that ranks. He writes about what actually moves rankings for ecommerce.

Connect on LinkedIn
Have a Shopify project? Chat with us, takes 30 seconds.