Duplicate content in online stores: collections, tags and canonical URLs
Why one product can appear at several addresses in a store, what it does to search rankings, and how to point everything at one.
The short answer
On a Shopify store, one product can be reached at several addresses: its plain product address and a nested address for every collection it appears in, while collection pages themselves multiply through tags, sorting and filters. To a search engine each address is a page, and identical pages at many addresses dilute ranking and waste crawl. Shopify handles the most important case by default: product pages carry a canonical tag pointing at the plain product address. The problems come from around that default. Themes link internally to the collection-nested addresses. Apps inject filter pages that get indexed. Tag pages repeat collection content. The fix is to point everything at one address per product and one per collection, and to check the search console rather than trusting that the defaults survived the theme and the apps.
Where duplicates come from
| Source | Example | Default handling | Where it breaks |
|---|---|---|---|
| Collection-nested product addresses | The same product under each collection path | Canonical to the plain product address | Themes that link to nested addresses; apps that override canonicals |
| Tag pages | A collection filtered by a tag | Indexable by default | Thin, overlapping pages in the index |
| Sort and filter parameters | A collection sorted by price or filtered by size | Canonical usually points at the base collection | Filter apps generating indexable pages |
| Pagination | Page two, three of a collection | Self-referencing canonicals | Fine, if not blocked or mishandled |
| Blog tags and archives | Posts repeated under tags | Indexable | Duplicate excerpts across many pages |
| Multiple domains or markets | Same content per country domain | Handled with Markets and hreflang when configured | Misconfigured markets duplicating without hreflang |
Fixing it
- Check the theme’s product links: collection cards and search results should link to the plain product address, not the nested one.
- Confirm canonicals on product pages point at the plain address, even when reached through a collection, and that no app overrides them.
- Decide about tag pages: canonicalise to the collection or exclude from indexing, unless deliberately built as landing pages.
- Keep filter and sort variants out of the index: canonical to the base collection; check what filter apps generate.
- Review blog tag and archive pages the same way.
- If you use multiple markets or domains, confirm hreflang and canonicals are set per market.
- Read the search console’s indexing report and fix whatever it shows it chose differently from you.
On a headless storefront
When the storefront is built separately, the address structure is designed rather than inherited: one address per product, one per collection, filters applied without creating indexable variants, canonicals generated from one rule, tag pages only where they earn their place. It is one of the quieter advantages of building the storefront: duplicates are a decision rather than a default to work around.
What this means for you
Give every product and collection one address, link to it consistently, keep tag, filter and sort variants out of the index, and check the search console’s choices rather than assuming the defaults held. Shopify’s defaults are sound; themes and apps are where they break. An hour with the indexing report usually finds where your crawl is going, and it is rarely where you want it.
Frequently asked questions
Is duplicate content on Shopify a penalty risk?
Rarely a penalty, routinely a dilution: search engines pick one address to index and may split credit between variants, and crawl budget is spent on copies. Shopify's default canonicals handle the product variants correctly; the problems come from themes that link to collection-nested product addresses, apps that inject filter pages, and blog or tag pages that repeat content.
Should our tag pages be indexed?
Usually not. Tag pages are filtered views of collections with thin, overlapping content. Keep them for navigation but canonicalise them to the collection or exclude them from indexing, unless a specific tag page has been built up with unique content and earns its place as a landing page.
How do we check what search engines have indexed?
The search console's page indexing report shows which addresses are indexed and which were excluded as duplicates, with the canonical the search engine chose. Compare its choices with yours. Where it chose a collection-nested product address or a filter variant, find the internal links pointing there and fix them.
Sources
- Shopify Help Center: SEO overview (accessed 2026-09-12)
- Google Search Central: Consolidate duplicate URLs (accessed 2026-09-12)