Shopify technical SEO

Shopify duplicate content, and which duplicates to fix or ignore

Shopify does create duplicate URLs (products inside collections, variant links, sorted and filtered collections), but its default canonical tags point most of them back to one main page, so Google usually folds them together without harm. The ones worth fixing are separate products made for each colour or size, theme links that point to the wrong version, and Unlisted or noindex settings on a page that's actually earning clicks, because Shopify can't sort those out for you.

By Lorea Lastiri·October 2026·9 min read

Where Shopify creates duplicate URLs

Shopify publishes the same product or collection at more than one address in a handful of predictable places. Most of them come from how themes link to products, not from anything you did.

That list looks alarming. Most of it isn't.

What Shopify's default canonical tags already handle

Shopify adds a canonical tag to every page, and on a standard theme it already points the common duplicates back to one main URL. Its help center says auto-generated canonical tags are added to stop duplicate content showing in search results.

A check of Shopify's Dawn demo store on October 13, 2026 found the following behavior. Check your own theme before assuming it behaves the same way.

Shopify's default robots.txt also keeps crawlers out of sorted collection URLs and combined-tag URLs (/collections/*+*), and the demo store's robots.txt checked on the same date blocks URLs with two or more filter parameters as well. Markets get their own handling. Shopify says canonical URLs and hreflang tags are set automatically from your market and language settings, so /fr-ca/ pages are treated as related versions of the same page.

A canonical tag is one signal, not a complete fix. Check for these problems as well.

And Google treats a canonical as a hint. Its documentation says your stated preference is "a hint, not a rule," so it can pick a different URL if your other signals disagree.

How to check which version Google picked

Use URL Inspection in Search Console on the product or collection you care about, and compare two lines in the indexing section. User-declared canonical is what your theme says. Google-selected canonical is what Google actually chose. If they match, you're done with that page.

One catch. The live test can't tell you which URL Google will treat as canonical, because Google's help says canonical selection comes from indexed data only. Go by the indexed result.

Then open the Pages report and read the reason labels before reacting to them. Google's Page indexing report help defines each one.

To see what your own theme declares, open any product in a browser, view the page source and search for rel="canonical".

Which duplicates matter and which to ignore

Most Shopify duplicates need no work. A few cost real traffic. This is the table I use to sort them.

Duplicate typeWhat you'll usually seeAct?
Product inside a collection (/collections/x/products/y)Alternate page with proper canonical tagIgnore, unless your theme links to it everywhere. Then fix the links.
?variant= URLsAlternate page with proper canonical tagIgnore
Sorted and filtered collectionsBlocked by robots.txt, or canonical to the plain collectionIgnore
Paginated collectionsEach page canonical to itselfIgnore. Don't point page 2 at page 1.
Markets and language subfoldersSeparate versions joined by hreflangIgnore, as long as automatic hreflang stays on
Separate products for each colour or sizeNear-identical pages competing, or Google choosing a different canonicalAct. Merge or make them distinct.
Canonical tag missing or edited by a theme or appDuplicates without user-selected canonical on product URLsAct. Restore the tag.
Best-selling product set to Unlisted or noindexURL marked noindex on a page that should rankAct first. This one costs the most.

If you only have time for one row, take the last one.

When a collection page links to /collections/x/products/y, the theme is sending crawlers and shoppers to the duplicate and asking the canonical tag to clean up afterwards. Pointing those links at /products/y is the cheapest fix on this page. Google's guidance on duplicate URLs says linking to the URL you consider canonical helps it understand your preference.

The usual cause is one Liquid filter. Shopify's within filter takes a product URL and builds the collection version of it, so {{ product.url | within: collection }} outputs /collections/sale/products/…. Shopify's docs tell you to consider the SEO implications before you use it.

  1. Open your theme code and search the snippets and sections for within.
  2. Where it's used on a product link, remove | within: collection so the link prints the plain product URL.
  3. Check a collection page afterwards and hover a product. The link should read /products/….

Shopify's current Dawn theme already links product cards with the plain product URL and doesn't use within in its product card. You'll find it more often in older themes and heavily customised ones. Make the change on a duplicate theme first, preview it, then publish.

While you're in the code, check that theme.liquid still prints the canonical tag. In Dawn it's a single line, <link rel="canonical" href="{{ canonical_url }}">. A missing or invalid canonical can leave Google without a declared preference. A valid tag pointing to the wrong URL can create a different problem. Check the actual tag and the indexed URL Inspection result before changing the theme. I'd check this before touching anything else on the list.

When noindex helps and when it backfires

Noindex is right for pages nobody should find in Google, like a wholesale order form or a thank-you page. It's the wrong tool for duplicates of pages you sell from. Google's own advice is not to use noindex to pick a canonical within your site, because it removes the page from Search completely.

