DEV Community

New Seas Tech
New Seas Tech

Posted on • Edited on

How to Audit and Fix Shopify's Duplicate URL and Redirect Chain Problems

TL;DR

Shopify auto-generates two URLs for every product inside a collection. Canonical tags help, but don't fully protect you. Redirect chains compound the problem. Together they bleed link authority that should be powering your collection page rankings. This post shows you exactly how to audit and fix both issues.


The Structural Problem in Plain Terms

Every product on Shopify has a clean canonical URL:

/products/product-handle

The moment that product lives inside a collection, Shopify also serves it at:

/collections/collection-handle/products/product-handle

Both URLs render identical content. Shopify fires a canonical tag on the collection-scoped version pointing back to /products/, telling Google which one to treat as authoritative.

Here's where store owners get comfortable too early: canonical tags are a recommendation, not an instruction. If external backlinks, internal links, or traffic patterns send enough signals toward the /collections/ version, Google can override your canonical and index that URL instead.

When that happens:

  • Link authority fragments across two addresses for the same page
  • Search Console performance data splits across both URL patterns, hiding your real ranking picture
  • Collection pages you've been optimizing are working at a fraction of their potential

And that's before redirect chains enter the picture.


Why Redirect Chains Make This Worse

Redirect chains build quietly over time. A product handle changes once - you get a 301. It changes again six months later. Now you have:

/products/old-handle/products/interim-handle/products/final-handle

Each hop taxes the authority passing through it. On a store that's been live for two or three years with routine product and collection reorganizations, these chains stack up across hundreds of URLs without anyone noticing.

The compounding problem: if a collection-scoped URL was ever linked externally, and that collection also had its handle renamed, authority entering through that backlink now travels through a collection redirect and a product redirect before hitting your canonical destination. The canonical tag on the final page is correct. The authority arriving there has been taxed multiple times.


The Three-Stage Audit

Stage 1: Map Your Duplicate URL Pairs

