Shopify Canonical URL Problems: How to Find and Fix Duplicate Content
Here’s something most Shopify store owners don’t know: every product on your store is accessible at two different URLs by default. And Google probably has both indexed.
This is the single most common Shopify SEO problem we see — and it’s built into the platform.
The Shopify Duplicate URL Problem
When a product lives in a collection, Shopify creates two valid URLs for it:
/products/red-canvas-tote-bag(the canonical product URL)/collections/bags/products/red-canvas-tote-bag(the collection-prefixed URL)
Both return 200 OK. Both serve the exact same content. From Google’s perspective, these are two separate pages competing with each other for the same keywords.
Multiply this across a store with 200 products and 15 collections, and you potentially have thousands of duplicate URLs diluting your SEO equity.
The Canonical Tag Fix (And Why It Often Fails)
Shopify’s default themes are supposed to handle this with a canonical tag. On the collection-prefixed URL, the canonical should point to the base product URL:
<link rel="canonical" href="https://yourstore.com/products/red-canvas-tote-bag">
This tells Google: “This page exists, but please treat that other URL as the authoritative version.”
The problem? Many Shopify themes get this wrong. Either they:
- Set canonical to the current URL (useless — that’s the default behavior anyway)
- Set no canonical at all
- Set canonical correctly on product pages but incorrectly on collection pages
How to check your store:
- Navigate to a product page via a collection (click a product from a collection page)
- View page source (
Ctrl+UorCmd+U) - Search for
rel="canonical"in the source
The canonical should point to the /products/ URL, not the /collections/.../products/ URL.
Product Variant Duplicate Content
This one is subtler. When a product has variants (color, size, material), Shopify creates a separate URL for each selected variant:
yourstore.com/products/t-shirt(base product)yourstore.com/products/t-shirt?variant=12345678(blue, size M)yourstore.com/products/t-shirt?variant=87654321(red, size L)
The ?variant= parameter creates a new URL that Google may crawl and index as a separate page.
For products with many variants — a clothing store with 10 colors × 6 sizes = 60 variants per product — this can generate thousands of essentially identical pages.
The fix: All variant URLs should have a canonical pointing back to the base product URL (without the ?variant= parameter). Well-maintained Shopify themes handle this. Many don’t.
Pagination Duplicate Content
Collection pages with many products use pagination:
/collections/bags(page 1)/collections/bags?page=2/collections/bags?page=3
Each paginated page is potentially indexable content. The SEO treatment of paginated collection pages has changed over the years — Google no longer recommends rel="next" / rel="prev" — but you should ensure:
- Page 1 (
/collections/bags) has a self-referential canonical - Pages 2+ have either:
- A canonical pointing to page 1 (if the content is thin)
- A self-referential canonical (if each page has meaningful unique content)
The first option is more conservative and less likely to cause problems. The second is fine if your paginated pages include enough unique content to justify indexing.
How to Audit Your Canonical Tags
Method 1: Manual Check (5 minutes)
Check three page types:
- A product page accessed directly (
/products/X) - The same product accessed via a collection (
/collections/Y/products/X) - A paginated collection page (
/collections/Z?page=2)
For each, view source and find the canonical tag. Note whether it’s pointing to the right URL.
Method 2: Google Search Console
In Search Console, check:
- Coverage report → Look for “Duplicate, Google chose different canonical than user”
- URL Inspection tool → Enter specific URLs to see how Google sees them
If you see hundreds of “Alternate page with proper canonical tag” entries, that means the canonical is set but Google isn’t fully respecting it. This usually indicates a trust issue — Google isn’t sure which version is really authoritative.
Method 3: Free Rankrace Audit
Our free 200-point audit automatically checks canonical tags across your site and tells you:
- Whether canonical tags are present
- Whether they’re set correctly on collection-prefixed product URLs
- Whether variant URLs have proper canonicals
- Whether Google has indexed duplicate versions of your pages
Fixing Canonical Issues Without a Developer
If your theme doesn’t handle canonicals correctly, you have a few options:
Option 1: Edit Your Theme’s canonical.liquid
In your Shopify admin, go to Online Store → Themes → Edit Code. Look for canonical.liquid in the snippets folder, or find where canonical is set in your theme layout (usually theme.liquid).
The correct implementation:
{%- if template == 'product' -%}
<link rel="canonical" href="{{ product.url | prepend: request.origin }}">
{%- elsif template == 'collection' -%}
<link rel="canonical" href="{{ collection.url | prepend: request.origin }}">
{%- elsif template == 'blog' -%}
<link rel="canonical" href="{{ blog.url | prepend: request.origin }}">
{%- elsif template == 'article' -%}
<link rel="canonical" href="{{ article.url | prepend: request.origin }}">
{%- else -%}
<link rel="canonical" href="{{ request.origin }}{{ page.url }}">
{%- endif -%}
The key is product.url rather than request.url. Shopify’s product.url always returns the canonical /products/ URL regardless of how the user navigated to the page.
Option 2: Use a Shopify SEO App
Several Shopify apps handle canonical tags, including:
- SEO Manager (good for non-technical users)
- Smart SEO
- JSON-LD for SEO (focused on schema but handles canonicals too)
These apps inject or override canonical tags. Useful if you don’t want to touch theme code.
Option 3: Hire Us
If canonical issues are just one of many problems on your store, our one-time SEO fix package is probably more efficient. We fix canonical tags, schema markup, image alt text, robots.txt, and 30+ other issues in one engagement.
After You Fix Canonicals
Once you’ve fixed canonical tags, don’t expect immediate results. Google needs to:
- Re-crawl the affected pages
- Process the canonical signals
- Update its index to reflect the preferred URLs
This typically takes 4–12 weeks for the full effect to show up in rankings. You can speed up the process by:
- Requesting re-indexing of key product pages in Search Console
- Submitting an updated sitemap
- Making sure your sitemap only includes canonical URLs
Track progress in Search Console’s Coverage report. You should see “Alternate page with proper canonical tag” counts decrease and organic impressions increase on the canonical URLs.
The Bottom Line
Duplicate content from Shopify’s URL structure isn’t a death sentence for your SEO — but leaving it unfixed is leaving rankings on the table. Every piece of link equity pointing to the collection-prefixed URL should be pointing to the canonical product URL instead.
Fix the canonicals. Fix the variant parameters. Make sure your sitemap is clean. These three changes alone can have a noticeable impact on organic traffic within 60–90 days.
Ready to fix your Shopify SEO?
Run a free 200-point audit and see exactly what's holding your store back.
Get My Free Audit →