Canonical Tags on Shopify: How They Work and When They Break
Shopify handles canonical tags automatically, but they're not always correct. Here's how to audit and fix canonical tag issues that hurt your SEO.

Mark Cijo
Founder, GOSH Digital
Canonical Tags on Shopify: How They Work and When They Break
Canonical tags tell Google which version of a page is the "official" one when multiple URLs show similar content. On Shopify, this happens more than you'd think. Products exist at multiple URLs. Collection pages with filters create parameter-based duplicates. Paginated pages overlap. Without proper canonicalization, Google has to guess which version to rank — and it doesn't always guess right.
Shopify handles canonicals automatically in most cases. But "most cases" isn't "all cases," and the exceptions can quietly tank your SEO without obvious symptoms. Pages that should rank don't. Google indexes the wrong URL. Authority is split between duplicates instead of concentrated on one.
Here's how canonical tags work on Shopify, where they break, and how to fix them.
How Shopify Handles Canonicals by Default
Shopify adds a canonical tag to every page automatically. The logic varies by page type:
Product pages: The canonical always points to /products/product-handle, even when the product is accessed via /collections/collection-name/products/product-handle. This is correct — it concentrates link equity on one URL.
Collection pages: The canonical points to the collection page without parameters. So /collections/shoes?sort_by=price-ascending canonicalizes to /collections/shoes. This prevents sort parameters from creating duplicate indexed pages.
Blog posts: The canonical points to /blogs/blog-name/post-handle. Straightforward.
Static pages: The canonical points to /pages/page-handle. Also straightforward.
Paginated pages: /collections/shoes?page=2 canonicalizes to itself (not page 1). This is correct because page 2 has different content than page 1.
The homepage: Canonicalizes to your root domain with trailing slash consistency.
Where Canonicals Go Wrong on Shopify
Despite the good defaults, problems arise in specific scenarios:
Problem 1: Collection-filtered product URLs being indexed.
Even though /collections/shoes/products/product-name canonicalizes to /products/product-name, Google sometimes indexes both URLs if it finds the collection-path URL through internal links or sitemaps. This isn't a canonical failure per se, but it creates duplicate entries in Google's index that can split click data.
Fix: Ensure your internal links (navigation, content links, email links) always use the /products/ URL, never the /collections/../products/ URL. Also verify your sitemap only includes the canonical product URLs.
Problem 2: URL parameters not canonicalized.
Shopify handles sort_by parameters correctly, but other parameters might not be canonicalized. Third-party apps sometimes add tracking parameters (?ref=app-name, ?variant=123456) that create new URLs without proper canonicalization.
Fix: Audit your product pages with different parameters. Check if the canonical tag stays pointed at the clean URL regardless of parameters. If an app is adding parameters without canonical preservation, contact the app developer or add canonical override logic to your theme.
Problem 3: Multiple domains or subdomains.
If you have yourstore.com AND www.yourstore.com both active (or a development store URL still accessible), Google might index both. Shopify typically handles the www/non-www redirect, but if you've customized DNS or have legacy domains, check this.
Fix: Ensure all non-primary domains redirect with 301 to your canonical domain. In Shopify's domain settings, set your primary domain and ensure "Redirect all traffic to primary domain" is enabled.
Problem 4: International/multi-currency duplicates.
If you're using Shopify Markets with multiple currencies or languages, each version needs proper hreflang annotations AND canonical tags that point to itself (each language version is canonical for its own locale).
Fix: Shopify Markets handles this automatically for most setups, but verify with hreflang testing tools that each localized page canonicalizes to itself and includes hreflang tags pointing to its equivalents.
Problem 5: Tag pages and filtered collections.
Shopify's tag-based filtering creates URLs like /collections/shoes/tag-name. These can create thin, duplicate-ish content if tags produce similar product sets. The canonical on these pages often points to itself (the tagged URL), which means Google might index dozens of near-duplicate collection pages.
Fix: For tags that don't add unique value, use noindex meta tags to keep them out of Google's index entirely. Or consolidate tags so each filtered page has meaningfully different content.
Auditing Your Canonicals
Here's a systematic audit process:
Step 1: Crawl your site with Screaming Frog or Sitebulb. Look at the "Canonical" column. Verify that:
- Every page has a canonical tag
- Product pages canonicalize to /products/ URLs
- Collection pages canonicalize to parameter-free URLs
- No pages canonicalize to a different page incorrectly (page A shouldn't point to page B unless you intentionally want to consolidate them)
Step 2: Check Google Search Console. Under "Indexing" and then "Pages," look for:
- "Alternate page with proper canonical tag" — these are pages Google found but isn't indexing because the canonical points elsewhere. This is usually correct and expected.
- "Duplicate without user-selected canonical" — these are pages where Google found duplicates and chose its own canonical because yours was missing or unclear. Investigate these.
Step 3: Spot-check in browser. Visit 5 product pages via different paths (direct URL, from a collection, with parameters). View page source and check the canonical tag each time. It should always point to the same clean URL regardless of how you arrived.
When to Override Canonicals
Sometimes you need to change where the canonical points. Common scenarios:
Consolidating similar products. If you have "Blue Widget" and "Blue Widget - Updated" and want to merge them, you can add a canonical from the old page to the new page. This tells Google to transfer ranking signals to the new URL.
On Shopify, you'd need to either redirect the old URL (301 redirect, which is stronger) or modify the theme to output a custom canonical tag on specific pages (more complex).
Cross-domain canonicalization. If you sell the same product on your Shopify store AND on a marketplace with its own domain, you might want to canonicalize the marketplace page to your store. This is rare and complex — usually handled through the marketplace's SEO settings rather than Shopify.
Content syndication. If you publish a blog post on your Shopify blog AND syndicate it to Medium or another platform, the syndicated version should canonicalize back to your original. This prevents the syndicated version from outranking you for your own content.
Theme-Level Canonical Control
If you need to override Shopify's automatic canonicalization for specific pages, you can modify your theme's layout file.
In your theme.liquid or the relevant layout file, find the canonical tag output. It typically uses Shopify's canonical_url variable. You can add conditional logic:
If the page is X, output Y as the canonical. Otherwise, use Shopify's default.
This gives you page-level control when needed, while preserving automatic canonicalization for everything else.
Caution: Only override canonicals when you have a specific technical reason. Shopify's defaults are correct for 95% of pages. Overriding incorrectly can cause deindexation of important pages.
Canonical Tags vs. Redirects
When should you use a canonical tag vs. a 301 redirect?
Use canonicals when: Both pages exist and serve different purposes for users, but you want Google to only index one. Example: A product page with different sort parameters — users need the sort functionality, but Google only needs one version.
Use 301 redirects when: One page is permanently replacing another. The old page has no reason to exist for users. Example: You renamed a product and want the old URL to send visitors (and link equity) to the new URL.
Key difference: A canonical tag leaves both pages accessible to users. A redirect sends all visitors to the target URL. If the old page still has value for users (like filter functionality), use a canonical. If it's truly obsolete, redirect.
What To Do Right Now
View the source of your homepage, a product page, and a collection page. Find the canonical tag (search for "canonical" in the source code). Verify it points to the clean, expected URL.
Then go to Google Search Console. Check "Pages" under Indexing. Look for any "Duplicate" issues. These are your canonical problems showing up as indexing issues.
If you find problems — or if you're not sure how to interpret what you're seeing — book a call with our team. We'll audit your entire site's canonical structure and fix any issues that are splitting your SEO authority.

Written by Mark Cijo
Founder of GOSH Digital. Klaviyo Gold Partner. Helping eCommerce brands grow revenue through data-driven marketing.
Book a free strategy call →