Missing Canonical Link
A canonical link (<link rel='canonical'>) tells search engines and Google Shopping which URL is the primary version of a product page when multiple URLs serve the same content. Common duplicate URL scenarios: tracking parameters (?utm_source=ads), filter parameters (?color=blue&size=m), session IDs, http vs https, www vs non-www. Without a canonical, Google may not know which URL to treat as authoritative — leading to duplicate product flags and split ranking signals.
Missing canonical link / Canonical URL not setImpact: Missing canonical links don't disapprove products but create SEO and tracking confusion. Google uses canonical URLs to identify the 'preferred' version of a page when multiple URLs serve the same content. Without canonical links, Google may treat URL variants as separate pages, diluting your organic authority and creating feed-level duplicate product issues.
Root Causes
- 1Your product pages don't output <link rel='canonical'> in the <head> section.
- 2Canonical links exist but point to the wrong URL — e.g., pointing to the category page instead of the product page.
- 3Theme/framework doesn't automatically generate canonicals for product variants (e.g., /products/shirt?variant=blue pointing to itself instead of /products/shirt).
- 4Multiple URLs serve the same product (e.g., /product/123 and /shop/shirt both show the same content) without canonical coordination.
- 5Tracking parameters and filters create URL variations but canonical tags don't account for them.
Fix by Platform
- 1Shopify themes include canonical tags by default. Check your theme's theme.liquid file: search for 'canonical' — you should see a <link rel='canonical' href='...'>.
- 2For variant URLs (?variant=123): Shopify's default canonical points to the product URL without variant — good for avoiding duplicate content issues.
- 3For heavily customized themes: verify canonical is still output. If missing, add to theme.liquid <head>: <link rel='canonical' href='{{ canonical_url }}'>.
- 4For pages with tracking parameters: ensure canonical excludes tracking params. Shopify's default {{ canonical_url }} does this correctly.
- 5Test with Google Search Console's URL Inspection tool — it shows the detected canonical URL for any page.
<!-- In theme.liquid <head> -->
<link rel="canonical" href="{{ canonical_url }}">When This Doesn't Apply
Check your store now
Free compliance scan — 47 rules checked in minutes.
Frequently Asked Questions
What URL should the canonical point to for a product page?+
The main, clean product URL without any tracking parameters or variant selectors. For example, if your product is at yourstore.com/products/blue-shirt and also accessible at yourstore.com/products/blue-shirt?utm_source=ads&variant=123, the canonical on all variations should point to yourstore.com/products/blue-shirt. This consolidates SEO signals and prevents Google from seeing the variants as separate products.
How does a missing canonical affect Google Shopping?+
Indirectly. Shopping doesn't parse canonical tags directly, but Google's broader systems do. If product pages have URL variants creating duplicate indexed content, your organic search authority splits across variants — weakening the product's overall ranking. For Shopping specifically, missing canonicals can cause duplicate feed flags when Google sees two URLs for the same product.
Can a canonical point to a different page?+
Yes, but carefully. Cross-URL canonicals are used when one page is truly a duplicate of another — like syndicated content pointing to the original source. For e-commerce: variant pages often canonicalize to the base product page. Never canonicalize product A to product B unless they're literally the same product sold under different URLs. Misuse can tank ranking.
How do I check if my pages have canonical tags?+
Right-click any product page → View Page Source → search for 'canonical'. You should see <link rel='canonical' href='...'>. Alternatively: Google Search Console → URL Inspection → enter your URL → it shows the detected canonical. If the canonical is empty, missing, or wrong, fix it by configuring your SEO plugin or theme.