Subfolder, Subdomain or ccTLD: Structuring an International Store
The wrong URL structure won’t kill you on day one. It kills you eighteen months in, when you realize every market is starting its SEO from zero and you can’t merge them without a migration.
This is a decision you make once and live with for years. Get it right early or pay an SEO tax forever.
There are three real options for structuring an international store, and they trade off SEO authority against operational simplicity and local trust.
The three structures
Subfolders: example.com/de/, example.com/fr/. All markets live under one domain. This is the default I recommend for most brands. Every market inherits the domain’s authority, so a new country isn’t starting SEO from scratch. It’s the simplest to run on one platform, one analytics property, one backend. The tradeoff: it looks less “local” than a country domain, and you can’t host different markets in different places easily.
Subdomains: de.example.com, fr.example.com. Google treats subdomains as semi-separate. You share less authority than subfolders, and you split more of your tracking and tooling. There are valid reasons (very different tech stacks per region), but for most e-commerce brands subdomains are the worst of both worlds: not as unified as subfolders, not as locally trusted as a ccTLD.
ccTLDs: example.de, example.fr. A country-code domain is the strongest local trust signal and the clearest geo-targeting signal to Google. The cost is brutal: each domain builds authority alone, so you’re running, and link-building, several separate SEO efforts. You also manage multiple domains, certs, and platforms operationally. Worth it for big, committed markets and brands with the resources to feed each domain. Overkill for testing a market.
The honest default for a brand entering its second or third country: subfolders. Consolidate authority, keep ops simple, revisit ccTLDs only when a market is big enough to deserve its own SEO engine.
hreflang: the part everyone breaks
Whatever structure you pick, you need hreflang tags so Google serves the right version to the right user and doesn’t treat your translated pages as duplicate content.
The rules that actually matter:
- Every language version points to every other, including itself. The set must be reciprocal. If /de/ points to /fr/, /fr/ must point back.
- Use the right codes: language, or language-region (
de,de-AT,fr-BE). Match them to how you actually segment markets. - Include an
x-defaultfor users who match no version. - Point at the live, indexable URL of each version, not a redirect.
Broken hreflang is the single most common international SEO bug I find. It quietly causes the wrong country’s page to rank, or none to, and you won’t see it without checking. Validate it after launch and keep checking it.
One store or many?
For most brands: one store, multiple markets. Shopify Markets is built for exactly this, per-market currency, pricing, language, and domains or subfolders, all on one backend with one source of truth for products and inventory. You localize on top of a single catalog instead of cloning stores.
Run separate stores only when a market genuinely needs a different catalog, legal entity, or tech stack. Every extra store is another backend, another set of tracking, another thing that drifts out of sync. Multiply your stores and you multiply your maintenance, your bugs, and your chances of the German site quietly running last month’s prices.
The psychology: optimize for the store you’ll have in two years
The trap is optimizing for launch instead of for scale. ccTLDs feel impressive on day one. Then you’re hand-feeding five separate SEO efforts and wondering why nothing ranks. Subfolders feel less prestigious and compound quietly into authority you’ll be glad you didn’t split.
Pick the structure that the brand you’re building toward will thank you for, not the one that flatters the launch.
What to do next
- Default to subfolders on one store unless a market truly needs its own.
- Set up hreflang reciprocally and validate it after launch.
- Use Shopify Markets (or your platform’s equivalent) for per-market currency and pricing.
- Then feed the machine with clean product data per market: Product Feeds for Multiple Markets.
Structure is plumbing. Boring, invisible, and catastrophic to redo. Pour it right the first time.