All posts

Shopify Products Not Showing on Google? 12 Fixes for Product Indexing

Shopify products missing from Google? Learn 12 proven fixes for indexing problems, from draft status and noindex tags to sitemaps, canonicals and thin content.

You added 40 new products last month. You wrote the descriptions, shot the photos, set the prices. Then you searched Google for one of them and got nothing. Not a low ranking. Nothing at all.

That specific kind of silence is frustrating because it feels random. It almost never is. In practice, a Shopify product that never reaches Google is stuck at one of three gates: Google cannot find the URL, Google is being told not to index it, or Google looked at the page and decided it was not worth keeping.

This guide walks through the twelve things that actually cause it, in the order you should check them. Start at the top. The first four fixes take about ten minutes combined and they solve the majority of cases I see.

Table of contents

  1. Confirm the page is really not indexed
  2. Check the product status: Active, Draft or Unlisted
  3. Make sure the product is published to the Online Store channel
  4. Remove password protection and access restrictions
  5. Hunt down hidden noindex signals
  6. Check your robots.txt file
  7. Find the product in your sitemap, then submit it
  8. Sort out your domain setup
  9. Fix canonical tags and collection based duplicate URLs
  10. Repair broken handles with 301 redirects
  11. Rewrite thin and copy pasted product descriptions
  12. Kill orphan pages with internal links and structured data

1. Confirm the page is really not indexed

Before you change a single setting, find out what Google actually thinks of the URL. Guessing here wastes hours.

Two checks, in this order:

Run a site search. Type site:yourstore.com/products/your-product-handle into Google. If a result comes back, the page is indexed and your problem is ranking, not indexing. Those are completely different problems with completely different fixes. Note that the site: operator is rough and occasionally misses indexed pages, so treat it as a first signal rather than a verdict.

Use the URL Inspection tool in Google Search Console. This is the real answer. Paste the full product URL into the search bar at the top of Search Console. Google will tell you one of the following:

What Search Console saysWhat it means
URL is on GoogleIndexed. Your issue is rankings.
Discovered, currently not indexedGoogle knows the URL exists but has not crawled it yet. Usually a crawl priority or crawl budget issue.
Crawled, currently not indexedGoogle fetched the page and chose not to index it. Almost always a content quality or duplication issue. See fixes 9 and 11.
Excluded by noindex tagSomething on the page is telling Google to stay away. See fix 5.
Blocked by robots.txtA crawl rule is in the way. See fix 6.
Not found (404)The URL is broken. See fix 10.
Alternate page with proper canonical tagGoogle is indexing a different URL as the master version. See fix 9.

If you do not have Search Console set up yet, stop and do that first. Shopify does not give you access to your store’s root directory, so the HTML file upload verification method is not an option. Use one of these instead: paste Google’s HTML meta tag into the <head> of your theme.liquid file, verify through an existing Google Analytics or Google Tag Manager connection, or add a TXT record at your domain registrar for domain level verification. Diagnosing indexing without Search Console is like diagnosing a car by listening to it from across the street.


2. Check the product status: Active, Draft or Unlisted

This is the most common cause by a wide margin, and it got slightly more complicated in late 2025.

Shopify products now have three statuses, and only one of them is fully visible to Google:

  • Active. Live, buyable, crawlable, included in your sitemap. This is what you want.
  • Draft. Not published. No public product page exists, so there is nothing for Google to index.
  • Unlisted. Introduced in October 2025. The product page is live and buyable at its direct URL, but Shopify automatically adds noindex, nofollow tags to it and strips it out of your sitemap. It also disappears from collection pages, storefront search, predictive search and product recommendations.

Unlisted trips people up because the product looks perfectly normal from the outside. You can open the URL, add to cart and check out. It just never shows up on Google, and it never will, by design.

The fix: open the product in your Shopify admin and check the Status dropdown above the product title. If it says Draft or Unlisted and the product should be publicly discoverable, switch it to Active and save.

