by Narmina Balabeyli
Updated:
5 min
Open your store, click into any collection, then click a product. Now look at the address bar.
If it says something like /collections/summer/products/blue-running-shorts, you have the most common canonical problem on Shopify. It took ten seconds to find, it is invisible in your admin, and it quietly splits your product's ranking power across duplicate copies of the same page.
Here is what is actually happening, in plain terms, and how to fix it.
One product, three URLs
Every Shopify product has one clean address: /products/blue-running-shorts. But Shopify also renders that same product at a collection-scoped address for every collection it belongs to.
Put Blue Running Shorts in a Summer collection and a Mens collection, and the identical page now exists at three URLs: the clean one, /collections/summer/products/blue-running-shorts, and /collections/mens/products/blue-running-shorts.
Duplicates are not automatically a problem. Search engines expect them and have a whole system for consolidating them. The problem starts when your store gives Google contradictory instructions about which copy is the real one.
The three signals, and whether they agree
Google reads three signals from your store when it decides which URL is canonical: where your internal links point, what your sitemap lists, and what your canonical tag says.
The entire issue comes down to whether those three agree.

In the leaky setup, your theme's internal links point at the collection-scoped URLs, while your sitemap and your canonical tag point at the clean one. Two signals say one thing, the strongest signal says another. Google sees three URLs for one product, and the ranking signal splits across the copies.
In the aligned setup, all three point at /products/blue-running-shorts. Google indexes one URL, and every link, every citation and every ranking signal lands on the same page.
The only difference between the two panels is where the internal links point. That is the whole bug.
Why Google ignores your canonical tag
Merchants assume the canonical tag settles this, because Shopify adds it automatically and it points at the clean URL. It does, and it is correct. The catch is what a canonical tag actually is.
Google treats canonicals as a strong hint, not a directive. When your other signals disagree, Google is free to pick its own winner, and analyses of canonical overrides find that conflicting internal links are the most common reason Google disregards the tag. The algorithm tends to trust where you actually send your visitors over what a meta tag claims.
So a store can have a perfect canonical on every product page and still watch collection URLs get indexed. The canonical was never the problem. The internal links were.
Where the leak comes from
The leak lives in your theme's Liquid, usually in the product card snippet that collections and grids use.
Many themes, older ones and plenty of custom builds, link product cards with the collection-aware filter:
That filter is what produces /collections/summer/products/... links. The fix is the plain version:
One filter, removed. That is the entire code change for the main leak.
The auditing takes longer than the fix, because the same pattern hides in more than one place. Check the product card snippet, any custom sections your developer or a page builder added, recommended-products and related-products blocks, search results templates, and anything an app injects into collection pages.
The three-part alignment, in order
First, fix the internal links so every product link in the theme uses the clean path. This is the active repair, and the only one that usually needs code.
Second, confirm the sitemap lists only clean /products/ URLs. Shopify generates the sitemap itself and already does this, so this step is verification, not work.
Third, confirm the canonical on product pages points at the clean URL. Shopify also does this by default. Verify it survived your theme customizations, and move on.
Notice the shape of the fix: two of the three signals were already right. Alignment means bringing the third one home, not rebuilding anything.
How to check your own store in five minutes
The address bar test comes first. Browse a collection, click a product, read the URL. A /collections/ path means your links are leaking.
Then confirm what Google actually did with it. In Search Console, run the clean URL and one collection-scoped URL through URL Inspection. The healthy result for the collection version is "Alternate page with proper canonical tag", which means Google saw the duplicate and consolidated it.
The unhealthy results are the collection URL showing as indexed, or a status saying Google chose a different canonical than the one you declared. Either way, Google is telling you it overrode your tag, and the split is live.
Why this matters more than it used to
Split URLs always diluted rankings. Two things raised the stakes.
AI crawlers read your raw HTML in a single fetch and follow the links they find there, the same crawl-and-index layer that gates every AI answer. Duplicate versions of a page mean the version that gets read, cited or quoted is a coin flip you did not choose.
And collection pages themselves now carry more weight in AI-era search, which makes clean canonical hygiene on collections and their filtered URLs part of the same job. Authority you consolidate flows through the collection down to the product; authority you split just evaporates.
Keep it aligned, because it will not stay aligned by itself
The frustrating part of this bug is that it comes back. A new app injects a product grid with its own link markup. A hired developer copies an old snippet. A page-builder section ships with the collection-aware filter baked in.
So treat alignment as a state you monitor, not a task you finish. After any app install or theme change, repeat the ten-second address bar test. Once a month, spot-check a few products in URL Inspection. The check costs a minute; re-earning consolidated rankings after months of splitting costs a season.
The principle underneath is worth keeping even if you forget every Liquid detail: Google believes your store when all of its signals tell the same story. Links, sitemap, canonical, one URL. Everything else in this post is just getting the three of them to agree.
