/ โ† Ecommerce Crawl Fixes / Duplicate Products
In this guide
  1. Two different problems with one name
  2. Where URL duplicates come from
  3. Why it matters more on product pages
  4. How to diagnose it
  5. The canonical tag, done properly
  6. Merging duplicate product records
  7. Platform notes
  8. The fix, step by step
  9. Questions and answers

Two different problems with one name

The Ecommerce Crawl finds duplicate product URLs by spotting different addresses that serve the same product content. Before fixing anything, work out which kind of duplication you have, because the fixes are different.

URL duplicates: one product, several addresses

There is a single product record in your shop, but the website makes it reachable at more than one URL. Nobody created the copies on purpose; the platform, theme or an app generates them. The fix is technical: tell search engines which URL is the real one, and stop your own pages linking to the others.

Record duplicates: the same product entered twice

There are two or more separate product records for what a customer would consider the same item. It happens when a catalogue is imported twice, when two suppliers provide the same item and each gets its own listing, when a product is recreated instead of edited, or when a marketplace sync creates a copy. Each record has its own URL, its own stock, often its own reviews. The fix is a catalogue decision: merge them into one listing and redirect the rest.

๐Ÿ’ก A quick way to tell them apart: open the product in your admin. If there is one record with one ID, you have URL duplicates. If searching the admin for the product name returns two records with different IDs, you have record duplicates.

Where URL duplicates come from

SourcePrimaryDuplicate
Category path in product URL/products/oak-bread-board/kitchen/boards/oak-bread-board
Tracking and referral parameters/products/oak-bread-board/products/oak-bread-board?utm_source=email
Case differences/products/oak-bread-board/products/Oak-Bread-Board
Trailing slash or file extension/oak-bread-board.html/oak-bread-board.html/
Host and protocolhttps://www.example.co.uk/...http://example.co.uk/...
Quick view or print templates/products/oak-bread-board/products/oak-bread-board?view=quick
Internal IDs/products/oak-bread-board/catalog/product/view/id/412

Variant parameters such as ?variant=123 or ?size=large are a related case with their own trade-offs, covered in Fixing variant URL strategy. Filter and sort parameters on category pages belong to faceted URL explosion. This guide deals with the product page itself.

Host, protocol, case and trailing-slash variants should be handled with redirects at server or platform level, because there is never a reason to serve the wrong version. Category paths, tracking parameters and view templates usually stay reachable and are handled with canonicals plus clean internal links.

Why it matters more on product pages

Duplicate URLs are rarely a penalty issue; search engines expect some duplication on shops and pick one version to show. The costs are practical:

How to diagnose it

  1. Crawl the shop. In the Ecommerce Crawl results, sort duplicate product URLs by product so you can see how many addresses each one has and which patterns repeat.
  2. Check the canonical tag on each version. View the source (Ctrl+U) and search for rel="canonical". Every version of a product should point at the same primary URL, and the primary should point at itself.
  3. Check which links your templates use. On a category page, hover over or inspect a product link. If it contains the category path or a parameter, your theme is creating the duplicates.
  4. Look at Search Console page indexing. Three statuses matter here: "Duplicate without user-selected canonical" (you gave no canonical, so Google chose), "Duplicate, Google chose different canonical than user" (Google disagreed with your canonical), and "Alternate page with proper canonical tag" (working as intended).
  5. Use URL Inspection on a sample of primaries to see the "User-declared canonical" and "Google-selected canonical" side by side.
  6. Search your admin for product names, SKUs and barcodes that appear more than once to find record duplicates.
โš ๏ธ A canonical tag is a strong hint, not an instruction. If your internal links, sitemap and hreflang all point at one version while the canonical points at another, Google may ignore the canonical. Every signal needs to agree.

The canonical tag, done properly

Each product page, whichever address it was reached through, should output exactly one canonical tag in the <head>, with an absolute URL to the primary:

<link rel="canonical" href="https://www.example.co.uk/products/oak-bread-board">

Common mistakes the crawl turns up:

Keep the product's structured data consistent as well: the url in the Product or Offer markup should be the primary URL. The canonical tags guide covers canonical syntax beyond product pages.

Merging duplicate product records

Record duplicates need a person to decide which listing survives. Choose the record with the most reviews, the strongest search history and the cleanest URL, then:

  1. Move stock, barcodes and supplier codes onto the surviving record so orders still work.
  2. Move or re-attach reviews where your review app allows it; otherwise note that they will be lost and decide whether that is acceptable.
  3. Delete or disable the other records.
  4. Add a 301 redirect from each removed record's URL to the surviving product.
  5. Update product feeds so only one item is sent to Merchant Center and marketplaces.

Near-duplicates are different. A single oak board and a two-board gift set are separate products, even if their descriptions overlap. Keep both, but write distinct titles and descriptions so each has its own reason to rank. Similarly, if you and many other retailers use the manufacturer's description word for word, that is not a crawl duplicate to canonicalise, but adding your own text gives your page something the others lack.

Platform notes

Shopify can serve products under collection paths but outputs a canonical to the plain product URL by default; the fix is making the theme link to the plain URL, detailed in the Shopify crawl guide. WooCommerce products live at one permalink, so duplicates usually come from parameters, plugins or record duplicates from imports. Magento can build product URLs with category paths through the "Use Categories Path for Product URLs" setting; turning it off and enabling canonical tags for products removes most copies. The Magento crawl guide goes further.

The fix, step by step

Step 1

Group the crawl results by product

