Fix Shopify Duplicate Content: Collections vs Products
You fix Shopify duplicate content by making every signal point at one URL per product, because Shopify renders each product at /products/handle and /collections/name/products/handle, and the theme’s links often vote for the copy your canonical is trying to retire. There is no penalty, but Google picks one version to rank.
Step 1: Find the URLs Google Chose Instead of Yours
Finding the URLs Google chose instead of yours comes first because duplicate content is not a penalty, and the only real cost is losing control of which version ranks. Google’s canonicalization documentation says some duplication is normal and not a spam violation, and that when your signals disagree, Google clusters the copies and picks a canonical using redirects, sitemaps, canonical tags, and internal links.
So open Search Console, go to Pages, and read the reasons under “Not indexed.” Three of them are the duplicate content report in disguise.
| Search Console reason | What it means on Shopify |
|---|---|
| Duplicate, Google chose different canonical than user | Your canonical says /products/, but Google indexed the nested or tag URL instead |
| Duplicate without user-selected canonical | A page with no canonical at all, usually a filtered or app-generated URL |
| Alternate page with proper canonical tag | Working as intended, the copy points at the winner and stays out of the index |
The first row is the one to fix, because it is the list of products where Google overruled you. The third row is fine, and a long list there is Shopify’s canonicals doing their job. A store that never ranks for anything usually has the first row full, which is why it sits near the top of the list of reasons a Shopify store is not ranking.
Step 2: Make the Theme Link the Plain Product URL
Making the theme link the plain product URL comes second because it is the single highest-value change on this list, and it takes a developer minutes. Shopify’s within filter documentation is the piece of Liquid that builds the /collections/name/products/handle version, and every theme that uses it in a product grid adds hundreds of internal links to the copy Google is supposed to ignore.
That is a store arguing with itself. The canonical tag says /products/handle is the real page while every collection grid says the nested one is, and Google sometimes sides with the links. It is the first of several canonical URL patterns that split rankings on Shopify stores, and the most common by a wide margin.
The fix is to swap the collection-scoped URL for product.url in the product card snippet, so links and canonicals finally agree. One consistent URL per product, in every link on the site, is the whole fix for the collections-versus-products problem. Ask your developer for that one change before anything else in this post.
Step 3: Pull Tag and Filter Pages Out of Your Menus
Pulling tag and filter pages out of your menus comes third because /collections/jackets/blue mirrors the main collection with a thinner product set, and a tag URL you link from the navigation is a tag URL Google will crawl and sometimes index. Shopify’s default robots.txt already blocks most sort and tag combinations, so the leak is almost always a menu or a content link you added.
The fix is two habits rather than a setting:
- Link only real collections from menus, footers, and blog posts, and let tag pages exist for shoppers who filter without ever earning a link.
- When a tag combination has real search demand, make it a real collection with its own copy instead of linking the tag URL.
That second rule is the same promote-the-winners call that decides whether product tags help or hurt SEO. A tag with demand becomes a page, and a tag without it stays a filter.
Step 4: Leave Shopify’s Defaults Alone
Leaving Shopify’s defaults alone comes fourth because the platform already handles the variant, market, and pagination duplicates better than most fixes people build on top of it. Shopify’s variant documentation puts the same product at many ?variant= URLs, and the canonical on each one points at the plain product page, which is exactly what Google’s ecommerce URL structure guidance recommends for parameter duplicates.
The same goes for Shopify Markets, which generates hreflang and self-referencing canonicals for each country and language version, and for pagination, where ?page=2 gets its own canonical, the same rule that runs through every Shopify collection page SEO pass. Each of those defaults replaces a fix you would otherwise build badly, so the audit is checking that nothing overrode them.
Where stores break the defaults is apps and custom code. A translation app that rewrites canonicals, a filter app that injects its own URLs, or a developer who pointed every paginated page at page one can each undo what Shopify set up. If a page in Step 1’s first row is a variant, market, or paginated URL, an app or a theme edit is the cause.
Step 5: Rewrite the Manufacturer Descriptions on Your Top 20 Products
Rewriting the manufacturer descriptions on your top 20 products comes fifth because it is the slowest fix, and the only one that touches words instead of structure. Google’s spam policies call out copied content that adds no original value, and a supplier description pasted across fifty stores gives Google no reason to rank yours over the other forty-nine.
This one is the quiet killer for dropshippers and resellers. The technical setup can be perfect and the store still loses to a competitor with the same products and its own words.
So start with the 20 products that make the most money, and write each description around what buyers ask: who it fits, what it is made of, how it compares to the next model up, and what it does not do. Structure fixes take an hour and rewriting takes a month, which is why the words come last. A hundred words that answer the buying question beat three paragraphs of supplier copy.
Step 6: Re-crawl in Two Weeks and Confirm the Signals Agree
Re-crawling in two weeks comes last because the same symptoms belong to several causes, and the only proof the fixes worked is Google choosing your canonical again. Google’s consolidation guidance ranks redirects and canonicals as the strongest signals, and once the internal links stop contradicting them, the “Google chose different canonical” list shrinks on its own.
Then check it monthly. When I ran this pass for Exclusive Beauty Club, thousands of near-duplicate pages collapsed into one version each, the crawler stopped spending its budget on copies, and Google Search sales rose 71% over the following year with the collection work layered on top. The audit is worth repeating after every theme change, since collections are where the duplicates breed.
What to Do If Google Still Picks the Wrong URL
The theme is fixed but the nested URLs are still indexed
Nested URLs stay indexed after the theme fix because Google recrawls a store’s product pages over weeks, not days, and the old links live in its index until each page is fetched again. Give it three to four weeks, then request indexing on the ten plain URLs that matter most, and the list clears from the top down.
An app keeps rewriting the canonical tag
An app that rewrites the canonical tag wins over the theme because apps inject code after the theme renders, so the fix is in the app’s settings or in removing the app, not in the theme. View the source of a product page, find every rel=”canonical” line, and if there are two, the app added the second one. If you would rather have the whole set of duplicates found and ranked by cost, that is the first thing my Shopify SEO services do on a new store.
One URL Per Page, Everywhere It Counts
Fixing Shopify duplicate content comes down to making the store agree with itself: plain product URLs in the theme, tag pages kept out of the navigation, defaults left intact, and descriptions that exist nowhere else on the internet. There is no penalty to fear, just rankings quietly split between URLs until the signals line up.
If you want to know which of your products Google is ranking at the wrong URL, book a call and I’ll pull your Search Console, show you the “chose different canonical” list, and tell you which of the six steps clears it. If you want the fixes made, my SEO services for Shopify stores start with that audit.
Sources:
- Google Search Central: What is URL canonicalization
- Shopify.dev: The within Liquid filter
- Shopify.dev: Product variants in themes
- Google Search Central: Designing a URL structure for ecommerce sites
- Google Search Central: Spam policies for Google web search
- Google Search Central: How to specify a canonical with rel=”canonical” and other methods
