Definition
A canonical tag is a link element carrying the attribute rel set to canonical, placed in the head of a page, that names the URL a store considers the preferred version of that content. Search engines treat it as a strong hint rather than an instruction: it is one of several signals they weigh, alongside internal links, redirects and sitemaps, when deciding which of several similar URLs to index and rank.
A product reachable at several addresses
- Preferred URL
- /products/merino-crew-sweater
- Reachable through a collection
- /collections/knitwear/products/merino-crew-sweater
- Reachable with a campaign parameter
- The same product URL with tracking parameters appended by an email or ad click
- Reachable with a variant selected
- The same product URL with a variant parameter appended by the size or colour picker
- Canonical on all four
- A link element in the head, with rel set to canonical and href set to the absolute preferred URL
- Effect when the hint is accepted
- Signals from every version consolidate on the preferred URL, and that is the one shown in results
- Effect when it is not
- Search Console reports the page as a duplicate where the search engine selected a different canonical, which is a prompt to check the other signals
An illustrative set. Platforms handle much of this automatically, so the work is usually verifying what is actually being output rather than writing the tags by hand.
Why it matters
Canonical tags matter because ecommerce platforms generate the same content at many addresses by design. Collection paths, variant parameters, tracking parameters, print views and pagination all produce URLs a crawler can reach, and without a preferred version the ranking signals a product has earned end up divided among them. Consolidation also protects reporting: one URL in search results means one set of clicks and impressions to read, rather than a product's performance scattered across five near-identical rows. On stores with a large catalogue, correct canonicals are usually the cheapest structural improvement available.
Where it goes wrong
- Pointing every paginated page at the first page, which tells search engines the products listed further in do not exist as far as indexing is concerned
- Sending a canonical to a URL that redirects, is blocked from crawling or returns an error, which leaves the signal unusable and the duplicates unresolved
- Injecting the tag with JavaScript after the page loads or placing it outside the head, where it is not reliably read
- Using a canonical where a redirect belongs: if a URL should never be served again, redirect it, because a canonical leaves the old address live and reachable
- Canonicalising genuinely different pages to one another, such as pointing every colour variant page at a single parent when each has its own demand and its own content
Questions about canonical tag
What does it mean when a search engine ignores a declared canonical?
It means the other signals on the site pointed somewhere else and outweighed the declaration. Internal links favouring the alternative address, that address sitting in the sitemap, a redirect in the path, or two pages being close enough that the more frequently seen one wins are the usual explanations. The remedy is to align every signal on the preferred URL rather than to restate the tag.
Should every page have a self-referencing canonical?
It is a reasonable default and most platforms output one automatically. A self-referencing canonical costs nothing, states the preferred form of the address including protocol and trailing slash convention, and prevents parameter-laden versions of the page from being treated as separate. The important part is that it names the correct absolute URL rather than a relative or incorrect one.
Do canonical tags pass ranking signals between pages?
When accepted, the versions are treated as one and the signals consolidate on the chosen URL, which is the point of using them. It is not a transfer mechanism to be used between unrelated pages, and pointing a page at something with different content will usually be ignored. Treat it as a way to describe duplicates, not as a way to move value around a site.