Shopify product pages usually go unindexed for a few reasons: Google has not discovered the URL, discovered it but has not crawled it, crawled it and judged it too thin, found a noindex tag, or followed a redirect or canonical elsewhere. Open the Search Console Pages report, read the exact reason, and fix that one specific constraint.
You add products, submit the sitemap, and wait. Weeks later Google Search Console still shows most of your product URLs as not indexed. The store is live, the pages load fine, and nothing looks broken.
The common reaction is to request indexing on every URL, one at a time, and hope volume forces the issue. It rarely does. An unindexed product page is Google telling you something specific, and Google Search Console usually names the reason if you read the right report.
This guide works through the reasons in order, from the one that needs a single click to the ones that need a change to how the store is built. Find your reason first, then apply only the fix that matches it.
First, confirm the scale of the problem
Open Search Console, go to Indexing, then Pages. This report groups every URL Google knows about as indexed or not indexed, each with a named reason.
Before you touch a single page, answer one question: is this one product, or is it every product?
- A few specific products are missing. The cause is usually per page: thin description, a variant URL, a manual
noindex, or a recent publish that has not been crawled yet. - Every product, or an entire template, is missing. The cause is structural. Something about the theme, the app stack, the internal linking, or the URL structure is affecting the whole set. Fixing pages one at a time will not resolve a structural cause, and you will spend weeks proving that.
The Pages report shows the count next to each reason. If one reason holds hundreds of URLs, that is your starting point, not the single product you happened to notice.
Read the reason, then match the fix
Search Console's reasons are precise. Each one points at a different cause and a different action. These are the ones that actually land on Shopify stores.
"Discovered, currently not indexed"
Google knows the URL exists, usually from your sitemap, but has not crawled it yet. This is often a crawl budget and priority signal. On a new or low-authority store, Google queues the URL and does not get to it, or crawls it and decides it is not worth prioritising.
What helps: make sure the product is linked from pages Google crawls often, such as a collection page, the home page, or a related-products block. A product that exists only in the sitemap and nowhere in the site's own navigation gives Google little reason to prioritise it. Requesting indexing once is reasonable. Requesting it repeatedly does nothing.
"Crawled, currently not indexed"
Google fetched the page and chose not to index it. This is a quality and uniqueness judgement, not a technical block. On Shopify the frequent cause is a product description that is a short manufacturer blurb, or near-identical copy repeated across a range of similar products.
What helps: give the page genuine unique content. A few sentences that describe the specific product, who it suits, and what makes it different from the next one in the range. Observation, not a rule: pages that carry only a spec table and a one-line description are the ones that sit in this bucket longest.
"Duplicate without user-selected canonical" and "Alternate page with proper canonical tag"
Google found several URLs it considers the same page and either picked a different one as canonical, or could not decide. On Shopify this is almost always variant URLs. A product with colour or size options generates URLs like /products/item?variant=123, and filtered or sorted collection URLs multiply the same products across many paths.
What helps: this is usually working as intended. Shopify sets the canonical on a variant URL back to the main product URL, so the main URL is the one that should index. Check that the main /products/handle URL itself is indexed. If the canonical is pointing somewhere unexpected, inspect the theme and any SEO app that rewrites canonical tags.
"Excluded by 'noindex' tag"
The page is returning a noindex directive. Shopify does not add this to products by default, so something in your setup did.
What helps: view the page source and search for noindex. Common sources are an SEO or membership app, a noindex added to theme.liquid for a section that is matching product templates, a product set to the "Unlisted" status, or a seo.hidden metafield left on the product. Shopify's own documentation on hiding a page from search engines lists each of these mechanisms, which makes it a useful checklist for finding the one you did not mean to leave on.
"Page with redirect" and "Blocked by robots.txt"
The URL redirects elsewhere, or robots.txt is disallowing the path. Shopify's default robots.txt is sensible and does not block product pages, so a block here means a custom robots.txt.liquid edit or an app changed it. You can test your rules using the free Robots.txt Validator.
What helps: for redirects, check the URL Redirects section under Navigation for a rule that is catching product URLs. For a robots.txt block, review robots.txt.liquid in the theme code editor and remove the rule that covers /products/.
The reason-to-fix diagnostic table
| Search Console Reason | What It Means on Shopify | First Check | Fix | Wrong Move to Avoid |
|---|---|---|---|---|
| Discovered, currently not indexed | Known from the sitemap, not yet crawled or prioritised | Is the product linked from a collection or the home page | Add internal links from frequently crawled pages; request indexing once | Requesting indexing repeatedly on the same URL |
| Crawled, currently not indexed | Fetched, judged too thin or too similar | The product description length and uniqueness | Write genuine unique copy for the product | Assuming it is a bug and waiting it out |
| Duplicate without user-selected canonical | Variant or filtered collection URLs seen as the same page | Whether the main /products/handle URL is indexed |
Usually nothing; confirm canonical points to main URL | Adding manual canonical tags that fight Shopify defaults |
| Alternate page with proper canonical tag | A variant URL correctly deferring to the main product | The main product URL's status | None needed if the main URL indexes | Trying to force the variant URL to index |
| Excluded by 'noindex' tag | An app, theme edit, metafield, or Unlisted status added noindex | Page source for noindex, product status, seo.hidden metafield |
Remove the noindex at its source | Editing content before removing the block |
| Page with redirect | A redirect rule is catching product URLs | URL Redirects under Navigation | Delete the rule catching /products/ |
Rewriting the product page that is not serving |
| Blocked by robots.txt | A custom robots.txt.liquid edit or an app |
robots.txt.liquid in the theme editor |
Remove the disallow covering /products/ |
Leaving the block and building more pages behind it |
Where "not indexed" ends and "not visible" begins
Getting a page indexed is the first requirement, not the finish line. An indexed page can still be effectively invisible.
Observation, dated: on August 24, 2026, Daily Needs Association reviewed final Search Console data for its own website. Roughly fifteen distinct queries drew impressions across the month, every one with zero clicks, at average positions ranging from about 25 to about 99. The pages at the bottom of that range were indexed. They were simply not being shown to anyone in a position where a click was realistic.
The point for a store owner: if your product pages are indexed and still bring in nothing, indexing is no longer the problem to solve. The next question is position, and after that whether the result earns the click. Once a page is indexed and being shown but not clicked, see our diagnostic guide on diagnosing impressions without clicks.
What not to do
- Do not request indexing on the same URL more than once. It does not raise priority, and it resets nothing useful.
- Do not add manual canonical tags to fix a variant URL problem. Shopify already handles this, and a conflicting tag makes it worse.
- Do not publish more product pages while a whole template is stuck. You are adding to the unindexed pile, not diluting it.
- Do not treat "Crawled, currently not indexed" as a temporary glitch. It is a judgement about the page, and it clears when the page is worth indexing.
- Do not assume a new store just needs time. Time helps a discovery problem. It does not help a thin-content problem or a stray
noindex.
People also ask
/sitemap.xml that lists your products, collections, pages, and blog posts, and search engines can find it on their own. It does not guarantee indexing. Submitting the sitemap in Search Console and making sure products are internally linked both help Google find and prioritise the pages.
Get a second read on your store
RankMeHigher.online is a search-visibility project from Daily Needs Association. If your product pages are stuck as not indexed and the Search Console reason does not obviously match any of the causes above, DNA will look at how the store is built, which URLs Google is choosing, and the one structural fix worth making first.
Request a free DNA store review. No invented forecast, no obligation. The 18 free RankMeHigher client-side tools are a useful starting point on your own.