"Alternate page with proper canonical tag" on Shopify
Search Console files these URLs under Why pages aren't indexed, which makes them look like a problem. On a Shopify store almost all of them are the theme doing its job. Here is what the reason means, why the list fills up, and how to find the few URLs in it worth a second look.
What the reason means
Every page on your store carries a canonical tag in its source. It names the address that should represent the page in search:
<link rel="canonical" href="https://yourstore.com/products/linen-shirt">
When Google finds a page whose canonical names a different address, and agrees with it, it indexes that other address and lists the first one as Alternate page with proper canonical tag. Google's help page for the report says that in this case the page correctly points to its canonical, which is indexed, so there is nothing you need to do.
Why a Shopify store has so many
Shopify serves the same product or collection at several addresses, and the theme's canonical tag ties each one back to the main page. On the Dawn-based theme we tested, these all point to the plain product or collection:
| What it is | Example address | Canonical points to |
|---|---|---|
| A product variant | /products/linen-shirt?variant=4401 | /products/linen-shirt |
| A product reached through a collection | /collections/shirts/products/linen-shirt | /products/linen-shirt |
| A product recommendation link | /products/linen-shirt?pr_prod_strat=… | /products/linen-shirt |
| A link with tracking parameters | /products/linen-shirt?utm_source=newsletter | /products/linen-shirt |
| A filtered collection | /collections/shirts?filter.v.availability=1 | /collections/shirts |
| A sorted collection | /collections/shirts?sort_by=price-ascending | /collections/shirts |
Every variant, every collection a product sits in, and every filter or sort a shopper can pick adds addresses like these. A store with a few hundred products can easily have more of them than real pages, and Search Console lists each one it has seen.
That's the result you want. Google indexes one page per product and per collection instead of every way of reaching it.
When a URL in the list needs a look
The list is worth checking for one thing: a real page you want in search. That means a product at /products/…, a collection at /collections/…, a page at /pages/…, a blog post, or your home page, with no extra parameters. If one of those is listed, its canonical names another address, and Google is indexing that address instead.
To find out which, paste the URL into URL Inspection at the top of Search Console. Under Indexing it shows the User-declared canonical, which is what the page's tag says, and the Google-selected canonical. Then view the page's source (Ctrl+U on Windows, Option+Command+U on a Mac) and search for canonical.
- The canonical points to a page you'd rather show, for example one of two near-identical products that you've deliberately tied together. Nothing to fix.
- The canonical points somewhere it shouldn't, such as another product, the home page, or a different domain. Something has changed the tag: usually an edit to the theme's
theme.liquid, or an app that writes its own canonical. Find which one and correct it there. - The source shows two canonical tags. The theme prints one and something else adds another. When they disagree, Google may ignore both and pick on its own. Remove the extra one at its source.
Going through a long list
Search Console shows up to 1,000 example URLs per reason. To sort them quickly:
- In Search Console, open Indexing > Pages, click Alternate page with proper canonical tag, and use Export (top right) to download the list.
- Open
Table.csvin a spreadsheet and filter out every URL containing?. Variants, filters, sorts, recommendation and tracking links all have one. - Filter out URLs containing
/products/after/collections/. Those are products reached through a collection.
Whatever is left is real-page addresses, usually a much shorter list. Those are the ones to inspect.
What not to do
- Don't request indexing for variants or filtered views. Google is already indexing the page they point to.
- Don't add noindex to them. Google advises against using noindex to choose between duplicates on your own site. The canonical is the right signal, and the theme already sets it.
- Don't block them in robots.txt. Google can't read the canonical of a page it isn't allowed to crawl, and can still index a blocked address without its content.
- Don't validate the fix. Search Console offers a Validate fix button for every reason. For these URLs nothing is broken, so validation can't clear them: they stay listed for as long as the variant or filter exists.
Our Index Check app reads a Search Console export for you. Upload the files you downloaded and it sorts every URL by the kind of Shopify page it is, marks variations like these as harmless, and lists the real pages that need a look. The files aren't stored. It's coming soon to the Shopify App Store. For pages that Shopify makes and Google can index on their own, see Shopify tag, vendor and type pages in Google.
Sources
- Search Console Help: Page indexing report.
- Google Search Central: How to specify a canonical URL.