Worth knowing: Unlisted products are also excluded from the Shopify Catalog, which feeds product data into AI shopping surfaces. So an Unlisted product is invisible to both traditional search and the newer AI discovery channels.


3. Make sure the product is published to the Online Store channel

A product can be Active and still be invisible if it has not been published to the Online Store sales channel.

This happens constantly to merchants who started with POS, wholesale, a marketplace integration or a bulk CSV import. The product exists, the status is Active, inventory is in stock, and the sales channel field quietly says something other than Online Store. Shopify only includes items in the sitemap when the status is active and the sales channel includes Online Store, so the product never even makes it into the file Google reads.

The fix: open the product and look at the Publishing or Sales channels box in the sidebar. Confirm Online Store is checked. To catch this at scale, go to Products, filter by sales channel availability, select everything that is missing Online Store, and use the bulk editor to publish them in one pass.

Quick tip for bulk imports: add a Published column set to TRUE in your CSV before uploading, otherwise Shopify may bring products in unpublished depending on how the file is structured.


4. Remove password protection and access restrictions

If your storefront is password protected, Googlebot hits the password page instead of your product. It cannot crawl past it, and a sitemap reader cannot access your sitemap while the store is in private mode either.

This one is easy to forget on stores that launched in stages, or on a store that was briefly locked down for a redesign.

The fix: in your Shopify admin, go to Online Store, then Preferences, and check the password protection section at the bottom. Turn it off. Also check any market or region restrictions under Settings, Markets, in case an entire region including Google’s crawlers is being blocked or redirected somewhere unexpected.

After you remove it, expect a lag. Google needs to recrawl before anything reappears.


5. Hunt down hidden noindex signals

If Search Console says “Excluded by noindex tag” and the product looks fine in admin, there is a noindex instruction hiding somewhere. There are four common places to look.

The seo.hidden metafield. Shopify supports a system metafield called seo.hidden. Setting its value to 1 on a product, page or blog post hides it from your sitemap, from search engines and from your online store search. Open the product, scroll to the Metafields section and look for an SEO Hidden field. Clear the value and save to make it visible again. This is the metafield most third party SEO apps write to when you toggle “hide from search engines,” which is why it is worth checking even if you never added it yourself.

A leftover snippet in theme.liquid. Shopify documents a method for hiding pages by pasting conditional Liquid into the <head> of your theme layout, something along the lines of:

{% if handle contains 'page-handle-you-want-to-exclude' %}
  <meta name="robots" content="noindex">
{% endif %}

Developers add these during a launch and forget to remove them. Worse, a broad condition can catch products you never intended to hide. Go to Online Store, Themes, Edit code, open layout/theme.liquid, and search the file for noindex. Duplicate your theme before you touch anything.

SEO apps. Some SEO and product management apps have a bulk visibility feature that can apply noindex across whole collections or tag groups. If you installed one recently, check its settings. Also check apps you uninstalled, because uninstalling an app does not always remove the metafields or theme code it wrote.

The definitive check. Open the live product page, view the page source with Ctrl+U or Cmd+Option+U, and search for robots. If you see <meta name="robots" content="noindex">, you have found your culprit. If the page source is clean and Search Console still reports a noindex, run Test Live URL in the URL Inspection tool to see the current state rather than the cached one.


6. Check your robots.txt file

Shopify generates a solid default robots.txt that works well for most stores, and it is not included in your theme unless someone deliberately added it. That is the important part: if a robots.txt.liquid file exists in your Templates folder, somebody put it there on purpose, and it may contain a rule that is doing more damage than intended.

Visit yourstore.com/robots.txt in a browser and read it. You are looking for anything blocking /products/, or an overly broad wildcard rule. Shopify’s defaults sensibly block things like cart, checkout, account and internal search URLs. A custom rule that blocks product paths is a self inflicted wound and it can take out your entire organic traffic.