Export the duplicate product URLs from the Ecommerce Crawl into a spreadsheet and add a column for the product each URL belongs to, using the product ID, SKU or page title. Sort by product so every address for the same item sits together. Then note the pattern behind each extra address, such as category path, tracking parameter, capital letters or quick view, because each pattern is fixed once rather than product by product.

Step 2

Separate URL duplicates from record duplicates

For each group, open the product in your admin and check whether one record or several sit behind the URLs. One record means the site is generating extra addresses, which you fix in templates and canonicals. Several records with different IDs mean the catalogue holds copies of the same item, which you fix by merging. Mark each group so the two kinds of work do not get mixed up later.

Step 3

Choose the primary URL for each product

Pick the shortest stable address that does not depend on a category, parameter or letter case, normally the platform's plain product URL on your preferred host with https. Where Search Console shows another version has most of the clicks and external links, weigh that before switching. Write the primary into your sheet, and set server-level redirects for host, protocol, case and trailing-slash variants so they never serve content.

Step 4

Set a self-referencing canonical on the primary

Make sure the product template outputs one rel="canonical" tag in the server HTML, with the absolute primary URL, whichever path or parameter the page was reached through. Remove any second canonical added by an app or plugin. View source on the primary and on two or three duplicates to confirm every version names the same URL, and that the Product markup url matches it too.

Step 5

Make templates link only to the primary URL

Edit the category, search, related-products, breadcrumb and email templates so every product link uses the primary URL without category paths or parameters. Check your XML sitemap lists only primaries. Keep tracking parameters for external campaigns only, never for internal links. This is the step that stops duplicates at source; without it, crawlers keep finding copies even when canonicals are correct.

Step 6

Merge duplicate product records with 301s

For each record duplicate, choose the surviving listing, move stock, identifiers and, where possible, reviews onto it, then disable the others and add a 301 redirect from each removed URL to the survivor. Update product feeds and marketplace listings so only the surviving item is sent. For near-duplicates such as gift sets and multipacks, keep both products but give each a distinct title and description.

Step 7

Check how Google picked the canonical

After a few weeks, run URL Inspection in Search Console on a sample of primary URLs and compare the user-declared canonical with the Google-selected one. Review the page indexing report for "Duplicate, Google chose different canonical than user". Where Google still disagrees, look for a signal pointing the other way, such as an internal link, sitemap entry, hreflang tag or redirect, then recrawl with the Ecommerce Crawl to confirm.

Questions and answers

1. Will duplicate product pages get my shop penalised?

Ordinary duplication from category paths, parameters and similar causes is not treated as spam, and search engines expect some of it on shops. The effect is practical rather than punitive: search engines choose one version to show, which may not be the one you want, links are split across copies, and crawling is spent on addresses that add nothing. Fixing it makes your preferred URL the one that ranks and helps new products get crawled sooner.

2. Should I use a canonical tag or a redirect for duplicate products?

Use a redirect when the duplicate address has no reason to exist, such as http, non-www, capitalised or trailing-slash versions, and when you merge two product records into one. Use a canonical when the duplicate address still has a job to do for visitors, such as a tracking parameter on an email link or a category path the platform generates. In both cases, update your own internal links so they point directly at the primary URL.

3. Why does Search Console say Google chose a different canonical than mine?

Google weighs several signals and your canonical tag is only one of them. If your internal links, sitemap, redirects or hreflang point at a different version, or if the canonical target redirects, returns an error or differs noticeably in content, Google may pick another URL. Check each signal for the product with URL Inspection and view source, make them all name the same address, and the choice usually settles on your version after recrawling.

4. Is using the manufacturer's product description a duplicate content problem?

It is a different issue from duplicate URLs. Many retailers publish the same supplier text, and search engines generally pick which of those pages to show based on other factors, such as the site's strength and what else the page offers. It will not trigger a penalty, but it gives your page little reason to be chosen over anyone else's. Adding your own description, photos, sizing notes or answers to common questions makes the page distinct.

5. Should duplicate product URLs be blocked in robots.txt?

Usually not. If a duplicate is blocked, search engines cannot fetch it to read the canonical tag, so its signals are not consolidated onto the primary and the blocked URL can still appear in results if it is linked. For product duplicates, canonicals, redirects and clean internal links are the better tools. robots.txt is more useful for large families of filter and sort URLs that you do not want crawled at all.

6. I merged two duplicate products. What happens to the reviews?

That depends on your review system. Some review apps and platforms let you move or re-attach reviews to another product, often matched by SKU or product ID, while others tie reviews permanently to the original record. Check before deleting anything. If reviews cannot be moved, weigh keeping the record with more reviews as the survivor. Never copy reviews by hand onto another product in a way that misrepresents who reviewed what.

7. How do I stop duplicate products coming back?

Fix the sources rather than the symptoms. Make templates link only to primary URLs, keep one source of canonical tags, and set redirects for host, case and slash variants at server level. For records, add a check to your import process that matches on SKU or barcode before creating a product, and make editing the default instead of recreating. Then run the Ecommerce Crawl after theme changes, app installs and catalogue imports.

Find every product with more than one URL

The Ecommerce Crawl maps the URLs on your store and finds duplicate product URLs, alongside faceted navigation explosion, orphan products and out-of-stock items.

Open Ecommerce Crawl Fixes โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: All Ecommerce Crawl Fixes  ·  Fixing Variant URL Strategy  ·  Fixing Canonical Tags  ·  Fixing Collection and Category Architecture  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.