Shopify generates multiple URL types because ecommerce needs multiple ways to browse the same catalogue. Products can appear in more than one collection. Collections can be sorted, filtered and paginated. Markets can create regional variants. Apps can add parameters.
That is not automatically bad. Google understands that duplicate and near-duplicate URLs exist. The goal is to make the preferred URL obvious and stop weak variants from competing with commercial pages.
What is normal on Shopify
Shopify has built-in SEO features that help with common duplicate surfaces: canonical tags, generated sitemaps, generated robots files and editable title/description fields. Modern themes should output canonical metadata in the head.
For a small store, this is often enough. For a large store with filters, apps, markets and years of redirects, the defaults need auditing.
- One product appearing in multiple collections can be normal.
- Paginated collection URLs can be normal.
- Sort parameters can be normal.
- Market-specific pages can be normal if implemented consistently.
What becomes a ranking problem
Duplicate content becomes a ranking problem when important pages lose clarity. A collection page should not compete with five filtered versions of itself. A product page should not have multiple indexable URLs with conflicting canonical tags. A discontinued product should not leave a trail of crawlable dead ends.
Canonical checks to run
Start with the rendered HTML. Do not assume the theme source tells the full story; apps and custom scripts can change output.
- Does every indexable page output exactly one canonical tag?
- Does the canonical point to the clean preferred URL?
- Do collection filter URLs canonicalise back to the main collection where appropriate?
- Do product pages canonicalise consistently whether reached directly or through a collection?
- Do market or language pages have correct self-canonicals and hreflang if used?
- Are canonical targets indexable, live and returning `200`?
A canonical tag is a hint, not a magic override. If internal links, sitemap entries, redirects and content all send a different signal, Google may choose its own canonical.
Filters, facets and Shopify collection URLs
Filters are where Shopify stores create the most avoidable crawl waste. Some filtered pages deserve to exist: a high-intent filtered category with search demand, unique content and stable products can be a useful landing page. Most filtered URLs do not.
Use three buckets.
- Index: stable pages with search demand and unique content.
- Canonicalise: browse variants that are useful to users but not search pages.
- Block or noindex carefully: crawl traps, search pages and low-value combinations.
Do not block a URL in robots.txt if you need Google to see a noindex tag on that URL. Crawling and indexing are different. Use the right control for the job.
The fix order we use
1. Map the duplicate groups.
Group URLs by page type and content similarity: products, collections, filtered collections, search, blogs, pages and legacy redirects.
2. Choose the canonical page.
Decide the one URL that should rank for each group. Check that it is internally linked, in the sitemap if appropriate, and strong enough to deserve the ranking.
3. Align the signals.
Canonical tag, internal links, sitemap, redirects, hreflang and content should all point to the same decision. Mixed signals are what cause the weird Search Console reports.
4. Strengthen the ranking page.
A canonical decision is not enough if the canonical page is thin. Improve the collection or product page so Google has a better reason to rank it.
This is why duplicate-content cleanup belongs inside technical SEO and Shopify SEO, not as a detached checklist item.
operator@hollowpoint:~$cat next-step.txt
Canonical issues showing in Search Console?
We audit Shopify duplicate URL surfaces, fix canonical signals and strengthen the pages that should rank.