The fix: go to Online Store, Themes, Edit code, and look in the Templates folder for robots.txt.liquid. If you find a rule blocking product URLs, remove that rule. If the customization is not needed at all, deleting the template reverts you to Shopify’s default file automatically.

Shopify recommends using the built in Liquid robots object rather than replacing everything with plain text rules, because the default rule set is updated regularly to keep pace with best practice. Their own documentation is blunt about this: it is an unsupported customization, Shopify Support cannot help with it, and incorrect use can cost you all your traffic. Shopify’s guide to editing robots.txt.liquid is worth reading before you change anything.

One more thing worth checking here: if you use Cloudflare or any other proxy or firewall in front of your store, make sure it is not challenging or rate limiting Googlebot. That produces the same symptom with a completely different cause.


7. Find the product in your sitemap, then submit it

Shopify generates your sitemap automatically at yourstore.com/sitemap.xml. That root file is an index that links to separate sitemaps for products, collections, pages and blogs, named like sitemap_products_1.xml. Stores with very large catalogues get split across multiple numbered files, since the sitemap protocol caps each file at 50,000 URLs.

You cannot upload your own sitemap to Shopify, and you do not need to. What you need to do is verify two things.

Is the product actually in there? Open yourstore.com/sitemap.xml, click through to the products sitemap, and use Ctrl+F to search for your product handle. If it is missing, the problem is upstream: go back to fixes 2, 3 and 5. A missing sitemap entry is nearly always a status, sales channel, Unlisted or seo.hidden issue. The sitemap is a symptom, not the disease.

Has the sitemap been submitted? In Google Search Console, open the Sitemaps report and add sitemap.xml if it is not already listed. Check the status. If it reads anything other than Success, click into it and read the error. A sitemap that was submitted while the store was password protected can sit in a failed state for a long time without anyone noticing.

Then, for a small number of high priority products, use URL Inspection and click Request Indexing. This nudges the crawl queue for that URL. It is not a magic button and it will not override a quality decision, but for a genuinely new page it helps. Do not bother doing this for hundreds of URLs. There is a daily quota, and at scale the sitemap plus solid internal linking does the job far better.


8. Sort out your domain setup

If Google indexed the wrong version of your store, your products can appear to be missing when they are really sitting at an address nobody searches for.

Three things to check:

Your primary domain. Go to Settings, Domains. One domain should be marked as primary, and every other domain you own should redirect to it. If you have several domains all serving the same content without redirects, you are splitting your signals across multiple copies of the same store.

Your .myshopify.com URL. Shopify handles this correctly by default, so it should not be indexed instead of your custom domain. But it is worth confirming with a site:yourstore.myshopify.com search. If that subdomain is showing up in results, your domain configuration needs attention.

HTTP versus HTTPS and www versus non www. Shopify manages SSL and these redirects for you, but a misconfigured DNS setup or a third party proxy can break it. Test by typing all four variations into a browser and confirming they all land on the same final URL.

If you sell internationally with Shopify Markets, remember that stores on the Basic plan and above get separate sitemaps for each additional international domain. Each of those domains needs to be verified separately in Search Console.


9. Fix canonical tags and collection based duplicate URLs

Shopify serves the same product at more than one address:

  • yourstore.com/products/blue-widget
  • yourstore.com/collections/summer-sale/products/blue-widget
  • yourstore.com/collections/all/products/blue-widget
  • and the same again with ?variant= or ?utm_source= parameters attached

By default, Shopify sets the canonical tag on all of these to point back to the clean /products/blue-widget URL. That is correct behaviour, and for most stores it means duplicate content is a non issue. There is no duplicate content penalty. John Mueller has said this repeatedly.

Two things still go wrong.

The canonical gets broken. A theme edit, a custom build or an app can strip or overwrite the {{ canonical_url }} object in theme.liquid. When that happens, collection scoped URLs start self canonicalising and Google sees several competing copies of one product. Check it by opening a product from inside a collection, viewing page source and searching for rel="canonical". The href should be the clean /products/ version, not the long one with the collection path.

