Shopify Soft 404 in Search Console: Causes and Fixes
Why Search Console flags Shopify pages as soft 404: emptied collections, out-of-range pages, no-result filters. Plus a table: leave, redirect or return a 404.
Quick answer: A soft 404 is a page that loads with a normal success status (200) but looks empty or like an error, so Google treats it as “not found” and leaves it out of its index. On Shopify the usual sources are collections with no products, page numbers past the end of a collection, filter URLs with no matching products, and discontinued products. Google’s advice is a real 404 for pages that are truly gone, a redirect only where the content has moved to a close replacement, and not a blanket redirect to the homepage. Many of these URLs are fine left alone, so sort the list into groups before you change anything.
You open Search Console, go to Indexing, then Pages, and under “Why pages aren’t indexed” there is a row called Soft 404. It might be a handful of URLs, or a long list on a store with a lot of filters and a changing catalogue.
There are two quick answers to that row: “redirect everything” and “ignore it”. Each is right for some URLs and wrong for others. The useful question is not “how do I get this number to zero”. It is “which of these URLs should exist, which should send shoppers somewhere better, and which should simply be gone”.
This guide covers what Google says a soft 404 is, where Shopify stores produce them, what I saw on real stores, and a decision table for three options: leave it, redirect it to a relevant collection, or let it return a real 404. It also tackles the claim that redirecting to the homepage causes soft 404s, which is half true, and the half matters.
A note on dates: the Google and Shopify help pages quoted here were read on 30 October 2026, and what I describe about Shopify’s behaviour was tested the same day, on one demo store and two live stores. Help pages, themes, apps and defaults change, so check your own store before you rely on any of it.
What a soft 404 is, in Google’s words
Google’s page on HTTP status codes explains the mechanism. When a URL returns a 2xx (success) status, Google considers the content for processing. If that content suggests an error, an empty page or an error message, Search Console shows a soft 404.
A real 404 is a clear instruction: Google says it does not use content from URLs that return 4xx codes, and that already indexed URLs returning a 4xx are removed from the index. A soft 404 is a mixed message that Google has to guess about.
The Page indexing report help adds three things:
- It sits under “Not indexed”. Google introduces that group as pages not indexed, but not necessarily because of an error. A soft 404 is a classification, not an alarm.
- It is Google’s judgement. The wording is “what we think is a soft 404 response”.
- It cuts both ways. Google recommends a 404 status for pages that are truly not found. For pages that are not truly missing, it says to add more information so Google can tell they are real.
So two problems hide under one label: URLs that really are empty or gone and need a decision, and real pages that Google mistook and need a look at what Google actually saw.
Is a soft 404 a problem for your store?
Not automatically. Google’s report help says not to expect every URL on a site to be indexed and that non-indexed URLs can be fine. Its help page on 404 errors says 404s do not harm your site’s indexing or ranking, and that a 404 is the right response for a deleted page with no replacement.
The Google pages I read do not say soft 404s drag down the rest of your site, and I will not claim they do. The direct effect is that the URL is not indexed, which is harmless if it was never meant to rank. It costs you when:
- the URL should earn orders, such as a product you sell or a collection a buyer would search for, and Google has misjudged it;
- the URL used to have links, traffic or sales and now shows an empty page;
- your own menus, emails or ads send shoppers to it, so real people land on “No products found”.
That last one is a conversion problem, not only a search problem. Fixing the link is worth doing even if Google never mentions the URL.
Step zero: sort the list before you fix anything
Open the Soft 404 row in the Page indexing report and look at the examples. Google says the examples list is limited to 1,000 rows and does not necessarily show every URL with the issue, so on a large store the list you see may be only part of the problem. Sort what you can see, then check the report again after each fix.
Put every URL in a spreadsheet and tag it. These are the groups I use for a Shopify store:
- Collection pages with no products
- Collection pages with a page number (
?page=) - Collection pages with a filter in the address
- Search result pages (
/search?q=) - Product pages
- Everything else (pages, blog posts, app URLs)
For each URL, check the HTTP status it returns and what the page shows. You can see the status in your browser’s network panel, with curl -I, or in Search Console’s URL Inspection tool. Run the live test and click View tested page to see the raw HTML and HTTP headers for the page as it is now. Google’s help says that extra response data is available only when the live test status is “URL is available to Google” (or with issues), and View crawled page, which shows what Google received at the last crawl, only for URLs that are on Google, so it is usually not available for a URL in the Soft 404 group. If a URL returns a real 404 today but is still on the list, the report may reflect an older crawl: Google’s help says you may have fixed the issue after the last crawl, so check the crawl date. The URLs that matter most return 200 and show an empty or near-empty page.
Where Shopify soft 404s come from
Here is what I saw on 30 October 2026. It is a small sample, so treat it as a map of what to check on your store, not a rule.
| What I requested | What came back | What it means |
|---|---|---|
| A collection that exists but has no products (demo store) | 200, “No products found” message, canonical pointing to itself | The classic soft 404 shape |
A page number far past the end (?page=9999) | 200 and a self-referencing canonical on all three stores; empty message on the two where I checked the text | Not a real 404 |
| A price filter nothing could match | 200, empty message, canonical pointing to the parent collection (two stores) | Empty, but already consolidated |
| A search for a nonsense term | 200 with an X-Robots-Tag: noindex, nofollow header (two stores) | Already told not to index |
| A collection or product that does not exist (demo store) | 404 | Real 404 |
Now each group.
Collections with no products
On the demo store, a published collection with no products returned 200 and showed the theme’s empty-state message. It had a self-referencing canonical, no noindex, and was listed in the store’s collections sitemap. That is a textbook soft 404: a success status, an empty-page message, and the store offering the URL to Google in its own sitemap.
How do collections end up empty? My reading, not something Shopify documents (its help page on smart collections does not say what happens when nothing matches): an automatic collection whose conditions stop matching, such as a seasonal tag you removed; products moved to draft or archived; or a launch collection emptied after the drop.
There are two sub-cases with different answers.
It will refill. A “Summer” or “Sale” collection that is empty in October will not be empty in December. Do not delete it or redirect it, because you will want that URL back. Leave it alone, keep it live with useful content (a short note on when it returns and links to related collections), or add a noindex that switches itself off when products return (below).
It is gone for good. Is there a close replacement a shopper would accept? If yes, redirect there. If not, let it return a real 404.
Here is the Shopify catch that trips people up. Shopify’s help page on URL redirects says you can redirect only from broken URLs: if the URL still loads a valid page, the redirect will not work. An emptied collection that is still published loads a valid page. So first make the old URL return a 404 (hide the collection from the Online Store sales channel, or delete it), then create the redirect. Shopify’s help says hidden collections and drafted products return 404s, and that if you make a hidden collection visible again its redirect is deleted automatically, a useful safety net for the “will refill” case.
Page numbers past the end of a collection
On the stores I tested, requesting page 9999 of a collection gave a 200 with a canonical tag pointing to that same URL on all three, and an empty-page message on the two where I checked the text. Shopify’s documentation for the paginate tag and object does not say what happens past the last page, so I am describing what I saw, not a documented rule.
These URLs mostly come from catalogue changes. A collection had twelve pages of products and now has eight, and Google remembers pages nine to twelve, or an old link, an app or a bot still points at them. A theme or app that prints a “next page” link past the end does it too.
Google’s pagination guidance says each page in a sequence should have its own canonical URL, so the self-referencing canonicals I saw are correct for pages that exist. Past the end, I did not find a documented way to change the response on Shopify, and Shopify’s redirect help says URLs containing query strings “might not work” as redirects, so test one before planning around redirecting ?page= addresses.
My decision here is almost always leave it, with one check: does any link on your own site, or in an app, point to a page number that does not exist? If so, fix the link. If the only source is Google’s memory of old pages, the entry is harmless.
Filter URLs with no results
Shopify’s storefront filtering adds parameters to the collection address. When nothing matches, the page still loads. On the two stores where I tried it, the response was a 200 with an empty message and a canonical tag pointing to the parent collection, not to the filtered address.
Google’s guidance on faceted navigation is explicit about this case: return a 404 when a filter combination does not return results, and do not redirect to a common “not found” page, with an exception for single-page apps. On a Shopify theme I did not find a documented setting that changes the status code of a filtered view, so the 404 Google describes is not something a store owner can normally switch on.
What you can control is how these URLs are discovered and treated:
- Shopify’s help says its default robots.txt blocks
+-joined multi-tag URLs and sorted URLs, and the demo store’s file also blocked URLs with two filter parameters. Read your own atyourstore.com/robots.txt, because defaults change and Shopify treats editing it as an unsupported customisation. Our Shopify robots.txt guide covers how to look at it safely. - The canonical pointing to the parent collection is the signal Google calls strong for consolidating duplicates, which is one reason some filter URLs show as Alternate page with proper canonical tag rather than as soft 404.
- The bigger risk is your own links. If an email, ad or menu item points at a filtered address that can be empty, shoppers land on a dead end. The wider filter problem is in Shopify filter URLs and index bloat.
My decision is leave it, unless you link to a filtered address on purpose. Then it should be a real collection, not a filter.
Search result pages
On the two stores where I tried /search?q= with a nonsense term, the response was a 200 with an X-Robots-Tag: noindex, nofollow header. Shopify’s help on robots.txt says /search is not in the current default rules, so the noindex header is the control I saw in place. Google’s report help lists “URL marked ‘noindex’” as its own status, and I would expect search URLs to show there, but Google does not say which label wins when a page is both empty and noindexed. If search URLs appear in your Soft 404 list anyway, check their response headers: a search app or customised theme may behave differently, and Shopify’s help on hiding a page from search engines shows a conditional noindex for the search template as one option. Find what sends Google to those URLs rather than redirecting them.
Products: sold out versus discontinued
A sold-out product that will come back is a real page with a title, photos, description and price. Keep it live, make the status clear, and link to similar products. That is the “more information” Google asks for on a page that is not truly missing. If one is flagged, look at what Google rendered in URL Inspection before assuming it is thin: a page that depends on an app or script to show its content can look empty if that script fails.
A discontinued product is different. Shopify’s help uses this as its own example: delete the product and redirect its URL to a similar product. Drafting a product, or removing it from all sales channels, makes it return a 404 and become eligible for a redirect. Google’s 404 help agrees: redirect if content has moved, 404 if it is deleted with no replacement.
”Redirect to the homepage causes soft 404s”: what Google says
One source I read stated flatly that redirecting to the homepage creates soft 404s. I checked Google’s own pages, because “flatly” is not how Google words things.
- The help page on 404 errors tells site owners not to create fake content, redirect to the homepage, or use robots.txt to block 404s.
- Google’s guidance on site moves says not to redirect many old URLs to one irrelevant destination, such as the home page, because it can confuse users and might be treated as a soft 404. It says to map old URLs to matching new ones, and that redirecting several old pages to one new page is fine when you have genuinely consolidated their content.
So the accurate version is that Google advises against sending unrelated URLs to the homepage, and one of its pages says this “might be treated as” a soft 404. It does not say every homepage redirect is classified that way, and I would not repeat it as if it did. The practical rule is the same: redirect to the closest page that answers what the shopper was looking for, and if none exists, let the URL 404.
This matters on Shopify because the platform makes the shortcut easy. Shopify’s help says to enter / in the Redirect to field to send a URL to your home page. It works. It is also the wrong default for a collection or product that had a real purpose.
The decision: leave, redirect or return a 404
Ask three questions of each group.
- Should this URL exist? If yes and it is empty for now, you are managing a page. If no, you are removing one.
- Is there a close replacement? A page that answers what the shopper wanted, not just another page on the site.
- Can Shopify actually do what I want? A redirect needs a URL that returns 404. A real 404 for a filter or page-number URL is not something I found a documented way to set.
| Situation | Decision | How, on Shopify |
|---|---|---|
| Collection empty, will refill | Leave, or keep live with real content | Add a note and related links; optional conditional noindex |
| Collection retired, close replacement exists | Redirect (301) | Hide or delete it first, then redirect to the closest collection |
| Collection retired, no close replacement | Real 404 | Hide or delete it, create no redirect, remove it from menus |
| Page number past the last page | Leave | Fix any internal link that points past the end |
| Filter URL with no results | Leave | Do not link to it; keep default robots rules; do not redirect |
| Search result URL | Leave | Confirm the noindex header; find what links to it |
| Sold-out product that will return | Leave, keep live | Show status and alternatives |
| Discontinued product, close replacement | Redirect (301) | Draft or delete, then redirect to the replacement |
| Discontinued product, no replacement | Real 404 | Draft or delete, create no redirect |
Two rules sit behind the table. Use a 301, because Google treats it as a strong signal that the target should be processed and a 302 as a weak one. And check the destination first: a redirect into an empty page is a soft 404 with an extra step.
How to carry out each option
Redirect to a relevant collection
- Make the old URL return a 404: hide the collection from the Online Store sales channel, delete it, or draft the product.
- Create the redirect. Shopify’s help describes it under Content, then Menus, then View URL Redirects, then Create URL redirect. Enter the old address as a relative path and the new one as the target.
- Choose the closest page by intent. A retired “Vitamin C serums” collection should go to your serums collection, not to “All products”.
- Update menus, banners and email links that still use the old address. A redirect is a backstop, not a link strategy.
- Test with
curl -Ion the old URL: you want a 301 to the new address, and the new address returning 200 with products on it.
Shopify’s help says redirects start working immediately, that browsers and search engines cache 301s, and that CSV import is supported for big clean-ups.
Let it return a real 404
If a collection or product is gone and nothing replaces it, hide or delete it and stop. Remove it from menus and from any email or ad that links to it, and check what your theme’s 404 page shows shoppers, since that is where old links now land.
Leave it, or keep it live and less empty
“Leave it” is a decision, not neglect. Write down which group you are leaving and why, so in six months nobody re-investigates the same URLs. For a collection that will refill, make the page less empty: a short paragraph on what it is and when stock returns, plus links to two or three related collections. That gives a shopper somewhere to go and gives Google more than “No products found”. Our collection page SEO guide covers what a collection page should hold, and why category pages carry so much SEO weight explains why an emptied one deserves a plan.
A noindex that switches itself on and off
If you would rather tell Google plainly that an empty view should not be indexed, a conditional noindex can do it. Shopify’s help describes adding a conditional noindex tag in theme.liquid to hide the search template, pages or products from search engines (it does not give a collection example), and Google’s JavaScript guidance suggests noindex on error pages as one of two options for single-page apps, where a real 404 status can be impractical. For a collection, a starting point looks like this:
{% if template.name == 'collection' and collection.products_count == 0 %}
<meta name="robots" content="noindex">
{% endif %}
Shopify’s Liquid documentation says collection.products_count is the number of products in the current view of the collection, so this covers both an empty collection and a filter view with no matches. Treat the snippet as an example to test on a duplicate theme, not a drop-in. It is my suggestion, not a method Shopify documents for collections, and it will clash if your theme or an app already prints a robots tag.
It does not turn the page into a 404. It tells Google not to index an empty view, and I would expect the report to list those URLs as “URL marked ‘noindex’”, though Google does not document which label wins, so check after a recrawl. Do not combine it with a robots.txt block on the same URL: Google has to crawl a page to see its noindex, so a blocked page’s noindex is never read.
Mistakes that make this worse
- Redirecting a retired collection into another empty one. You have made a second soft 404.
- Blocking soft 404 URLs in robots.txt. Google’s 404 help warns against it, and a block also hides any noindex from Google. Shopify treats robots.txt edits as unsupported.
- Filling an empty collection with generic text. Google asked for more information on pages that are not truly missing, not for more words.
- Treating the count as a score. Act when a page that should earn orders is on the list, or when an email, ad or menu sends shoppers to an empty page.
If the same property shows large counts under other statuses, our guides to Crawled - currently not indexed and Discovered - currently not indexed cover the neighbouring statuses, and the Shopify SEO guide shows where indexation sits in the rest of your search work.
A worked example (illustrative numbers)
These numbers are made up to show the method. They are not from a real store. Say a store with 300 products and 40 collections has 120 URLs under Soft 404.
| Group | URLs | Decision |
|---|---|---|
| Empty collections | 14 | 9 will refill: leave, add a short note. 5 retired: 3 redirect to a close collection, 2 return 404 |
| Page numbers past the end | 61 | Leave. Fix the one app link that points past the end |
| Filter URLs with no results | 33 | Leave. Remove two filtered links from an email template |
| Discontinued products | 7 | 4 redirect to a replacement, 3 return 404 |
| Other | 5 | Inspect each: 2 were real pages flagged by mistake and needed content |
Of the 120 URLs, 17 needed an action on Shopify (5 collections, 7 products, 2 pages and 3 links), 9 needed a short note, and the rest needed nothing but a written reason. “Redirect all 120 to the homepage” would have buried the two pages that needed real content. The two filtered email links matter most: they sent real customers to empty pages, and no Search Console setting fixes that.
After you make changes: validate and measure
When a group is fixed, open the Soft 404 status in the Page indexing report and use Validate fix. Google’s report help says validation typically takes up to about two weeks but can take much longer. That is how long Google takes to check your fix, not a promise about indexing.
While you wait, re-run curl -I on a sample from each group, crawl your own site to check no menu, banner or email link points to a retired or empty URL, and compare the count by URL type next month, not just the total. If the page-number group is unchanged and you chose to leave it, that is the expected result.
Key takeaways
- A soft 404 is a page that returns 200 but looks empty or like an error. Google lists it under “Not indexed” as a judgement, not a penalty.
- Google’s guidance is a real 404 for truly missing pages, more information for pages that are not missing, and a 301 where a real replacement exists.
- On the stores I tested on 30 October 2026, empty collections, page numbers past the end and no-result filters all returned 200. Search URLs carried a noindex header.
- Shopify only redirects URLs that are already broken, so hide or delete an emptied collection before you redirect it.
- Google says not to redirect many unrelated URLs to the homepage and that it might be treated as a soft 404. Redirect to the closest relevant page, or let the URL 404.
- Sort by URL type first. Most groups are “leave”, and the useful fixes are often your own links to dead pages.
FAQs
What does soft 404 mean in Google Search Console?
A URL returned a normal success status (200) but the page looked empty or like an error, so Google treats it as not found and does not index it. It sits under “Not indexed” and is Google’s judgement about the page, not a penalty.
Do soft 404s hurt my Shopify SEO?
The Google pages I read do not say soft 404s lower the rankings of other pages. The direct effect is that the URL is not indexed, which is harmless for a URL never meant to rank. It matters when a page that should sell is mistaken for an empty one, or when your own links send shoppers to empty pages.
Should I redirect soft 404 pages to my homepage?
Not as a default. Google advises against it, and its site-move guidance says sending many old URLs to one irrelevant page might be treated as a soft 404. Redirect to the closest relevant collection or product, and if none exists, let the URL return a real 404.
How do I fix a soft 404 on an empty Shopify collection?
Decide whether it will refill. If it will, leave it or keep it live with a short note and related links. If it is retired, hide or delete it so it returns a 404, because Shopify only redirects broken URLs, then redirect it to a close collection or leave it as a 404.
Why are my ?page= collection URLs flagged as soft 404s?
On the stores I tested, a page number past the last page returned a 200, not a 404. It usually means the collection shrank or something still links to old page numbers. Check for internal links past the end; if there are none, the entries are harmless.
Can I make Shopify return a 404 for filter URLs with no results?
Google says a no-result filter should return a 404. I did not find a documented Shopify setting for it on a filtered collection view. Keep default robots rules, do not link to filtered addresses that can be empty, and consider the conditional noindex above, tested on a duplicate theme.
How long does Validate fix take for soft 404s?
Google’s help says validation typically takes up to about two weeks but can take much longer. That is the time to check your fix, not a timeframe for any page to be indexed.
Is your Search Console report hiding a problem worth fixing?
Sorting this report is part of the indexation work in the technical audit of our Shopify SEO service. The hard part is not reading the status. It is knowing which URLs are costing you sales and which are noise, and that depends on your catalogue, your theme and your apps.
If you would like a second pair of eyes, book a free 30-minute diagnostic or tell us about your store. We look at your store before we recommend anything, and we tell you honestly if SEO isn’t the right move. No pitch.
Free 30-min diagnostic
Seen enough?
Book a free diagnostic.
We'll look at your store's search pages, find what is costing you traffic and tell you what to fix first. No pitch. No email gate. 30 minutes.
More from Prism3
Afterpay vs Zip vs Shop Pay Instalments: Shopify AU
Afterpay, Zip and Shop Pay Instalments compared for Australian Shopify stores: merchant fees, payouts, approval, checkout placement and a worked margin example.
AI-Referred Orders on Shopify: What Is Real and What Is Hype
What Shopify has disclosed about AI-referred orders, why the 13x headline needs context, how to find AI traffic in GA4 and Shopify, and what to do now.
AI Visibility Tools for Shopify: What They Measure and Miss
What AI visibility tools for Shopify stores really count: mentions, share of voice and citations, where the data is sampled or unstable, and how to use them.