On Shopify, noindex often arrives without anyone typing a tag. Setting a product to Unlisted adds a noindex,nofollow robots tag to the product page and takes it out of sitemap.xml, collections and storefront search. The seo.hidden metafield hides a product from sitemaps and search engines too. Store owners reach for both when they want to tidy up duplicate products.

The Shopping-feed trap. On a US medical-compression store I work with, the best organic product page (most organic clicks in the first month) and a second page for the same garment were set to Unlisted with a noindex tag. That split one garment's demand across three product pages. Search Console still showed clicks for the hidden products, mostly against feed-tagged or variant URLs. Those clicks did not establish that the clean product addresses were indexed.

I found it at a routine check before publishing new guides. We rerouted every guide link and a paid placement to the live product page, and the store chose one main page for the garment. That page's clicks went from 25 to 71, comparing August 31 to September 23 with the same span a month earlier (address and feed variants included). Feed cleanup and full consolidation were still unfinished at my last check, so treat this as one store's early result.

The lesson for your own audit is simple. Before you Unlist or noindex a product to clean up duplicates, look at its clicks in Search Console with the Shopping rows in mind, and check whether it's the page Google prefers. In this store's dataset, feed and product-sync variants made hidden pages look busy. Check the included URLs and search appearances, then use URL Inspection to verify whether the page itself is indexed. If the duplicate has to go, merge it and redirect it instead.

When to merge separate products into one page with variants

Merge when the separate products are the same item in a different colour, size or pack, with the same description and the same buyer. Keep them separate when each one has its own demand and you can give it a page that's really different.

Shopify built variants for this. Its help center describes a variant as each combination of option values for a product, so one shirt in three colours and four sizes can live on a single product page with twelve variants. One page collects all the links, reviews and clicks that would otherwise be split.

When you merge, work in this order.

  1. Pick the product with the most organic clicks and links as the one you keep, and add the others as variants.
  2. Take the old products off the online store. Shopify's help notes that a URL redirect won't work while the old URL still loads a valid page.
  3. Create a redirect from each old product URL to the kept one (Content, then Menus, then View URL Redirects).
  4. Update internal links, menus and any guide that pointed to the old URLs.
  5. Update your Google Shopping feed so it stops sending clicks to products that no longer exist.

If you're on Shopify Plus, Shopify's Combined Listings app is another route. It groups separate products under one parent listing, with the child products shown as variants on the storefront.

Keep products separate when they answer different searches. A compression sock and a compression sleeve may share a fabric, but people search for them separately. Give each one its own copy and photos, and they stop being duplicates at all. My guide to Shopify product and collection page SEO covers how to make those pages distinct.

Where to start this week

Start in Search Console. Run URL Inspection on your top ten product pages by revenue and confirm the Google-selected canonical matches the URL you want ranked. Then scan the Pages report for any product you sell under "URL marked 'noindex'."

If both are clean, check the theme for within and for an intact canonical line, and you've covered the duplicates most likely to cost you traffic. Everything else on the table can usually wait. For the rest of the technical list, my Shopify SEO checklist and the ecommerce SEO audit checklist go further.

If you'd rather have someone look, the Sales Leak Report shows where your product and collection pages lose buyers, by email within 24 hours, with no store access needed. Duplicate and hidden product pages are among the first things I check there, and in a full ecommerce SEO audit.

Questions

Does Shopify duplicate content hurt my rankings?

Usually not. Google says some duplicate content on a site is normal and not a violation of its spam policies, and Shopify's default canonical tags point collection-aware product URLs and variant URLs back to the main product page. The cases that cost traffic are separate products made for each colour or size, a broken canonical tag, and hiding a page that was earning clicks.

Should I fix "Duplicate without user-selected canonical" in Search Console?

Google describes it as working as intended, not an error. Inspect a few of the URLs and check that the Google-selected canonical is the page you want ranked. If it is, leave it. If product URLs show up there, check that your theme still prints the canonical tag.

Why does Google show /collections/x/products/y instead of /products/y?

Usually because your theme links to the collection version, often through the within filter in Liquid. Remove the filter from product links so they point at /products/y, then check the Google-selected canonical in URL Inspection over the following weeks.

Should I noindex duplicate products on Shopify?

Not as a first move. Google advises against noindex for choosing a canonical because it removes the page from Search entirely, and Unlisted products get a noindex tag automatically. Check the page's clicks, included URL variants and search appearances first, then verify its indexing in URL Inspection. If the duplicate has to go, merge it into one product with variants and redirect the old URL.

Do Shopify Markets subfolders create duplicate content?

Shopify sets canonical URLs and hreflang tags automatically from your market and language settings, so each market version is treated as a related page. Keep automatic hreflang turned on unless you have another hreflang setup in place.

Next step

See where your store leaks sales.

Send your store. I'll show you, in writing, where your product and collection pages lose search buyers and what I'd fix first.

Opens the four-field form on the homepage•By email within 24 hours•No cost, no call, no store access needed
Keep reading

More from the Shopify SEO work.