Your internal links point at the wrong URLs. This is the sneakier one, and most Shopify themes do it out of the box. Collection grids often use the Liquid within: collection filter, so every internal link from a collection page goes to the long duplicate URL instead of the canonical one. Canonicals are a strong hint, not a directive, so when every internal link disagrees with the canonical you are actively splitting link equity and burning crawl budget on duplicates.

The fix: search your theme’s .liquid files for within: collection and remove it so product links resolve to the clean URL. Themes copy that code into several files, so check all of them, not just the first match. On a store with 50 products this is not worth losing sleep over. On a store with 500 products across multiple collections, it compounds fast and it is one of the highest value technical fixes available to you.

While you are in there, think about faceted navigation. Filter and sort parameters can generate thousands of near identical URLs that eat crawl budget your real products need. Shopify’s default robots.txt blocks a lot of these, which is another argument for leaving it alone.


10. Repair broken handles with 301 redirects

Every time you edit a product’s URL handle, the old URL breaks. Shopify usually offers to create a redirect, but that checkbox gets unticked, and CSV imports and bulk edits bypass it entirely.

The symptom in Search Console is “Not found (404)” or “Soft 404” on URLs that used to work. You lose the rankings and any backlinks that pointed at the old address.

The fix: go to Online Store, Navigation, then URL Redirects, and create a redirect from the old path to the new one. Shopify handles this as a 301, which passes ranking signals across.

While you are there, watch for redirect chains. If handle A redirects to B, and B redirects to C, clean it up so A points straight at C. Chains slow crawling and dilute signals. Also make sure you are not redirecting discontinued products to your homepage in bulk. Google often treats a mass homepage redirect as a soft 404. Sending a discontinued item to the closest relevant product or its parent collection is a better answer for both Google and your customers.


11. Rewrite thin and copy pasted product descriptions

This is the fix nobody wants to hear, and it is the one that matters most once the technical checks pass.

If Search Console says “Crawled, currently not indexed” on a product page with no technical problems, Google is telling you something specific: it fetched the page, evaluated it, and decided it does not add enough unique value to justify a slot in the index. Resubmitting through Request Indexing will not change that. Google will just reclassify it the same way. The fix is on the page itself.

Common triggers on Shopify stores:

  • Manufacturer descriptions. If you dropship or resell, your description is identical to the text on 400 other stores. Google already has that content indexed. It does not need another copy.
  • Near identical variant products. Twelve separate products for twelve colours of the same shirt, each with the same 30 words of copy. Consolidate them into one product with variants.
  • Descriptions with almost no text. A single line and a spec table is not much for Google to work with.
  • Templated copy. The same paragraph with the product name swapped in reads like a template, because it is one.

The fix: write something only you could write. Who is this product for, and who is it not for. How it fits or performs in real use. What it compares to and why someone would choose it over the alternative. What is in the box. Sizing quirks. Care instructions. Answers to the questions your support inbox actually receives.

Customer reviews help here as well, because they add genuine unique text to the page over time and they keep it changing.

You do not need this on all 3,000 SKUs. Start with the 50 products that would make you the most money if they ranked. Fix those properly, watch them get indexed, and then work down the list.


Google finds pages by following links. A product that sits in your sitemap but has no internal links pointing at it is an orphan, and orphans get crawled last and indexed reluctantly. Sitemap inclusion tells Google a URL exists. Internal links tell Google the URL matters.

This is a common quiet failure on large catalogues. Products get buried on page 14 of a collection, or they are not assigned to any collection at all, so nothing on the site links to them.

The fix:

  • Make sure every product belongs to at least one collection, and that automated collection rules actually match the product’s tags and conditions. An automated collection with a rule nobody has reviewed since launch will silently exclude new products.
  • Link to important products from your blog posts, buying guides and homepage.
  • Use related products or “you may also like” sections so products link to each other.
  • Keep every product within about three clicks of the homepage.
  • Add descriptive anchor text. “Waterproof hiking boots” tells Google more than “click here.”