Crawl your domain with Screaming Frog. Filter for every URL matching the pattern /collections/*/products/*. Export the list.

Cross-reference against your clean /products/ URLs. Every product appearing in both formats is a documented duplicate pair.

Then check what Google actually indexed:

  • Run site:yourdomain.com/collections/ in Google Search and look for collection-scoped product URLs appearing in results
  • In Search Console → Coverage, filter for indexed URLs matching /collections/products/ - any indexed (not excluded) are urgent

Stage 2: Audit Redirect Chains

Export your full redirect list from Shopify Admin (Settings → URL Redirects → Export). This gives you a flat CSV of every from/to redirect pair.

In that CSV, look for any row where the "to" URL matches another row's "from" URL - that's a chain. Screaming Frog's redirect chain report automates this at scale.

Prioritize your fix list:

  1. Chains of three or more hops
  2. Chains originating from URLs with known external backlinks (check Ahrefs or similar)
  3. Chains involving collection-scoped product URLs

Stage 3: Internal Link Hygiene

Crawl your internal links and flag any pointing to redirecting URLs rather than final destinations. Every internal link hitting a redirect makes Google do extra work and softens the authority signal. Also flag any internal links pointing to collection-scoped product URLs - these actively undermine the canonical signal you're trying to send.


The Fix Sequence

1. Collapse redirect chains.
In Shopify's URL redirect manager, delete intermediate redirects and replace each chain with a single from → final-destination entry. A three-hop chain becomes one redirect. Authority flows directly without being taxed at each step. Start with chains attached to URLs that carry external backlinks.

2. Update internal links to canonical destinations.
Go through your theme, navigation, collection descriptions, and blog content. Replace any link pointing to a redirecting URL or collection-scoped product URL with the direct canonical /products/ URL.

3. Audit backlinks for collection-scoped URLs.
In Ahrefs (or equivalent), filter your backlink report for links containing both /collections/ and /products/. For high-value links pointing to the collection-scoped version, contact the linking site and request an update to the canonical URL. For lower-value links, clean internal signals and a correct canonical tag should handle authority consolidation.

4. Verify canonical tag output.
Spot-check collection-scoped URLs using Google's URL Inspection tool in Search Console. Under "Page Indexing," confirm Google recognizes the canonical you intend. Theme customizations and third-party apps can silently break canonical output - don't assume it's intact.

5. Block filter parameters from crawling.
Shopify generates additional URL variants through filtering (size, color, price range). To stop Google from crawling those parameter-appended URLs, disallow the relevant patterns in your robots.txt file — on Shopify, you do this by editing the robots.liquid file in your theme. Pair that with canonical tags on any filtered pages that point back to the clean collection URL, and add noindex to filtered variants that need to stay accessible to shoppers but should not enter the index. Together these steps keep crawl budget focused on your base URLs and stop the duplicate problem from multiplying further.


Quick Audit Checklist

  • [ ] Crawl for /collections/*/products/* URLs and document duplicate pairs
  • [ ] Check Search Console Coverage and site: searches for indexed collection-scoped product URLs
  • [ ] Export Shopify redirect CSV and identify chains of two or more hops
  • [ ] Prioritize chains by backlink value - fix highest equity chains first
  • [ ] Update all internal links to point directly to canonical destinations
  • [ ] Audit backlink profile for collection-scoped URLs and request updates on high-value links
  • [ ] Spot-check canonical tag output via URL Inspection tool
  • [ ] Block filter parameter URLs from crawling in Search Console

Why This Is Worth Fixing Before Anything Else

None of this requires new content or new backlinks. It recovers authority you already earned. Redirect chain cleanup, duplicate URL consolidation, and internal link corrections are recovery actions - and recovery is faster and cheaper than acquisition.

Stores that have run this audit consistently see collection pages index faster and rank higher without any additional link building. The pages had the right content. They just had link authority working against them instead of for them.

If you want a team to run this audit for your Shopify store, New Seas handles technical SEO and content strategy specifically for ecommerce brands. Visit newseas.co to see how they work.

Frequently Asked Questions

Does Shopify's canonical tag prevent Google from indexing duplicate product URLs?

Canonical tags tell Google which URL to treat as authoritative, but they are a recommendation, not a hard instruction. If enough signals — backlinks, internal links, or traffic patterns — point to the collection-scoped version of a product URL, Google can override your canonical and index that URL instead. When that happens, link authority splits across two addresses for the same page and your collection page rankings suffer.

What is a redirect chain and why does it hurt my Shopify store's SEO?

A redirect chain occurs when a URL redirects to a second URL that then redirects to a third, rather than pointing straight to the final destination. Each hop in the chain taxes the authority passing through it, so by the time link equity reaches your canonical destination it has already been weakened multiple times. On a store that has been live for a few years with routine product and collection reorganizations, these chains can stack up across hundreds of URLs without anyone noticing.

How do I find redirect chains on my Shopify store?

Export your full redirect list from Shopify Admin under Settings → URL Redirects → Export. In that CSV, any row where the destination URL also appears as a source URL in another row is a chain. Screaming Frog's redirect chain report can automate this check across your entire site. Prioritize fixing chains of three or more hops first, starting with those attached to URLs that carry external backlinks.

How do I fix a redirect chain in Shopify?

Delete the intermediate redirects in Shopify's URL redirect manager and replace the entire chain with a single entry pointing straight from the original URL to the final destination. This means authority flows directly without being taxed at each step. Start with chains connected to URLs that have known external backlinks, since those carry the most equity.

Why should I care about internal links pointing to redirecting URLs?

Every internal link that hits a redirect makes Google do extra work and weakens the authority signal being passed. Internal links pointing to collection-scoped product URLs also actively undermine the canonical signal you are trying to send. Replacing those links with direct canonical /products/ URLs in your theme, navigation, and blog content is one of the fastest ways to reinforce which version of a page Google should treat as authoritative.

How do Shopify's filter parameters make the duplicate content problem worse?

When shoppers filter products by attributes like size, color, or price, Shopify generates additional URL variants for the same pages, multiplying the number of near-duplicate URLs Google might crawl. You can limit this by disallowing the relevant patterns in your robots.liquid file and adding canonical tags on filtered pages that point back to the clean collection URL. For filtered variants that need to stay accessible to shoppers but should not be indexed, adding a noindex tag keeps them out of search results while still allowing shoppers to use them.

Top comments (0)