DEV Community

New Seas Tech
New Seas Tech

Posted on • Edited on

Fix Shopify's Duplicate URLs and Redirect Chains Before They Kill Your Rankings

TL;DR

Shopify auto-generates duplicate product URLs via its collection-product URL structure, and redirect chains stack silently every time you rename a handle. Both fragment link authority. Both are fixable with a structured audit. Here's exactly how to do it.


The Two Technical Issues Quietly Draining Your Shopify SEO

You didn't do anything wrong. Shopify did it for you.

Out of the box, every product in a collection gets two live, 200-status URLs:

  • /products/oak-dining-table - the canonical product URL
  • /collections/dining-tables/products/oak-dining-table - the collection-scoped URL

Same page. Same content. Google sees two separate pages competing against each other. Shopify applies a canonical tag on the collection-scoped version pointing back to /products/ - but canonical tags are hints, not directives. If enough internal links or backlinks point at the duplicate version, Google may index that one instead, or split authority between both without fully consolidating either.

On top of that: redirect chains accumulate every time you rename a product handle, restructure a collection, or migrate a theme. Each hop bleeds a small amount of link authority. Over two or three years on an active store, the compounding effect is measurable.

Here's how to audit and fix both.


Part 1: Auditing Duplicate URLs

Step 1 - Crawl for collection-scoped product URLs

Run a full crawl with Screaming Frog or Ahrefs Site Audit. Filter for any URL matching the pattern /collections/[collection-name]/products/. Count how many exist and which collections they live in. On a store with 3,000 products across multiple collections, you can easily have 6,000+ URLs competing for crawl budget before you add filter parameters or pagination.

Step 2 - Verify canonical tags on every collection-scoped URL

In Screaming Frog, filter by canonical. Every collection-scoped product URL must canonicalize to its /products/ equivalent. Flag anything with a self-referencing canonical or a missing canonical - those pages are in direct competition with your canonical product pages right now.

Step 3 - Audit your internal linking

Export all internal links from the crawl. Filter for any link pointing to a collection-scoped URL. Every one of those links is fragmenting link equity instead of consolidating it on your canonical page. In most Shopify themes this is a template-level fix - update the product card or collection loop to output /products/[handle] and you resolve hundreds of instances at once.

Step 4 - Check Google Search Console

Filter your indexed pages by URL pattern. If collection-scoped URLs are appearing in your index, Google has already overridden the canonical hint - either because of a faulty implementation or because too many link signals point at the duplicate. Both scenarios require immediate action.


Part 2: Auditing and Collapsing Redirect Chains

Redirect chains form in predictable ways on Shopify stores:

  • Handle renames. You rename a product for SEO. Shopify logs a 301. You rename it again six months later. That's a two-hop chain.
  • Collection restructuring. Splitting "Furniture" into "Indoor Furniture" and "Outdoor Furniture" instantly chains any backlinks pointing at the old collection URL.
  • Theme or app migrations. URL formatting shifts add a redirect layer if you don't collapse the previous one first.

Each hop alone isn't a crisis. The problem is Shopify has no mechanism to automatically collapse chains as they form, so they stack indefinitely.

Step 1 - Export your full redirect list

In Shopify: Online Store → Navigation → URL Redirects → Export. Stores older than two years often have several hundred rows here.

Step 2 - Identify chains

A chain exists when the destination URL of one redirect is the source URL of another. In a spreadsheet, use VLOOKUP to match destination URLs against source URLs in the same list. Any match is a chain. Screaming Frog's redirect chain report automates this and traces multi-hop paths.

Step 3 - Trace each chain to its final destination

Follow the hops until you reach a live URL. That's your target endpoint.

Step 4 - Update the original redirect to skip the hops

In Shopify's URL Redirects, edit the original redirect to point directly at the final live URL. Delete the intermediate redirects once nothing references them.

Step 5 - Update internal links pointing at redirected URLs

Any internal link that triggers a redirect wastes crawl budget and leaks authority. Update them to point directly at the current live URL.

Step 6 - Pursue backlink updates for high-authority links

For your strongest external backlinks that still point at a URL early in a chain, contact the linking site and request a link update. Not always possible - but a direct link to a live URL passes more authority than the same link firing through even one redirect hop.


Prioritization Order for Your First Audit

If you're doing this on an established store for the first time, triage like this:

  1. Collection-scoped URLs actively appearing in Google's index - fix canonicalization immediately
  2. Internal links pointing to collection-scoped URLs - template-level fix, high ROI
  3. Redirect chains on your highest-traffic product and collection pages
  4. Redirect chains connected to high-authority external backlinks
  5. Bulk cleanup of the remaining redirect list - work through it monthly until chains hit zero

Maintenance Cadence

  • Redirect chain audit: every quarter for active stores
  • Duplicate URL audit: once at the template level, then re-check after any theme update or app change that touches URL structure

The target state is simple: redirect chains at zero, 100% of internal links pointing at canonical URLs. Neither is hard to maintain after the initial cleanup. The cost of skipping it is authority fragmentation across your highest-value collection pages - the pages targeting the category keywords that actually drive revenue.


For Shopify stores that want this handled as part of an ongoing SEO program, New Seas runs technical and content SEO specifically for ecommerce brands. Head to newseas.co to see how they work.

Frequently Asked Questions

Why does Shopify create duplicate URLs for my products?

Shopify automatically generates two live URLs for every product that appears in a collection: a standalone product URL and a collection-scoped version. Both return a 200 status, meaning Google sees them as separate pages with identical content competing against each other. Shopify adds a canonical tag on the collection-scoped version to signal which URL should be treated as the primary, but canonical tags are hints rather than instructions Google is required to follow.

Can canonical tags alone fix Shopify's duplicate content problem?

Canonical tags reduce the risk but don't eliminate it on their own. If enough internal links or backlinks point to the collection-scoped URL, Google may index that duplicate version or split authority between both URLs without fully consolidating either. Fixing the canonical tags needs to be paired with updating your internal links so they point to the canonical product URL instead of the duplicate.

What causes redirect chains on a Shopify store?

Redirect chains build up whenever you rename a product handle, restructure a collection, or migrate a theme. Each change logs a new 301 redirect, and if the previous redirect is never collapsed, the hops stack on top of each other. Shopify has no mechanism to automatically collapse these chains as they form, so on an active store they accumulate silently over time.

How do I find out if Shopify redirect chains are hurting my SEO?

Export your full redirect list from Online Store → Navigation → URL Redirects → Export, then use a VLOOKUP in a spreadsheet to find any redirect whose destination URL also appears as another redirect's source URL — that match is a chain. You can also run Screaming Frog's redirect chain report, which traces multi-hop paths automatically. Any internal link that still triggers a redirect wastes crawl budget and leaks authority, so once chains are identified, both the redirects and the internal links pointing at them need to be updated.

How often should I audit redirects and duplicate URLs on my Shopify store?

Run a redirect chain audit every quarter if your store is actively adding or renaming products and collections. For duplicate URLs, a one-time fix at the template level handles most instances, but re-check after any theme update or app change that touches URL structure. The target state is zero redirect chains and all internal links pointing directly at canonical URLs.

What should I fix first if I've never audited this before?

Start with collection-scoped URLs that are already appearing in Google's index, since Google has already overridden the canonical hint and those pages are actively competing with your canonical product pages. Next, fix internal links pointing to collection-scoped URLs, which is typically a template-level change that resolves a large number of instances at once. After that, work through redirect chains on your highest-traffic pages and any chains connected to strong external backlinks before moving on to bulk cleanup of the remaining redirect list.

Top comments (0)