While you are improving how Google understands these pages, check your structured data. Most Shopify Theme Store themes output Product schema, but apps and custom edits can break it, and broken schema tends to fail silently. Run a few product URLs through Google’s Rich Results Test and confirm the Product markup is detected with a valid name, image, description, price and availability. Valid schema does not force indexing on its own, but it helps Google interpret the page and it is what makes rich results like price and stock status possible in the SERP.


How long should all this take to work?

Set expectations properly, because impatience causes people to undo good fixes.

  • Technical blockers such as noindex, robots.txt, password protection and status changes: Google typically picks these up within a few days to two weeks after a recrawl.
  • New products on an established store with healthy internal linking: often a few days to a couple of weeks.
  • New products on a brand new store with no authority: several weeks is normal, and some pages will not be indexed at all until the domain earns more trust.
  • Content quality fixes: these are the slowest. Expect weeks, and expect partial results.

Check the Page Indexing report in Search Console about 48 hours after your fix, then again at seven days. If you used the Validate Fix button, give Google a proper monitoring window before drawing conclusions. Do not keep hammering Request Indexing. It does nothing useful after the first submission.

One important reality check: not every URL should be indexed, and not every unindexed URL is a defect. Statuses like “Alternate page with proper canonical tag,” “Excluded by noindex tag” and “Page with redirect” are usually signs your architecture is working correctly. The URLs to care about are the ones you want ranking that are sitting in “Crawled, currently not indexed” or “Discovered, currently not indexed.”


Frequently asked questions

Why is my product visible on my storefront but not on Google? Most often the product is Unlisted, has the seo.hidden metafield set, has a noindex tag applied by a theme edit or SEO app, or it is simply too new to have been crawled. Run the URL through the URL Inspection tool in Search Console to see which one applies.

Does Shopify submit my sitemap to Google automatically? Shopify generates and updates the sitemap automatically, but it does not submit it to Search Console for you. Add it manually once in the Sitemaps report and Google will keep re-reading it.

Can I upload my own sitemap to Shopify? No. Shopify only serves its auto generated sitemap. You can add extra sitemap URLs through a custom robots.txt.liquid template, but you cannot replace the main file.

Why do out of stock products drop out of Google? This is more commonly a merchant decision than a Google one. Deleting or unpublishing a discontinued item creates a 404 and throws away the rankings and backlinks that page had earned. Availability is also part of your Product structured data, so an out of stock item can lose its rich result treatment even while the page stays indexed. Keep the page live with a restock notification, alternative suggestions and reviews, and only redirect it if the product is gone for good.

How many products should I request indexing for? A handful of your highest value pages. There is a daily quota and it is not designed for bulk work. For everything else, rely on the sitemap and internal linking.

Is duplicate content from collection URLs hurting my store? There is no penalty for it, and Shopify’s default canonicals handle it for most small stores. It becomes a real problem on larger catalogues where internal links point to the duplicate versions, because link equity fragments and crawl budget gets wasted.


The short version

Work through it in this order and you will find the problem quickly:

  1. Check Search Console first so you are fixing the real issue, not a guess.
  2. Product status: Active, not Draft, not Unlisted.
  3. Published to the Online Store sales channel.
  4. Password protection off.
  5. No noindex from metafields, theme code or apps.
  6. No robots.txt rule blocking /products/.
  7. Product present in the sitemap, sitemap submitted.
  8. Clean domain setup with one primary domain.
  9. Canonicals pointing to clean product URLs, internal links agreeing with them.
  10. 301 redirects in place for any changed handles.
  11. Unique, genuinely useful product descriptions.
  12. Every product linked from somewhere, with valid Product schema.

Nine times out of ten the answer is in the first five. The tenth time it is fix number 11, and that one is worth the effort anyway, because a product description written for real buyers converts better whether or not Google ever notices it.