A published Shopify language nobody can reach
"Published" feels like the last switch: flip it and the language is live. It is not the last switch. A language can be published — translations stored, admin happy — and attached to no market, which means no storefront URL serves it to anyone. The two are separate records, and the second can come undone while the first stays green.
What it looks like
Like nothing. That is the point. A published language with no market attachment has no URL root, appears in no hreflang tag, and cannot be seen by any outside crawl — the storefront simply behaves as if the language did not exist. Inside the admin, meanwhile, the language shows as published and its translations are all still there. There is no error banner and nothing to click that says "unreachable".
How we watched it happen, live
We staged the state on our own development store to see the exact
mechanics. Brazilian Portuguese was published and serving at
/pt/. In the admin's language settings we toggled off its
domain assignment — one switch. Two things happened at the same moment:
Shopify's market-attachment record for the language became an empty list,
and the /pt/ path stopped serving Portuguese and fell back to
the store's root. Toggling the assignment back restored both. The
translations were never touched; only the road to them was removed.
The trap inside the trap: you cannot guess the URL
While measuring this we nearly fooled ourselves, and the mistake is worth
publishing. To test whether the language was reachable we probed
/pt-br/ — the language's code, the obvious guess. It fell
through to the root, and we briefly concluded the language was
unreachable. The real path was /pt/: the language was attached
and serving the whole time. Shopify records each language's true root URL;
the store's own hreflang map says the same thing from the outside. Across 70
stores we measured, 27 had at least one language living at
a path that is not its language code. The absence of a guessed path
is not the absence of a language — measure the real one.
Why it matters and how to check
The cost is quiet: translations you paid for, served to nobody, while every dashboard you look at reports a published language. Checking takes two minutes per language:
- From the admin: Settings → Languages — for each published language, confirm it is assigned to a domain or market, not merely published.
- From the outside: open your storefront and view the page source's hreflang tags. Every language you believe is live should appear with a real URL; fetch that URL and read which language actually renders.
One honest caveat from our own measurement discipline: an outside check can only see what is servable. A language missing from hreflang could be unattached — or your theme may simply not emit hreflang. The admin-side check is the record; the outside check is the symptom.
Does the admin ever warn you?
Sometimes. In the whole time we have watched this state, Shopify's admin showed a warning about it exactly once — a notice on our development store that Brazilian Portuguese was not assigned. We would not build a process on a banner we have seen once; the domain-assignment column in the language settings is the record worth checking on a schedule.
We also cannot tell you how common this state is in the wild, and neither can anyone else measuring from the outside — that is the uncomfortable part of a defect whose only symptom is absence. A market-less language leaves no storefront trace to count. What we can say is that the state is reachable from one admin toggle, stays until someone flips it back, and touches nothing that would make a dashboard complain.
Related measurements
Check your own store in one minute.
Our free scanner reads your public storefront in every published language and lists the products where the translation stopped matching the source — with links to your own pages, so you judge the evidence yourself. No install, no login.
To hear about it first — a weekly watch with an email when a translation breaks — that's LocaleWatch on the Shopify App Store.