Implementation guide · 15 minute read · By Trevor Fenner
Some links below are affiliate links. Purchases through those links support SEO Paradise. Read our disclosure.
Most posts about Shopify SEO issues hand you a list of problems and a fix for each. The trouble is that you never see a problem. You see a symptom. Traffic drops, a product stops ranking, or Search Console shows 1,400 URLs as “not indexed.” Then you have to work backward to the cause.
This guide is built for that backward walk. For each common Shopify SEO problem you get the symptom, the likely cause, how to verify it with Search Console, a crawl or view source, the fix, and how to confirm the fix worked. I have been doing ecommerce since October 2010, and these days I manage SEO and Google Shopping ads for client stores through Ecommerce Paradise. These are the issues that come up again and again.
Keep this in mind before you start. Some things that look like issues are Shopify working as designed. Fixing those wastes time and sometimes breaks things. So the first section separates what is normal from what is not.
| What you see | Likely causes to test, in order | Normal or problem? |
|---|---|---|
| Many URLs listed as “Alternate page with proper canonical tag” | Collection path product URLs, variant URLs, filter URLs | Usually normal |
| “Duplicate, Google chose different canonical than user” | Theme links to collection paths, near-identical products, Markets duplicates | Problem worth checking |
| Product or collection missing from Google | Password on, noindex, unlisted status, not published to Online Store, weak page | Problem |
| Rising “Not found (404)” count | Deleted products, changed handles without redirects, old links | Problem if the URLs had traffic or links |
| Sudden traffic drop after a change | Theme switch, robots.txt.liquid edit, app install, domain change | Problem |
| Poor Core Web Vitals on product pages | App scripts, large images, heavy theme sections | Problem |
| “Crawled, currently not indexed” on collections | Thin or duplicate collection content | Problem |
Symptoms vs causes: start here
A symptom is what a tool reports. A cause is the thing in your store that produced it. The same symptom can have 3 different causes, and the fix for one can make another worse.
Take Shopify duplicate content. A crawler will flag hundreds of “duplicate pages” on almost every Shopify store. Most of them are collection path and variant URLs that already carry a canonical tag pointing to the main product URL. Google lists those as “Alternate page with proper canonical tag” in the Page indexing report. That status means Google understood your canonical. It is not an error.
So before you fix anything, ask 2 questions. Is a page I actually want ranking affected? And do I have evidence of the cause, not just the symptom? If the answer to either is no, write it down and move on. The Search Console indexing guide explains every status in more detail.
Duplicate product URLs via collection paths
- Symptom: the same product shows up in a crawl at /products/handle and at /collections/name/products/handle. Search Console may show “Duplicate, Google chose different canonical than user” on some products.
- Likely cause: the theme builds product card links with the collection path, so every internal link points at a duplicate URL.
- How to verify: open a collection page, view source, and search for /products/. If the card links read /collections/name/products/handle, this is your cause. Then check the canonical tag on that URL.
- Fix: change the product card snippet so it links to the plain product URL. In Liquid this usually means removing the within filter from the product URL.
- Confirm: recrawl the store. Internal links to collection path URLs should drop to near 0, and the canonical on any remaining ones should still point to /products/handle.
Shopify’s developer docs for the within filter warn that these collection-context URLs carry the same content on separate URLs. The canonical tag still points to the main product, and on Shopify’s Dawn demo store that is exactly what happens. But Google treats a canonical as a strong signal, not a guarantee. When thousands of internal links point at the other version, you are arguing with your own canonical.
This is a theme edit, so duplicate the theme first and make the change on the copy. If you are not comfortable in Liquid, it is a small job for a Shopify developer.
Faceted filter and tag pages
- Symptom: crawls report thousands of URLs with ?filter. parameters or /collections/name/tag paths. Search Console shows growing counts of “Crawled, currently not indexed” or “Duplicate without user-selected canonical.”
- Likely cause: filter links and tag links are crawlable, and the theme or a filter app creates a new URL for every combination.
- How to verify: visit yourdomain.com/robots.txt and look for the sort_by, plus sign and multi-filter rules. Then view source on a filtered URL and check its canonical tag.
- Fix: if the canonical points to the base collection and robots.txt is still the default, you are usually fine. If a filter app creates its own URL pattern, ask the app developer how it handles canonicals and crawl blocking.
- Confirm: after a few weeks, the count of filter URLs in Search Console reports should stop growing.
Shopify’s default robots.txt already blocks a lot here. On current stores it disallows sort URLs, tag combinations joined with a plus sign, and collection URLs with more than 1 filter. A single filter URL is still crawlable. On the Dawn demo store, a single filter URL and a single tag URL both carry a canonical pointing back to the base collection.
Google’s guidance on faceted navigation says you can block filter URLs in robots.txt or point them at a preferred page with a canonical. It also says the canonical approach is generally less effective long term than blocking. On Shopify, I leave robots.txt.liquid alone unless the crawl evidence is serious, because Shopify itself warns that a bad edit can cost you all your traffic.
One Shopify quirk to know. Collection tag URLs like /collections/name/tag cannot be redirected, even when no products have the tag. Shopify says so in its URL redirect help page. So if old tag pages are a problem, the fix lives in the theme, not the redirect manager.
Variant URLs
- Symptom: URLs with ?variant= followed by a long number appear in crawls, analytics or Search Console.
- Likely cause: variant pickers update the URL, and ads or feeds link to specific variants.
- How to verify: open a ?variant= URL and view source. The canonical should point to /products/handle without the parameter.
- Fix: usually nothing. If the canonical includes the variant parameter, the theme or an app has changed it, and that needs a developer.
- Confirm: the variant URLs show as “Alternate page with proper canonical tag” in Search Console over time.
This is the classic “looks like a problem, is not a problem” case. Variant URLs are normal on Shopify. Your Google Shopping feed often links to them on purpose so a shopper lands on the right color or size. Leave them alone unless the canonical is broken.
The one real variant issue I see is the opposite. A store creates separate products for every size or color instead of variants. Now you have 6 nearly identical product pages fighting each other. Merge them into 1 product with variants, and redirect the old URLs to the survivor.
Thin collection pages
- Symptom: collections get impressions but sit on page 2 or 3, or show as “Crawled, currently not indexed.”
- Likely cause: the page is a grid of products with a title and nothing else, and maybe only 2 or 3 products.
- How to verify: view the page as a buyer. Count the words outside the product grid. Then compare with the pages ranking on page 1 for the same query.
- Fix: add a short intro above the grid and a buying guide section below it. Merge tiny collections into a stronger parent if they target the same query.
- Confirm: use URL Inspection to request indexing, then track impressions and average position for the main query over 4 to 8 weeks.
Thin collections are the most common reason I see good stores stall. The product pages are fine, but the category pages that should catch “best X” and “X for Y” searches have nothing on them. If the status is “Crawled, currently not indexed,” the guide to that status covers the full diagnosis.
Missing or duplicate titles and meta descriptions
- Symptom: Google shows odd titles, or a crawl flags dozens of duplicate titles.
- Likely cause: empty SEO fields, so the theme falls back to the product name plus store name. Bulk imports that copied the same title into every product. Duplicated products that kept the original’s SEO fields.
- How to verify: run a crawl and export titles and meta descriptions. Sort for duplicates and blanks.
- Fix: write unique titles under 60 characters and unique meta descriptions for your top pages first. Fix duplicates in bulk with a CSV export and import if you have many.
- Confirm: recrawl and check the duplicate count. Then check the live search result for a few pages after Google recrawls them.
Shopify’s help docs say the admin allows up to 70 characters for titles but recommend 60 or fewer. They also note that Google can rewrite titles and descriptions based on page content. So a rewritten title is not always a bug. If Google keeps rewriting the same page, though, it is often because the title does not match what the page is about.
Indexability problems
- Symptom: a product, collection or page you care about does not appear in Google at all.
- Likely causes: the store is still password protected, the product is unlisted, the seo.hidden metafield is set, the product is not published to the Online Store channel, a theme or app added a noindex tag, or robots.txt.liquid was edited.
- How to verify: run URL Inspection in Search Console. It tells you if the page is blocked by robots.txt, marked noindex or never crawled. Then view source and search for noindex.
- Fix: remove whichever block applies. Check product status and sales channel in the admin, the seo.hidden metafield, and any custom robots.txt.liquid file.
- Confirm: run URL Inspection again with the live test, then request indexing.
Shopify gives you 3 ways to hide pages on purpose, which also means 3 ways to hide them by accident. Its page on hiding pages from search engines covers a noindex tag in theme.liquid, the seo.hidden metafield, and the unlisted product status. Unlisted products get noindex and nofollow tags and drop out of the sitemap, but the URL still loads.
I check this one first on any traffic drop. It takes 5 minutes, and when it is the cause, nothing else you do matters until it is fixed.
App-injected scripts and speed
- Symptom: poor INP or LCP on product pages in the Shopify web performance report or the Search Console Core Web Vitals report.
- Likely cause: too many app scripts, leftover code from uninstalled apps, oversized images or a heavy theme with many sections.
- How to verify: open a product page with browser developer tools, Network tab, and sort by domain. Note every third-party script. Match each one to an installed app, or flag it as leftover.
- Fix: remove apps that do not earn their load time. Remove leftover code. Compress and resize images. Cut unused sections from product templates.
- Confirm: wait for 30 days of new data in the web performance report, then compare the 75th percentile values with your baseline.
Shopify’s guide to improving web performance is blunt about this. Uninstalling an app does not automatically remove its code from your theme. It also points to excess JavaScript from theme code, app code and tag managers as the usual cause of slow interactions.
The speed fix is usually a business decision, not a code decision. That popup app might bring in emails. The question is whether it brings in more than the speed cost. Write down what each app does for revenue, and cut the ones that cannot answer.
Broken links after deletions and URL changes
- Symptom: “Not found (404)” counts climb in Search Console, or backlink tools show links pointing at dead pages.
- Likely cause: deleted products, changed handles without a redirect, or a migration where old URLs were never mapped.
- How to verify: export the 404 list from Search Console. Check which URLs had clicks or backlinks in the last 12 months. Crawl your own store for internal links pointing at 404s.
- Fix: create 301 redirects in Content, Menus, URL redirects to the closest live match. Update internal links to point at the new URL directly.
- Confirm: test each old URL in a browser and confirm it lands on the right page. Recrawl to confirm no internal links hit 404s or redirects.
Shopify does not auto-redirect deleted products. Its help docs say that if you delete a product, you can set up a redirect to a similar one, which means it is your job. They also note a catch. A redirect only works on a broken URL. If the old URL still loads a page, the redirect will not fire.
You can import redirects in bulk with a CSV, and stores not on Plus can create up to 100,000 of them. Do not redirect every dead product to the homepage, though. Send it to the closest replacement or the parent collection. If there is no real match, a clean 404 is fine.
International and Markets duplicates
- Symptom: the US product page ranks in Canada, or Search Console shows “Duplicate, Google chose different canonical than user” on localized URLs like /en-ca/products/handle.
- Likely cause: 2 domains or subfolders targeting the same language in the same market, hreflang tags missing or altered by the theme, or near-identical content across markets.
- How to verify: view source on a localized page and search for hreflang. Each version should list the others. Check that each international domain has its own sitemap submitted.
- Fix: set up markets so each language and region pair has 1 home. Localize prices, currency and shipping copy where you can.
- Confirm: URL Inspection on a localized URL should show the expected canonical, and impressions should start showing up in the right country report.
Shopify adds hreflang tags automatically for every international domain or subfolder you set up, according to its guide on managing international domains. The same page warns that 2 domains in 1 market targeting the same language may get flagged as duplicate content. Most issues here come from setup choices, not from Shopify itself.
Out-of-stock and discontinued products
- Symptom: ranking product pages lose traffic after stock runs out, or Search Console shows soft 404s on product pages.
- Likely cause: the product was deleted or archived, the page shows almost nothing when stock is 0, or the theme hides sold-out products in a way that empties the page.
- How to verify: check product status and inventory in the admin. View the live page while it is sold out. Check the Offer availability in the Rich Results Test.
- Fix: for temporary stockouts, keep the page live with a clear back-in-stock message and links to alternatives. For permanent discontinuation, redirect to the closest replacement or let the URL 404 if nothing fits.
- Confirm: the page stays indexed during stockouts, and old discontinued URLs land on the right replacement.
This one hits high-ticket stores hard. A single product might have taken months to rank, and it can earn thousands of dollars per sale. If you run a high-ticket dropshipping store, your supplier can discontinue a model without telling you. Never delete a ranking page on reflex. Keep it live with a note and a link to the successor model, or redirect it to that successor.
The real fix starts upstream. Suppliers who send discontinuation notices early save you a lot of SEO pain, and that is one more reason to vet them well. The guide on how to find high-ticket suppliers covers what to ask before you sign.
The order to fix them in
You will rarely have just 1 of these issues. Here is the triage order I use, from most to least urgent.
- Indexability problems on money pages. Nothing else matters if the page cannot be indexed.
- Broken URLs that had traffic or backlinks. Every week they stay broken, you lose the value.
- Theme links to collection path URLs. One template fix cleans up the whole store.
- Thin main collections. This is usually the biggest ranking opportunity.
- Duplicate titles on top products and collections.
- App scripts and speed.
- International duplicates, if you sell across markets.
- Filter and tag URL growth, only if crawl data shows a real problem.
- Variant URLs, which usually need nothing.
Work this list with evidence for each item and you avoid the trap of fixing what a tool flagged instead of what hurts the store. If you want a scoring method to rank your own findings, the Shopify SEO audit workflow lays one out. And for the prevention side, the Shopify SEO checklist covers what a healthy store looks like.
Frequently asked questions
Does Shopify cause duplicate content problems?
Shopify creates duplicate URLs through collection paths, variants and filters, but it also adds canonical tags that point to the main URL. Most of the time Google handles this fine. The real problems start when a theme links to the duplicate versions or when you create near-identical products yourself.
Should I worry about “Alternate page with proper canonical tag” in Search Console?
Usually no. On Shopify it mostly lists variant URLs, collection path URLs and filter URLs that correctly point to a main page. Check a few examples. If the canonical points where you want, leave it alone.
What should I do with a product I am discontinuing?
If there is a close replacement, delete or archive the old product and redirect its URL to the replacement. If it is coming back, keep the page live with a back-in-stock note. If there is no match at all, a 404 is fine.
Can I fix Shopify SEO issues without editing code?
Many of them, yes. Titles, descriptions, collection copy, redirects, product status and app cleanup all happen in the admin. The collection path link fix and some noindex fixes need a theme edit, so duplicate the theme and test first, or hire a developer for that part.
How long until fixes show up in Google?
It depends on how often Google crawls the page. Request indexing for key URLs with URL Inspection, then give it a few weeks. Search Console’s Validate fix flow can take about 2 weeks or longer to finish.
If your store has traffic but the growth has stalled, my team helps owners fix this kind of thing and grow the catalog through the high-ticket store scaling service. Otherwise, start with the triage list above and work 1 issue at a time.
Related SEO guides
Trevor Fenner publishes practical SEO guides through SEO Paradise, part of Ecommerce Paradise. His articles cover search strategy, content planning, on-page optimization, and technical foundations for business websites.
