Out of stock products and SEO comes down to one decision made over and over: this product is gone, so what happens to its URL? Delete it, redirect it, or leave it sitting there saying “unavailable”?
Every article on this gives you the same three options and stops. What none of them tell you is how to check whether the choice you made landed the way you intended, and that is the part I actually spend time on. Each of these decisions leaves a different, predictable fingerprint in the Search Console Page indexing report, which means the report is how you audit your own inventory rules.
Do out of stock products hurt SEO?
They can, and the mechanism is worth understanding before you touch anything, because it is not a penalty. It is a misclassification.
John Mueller described it in a Search Central office hours session, transcribed by Search Engine Journal: “when it comes to the normal search results, it can happen that we when see that something is out of stock, we will assume it’s more like a soft 404 error, where we will drop that URL from the search results as well. Theoretically, it could affect the visibility in search if something goes out of stock.”
That is a spoken hangout as transcribed by a third party rather than Google documentation, so treat the exact wording as reported rather than official. The underlying behaviour, though, is documented, and it is the important half. Google’s HTTP status codes doc says: “Google considers the content for processing (for example, in the case of Google Search, for indexing). If the content suggests an error for Google Search, an empty page or an error message, Search Console will show a soft 404 error.”
So the trigger is the content, not the status code. A page returning a perfectly healthy 200 gets classified on what it says. Strip a product page down to a size chart and the words “this item is currently unavailable” and you have built something that reads like an error page, and it gets treated as one. That is a soft 404 in Search Console, and the URL comes out of the index.
Should I delete out of stock product pages?
Not if the product is coming back. This is the split that decides everything else, and it is worth being honest with yourself about which one you are in:
Temporarily out of stock. Keep the URL, keep the page, keep the content. Your job is to make sure it does not read as an error. Google’s Search Console documentation gives the fix directly in its soft 404 definition: “We recommend returning a 404 response code for truly ‘not found’ pages and adding more information on the page to let us know that it is not a soft 404.” Adding more information is the instruction. Full description, specifications, images, reviews, and a clear restock or notify-me path. The availability line is one element on a substantial page, not the whole page.
Permanently discontinued. Now you choose between redirecting to a genuine replacement and removing the URL, and both are legitimate.
Mark it up honestly either way. The ItemAvailability list on schema.org has nine values, and Discontinued is one of them, sitting there almost entirely unused next to the OutOfStock that everyone reaches for. If a product is never coming back and you are keeping the page, that is the accurate value.
Is it better to 404 or 301 a discontinued product?
Redirect when there is a real replacement. Return a 404 when there is not.
Google’s wording on 404s is more relaxed than most people expect: “404 responses are not necessarily a problem, if the page has been removed without any replacement. If your page has moved, use a 301 redirect to the new location.” A wall of not found (404) rows after you clear out a season of dead SKUs is the report working correctly, not a fault to fix.
The trap is the redirect that is technically perfect and still fails. Someone 301s an expired product to a relevant alternative, and the destination page opens with a banner explaining that the original product is no longer available. Googlebot follows the redirect, reads the destination, sees unavailability messaging, and concludes the whole thing is a soft 404. Mueller fielded exactly this in a Webmaster Central hangout, from a publisher whose expired product pages redirected to a relevant alternate carrying that message. If you are redirecting, the destination has to look like a product you can buy, not an apology.
Redirecting everything to the homepage fails for a plainer reason. There is no relationship between the old URL and the target, so Google ignores the redirect and treats the URL as a soft 404 anyway. You get the report noise without the consolidation.
Should I use 404 or 410 for a removed product?
It makes no difference to Google, and this is worth saying plainly because the opposite advice is common.
Google’s documentation: “All 4xx errors, except 429, are treated the same: Google crawlers inform the next processing system that the content doesn’t exist. In the case of Google Search, the indexing pipeline removes the URL from the index if it was previously indexed.”
410 is the more honest signal to send to every other consumer of your site, and I still prefer it for intentional removals. Just do not expect it to speed anything up at Google, and do not let a platform that cannot serve a 410, which includes most hosted store builders, become a reason to delay a cleanup.
While you are deciding, one myth to retire: the Removals tool is not a deletion method. Google says “Requests made in the Removals tool last for about 6 months”, and separately warns “Don’t use robots.txt as a way to block your page.” Six months of hiding a URL is not the same as removing it, and blocking the crawl stops Google seeing the 404 that would have removed it properly.
Why is Google showing my product pages as soft 404?
Because something on the page or at the end of the redirect reads as an error. To confirm which, inspect the URL, run the live test, and open the rendered screenshot. If what comes back is a stripped shell with an unavailability notice where the product used to be, you have your answer without guessing.
One thing to watch while you do it. The live test in URL Inspection follows redirects and tests the final URL without telling you it followed one. So you can inspect a discontinued product URL, see a healthy indexed page, and be looking at the destination rather than the URL you typed. That catches people out constantly on redirect audits, and it is the same disagreement between tools that the report and the live test exist on either side of.
The quiet one nobody notices
The status that costs the most on a store is not soft 404. It is crawled, currently not indexed, where out-of-stock pages that are not bad enough to be classified as errors and not useful enough to earn a slot simply accumulate. Google’s definition is “The page was crawled by Google but not indexed. It may or may not be indexed in the future; no need to resubmit this URL for crawling”, and that last clause gets read as “nothing to do here”. It raises no error, triggers no alert, and quietly grows.
What I check first
I do not audit this product by product. I export the Page indexing report by status, then join it against the store’s own product feed on the availability column, and the mismatches are the entire work queue. A URL that is OutOfStock in the feed and Soft 404 in Search Console is a page that needs content, not a page that needs a redirect. A URL that is Discontinued in the feed and still Indexed is a decision nobody has made yet.
The single most useful reading habit is to watch which status moves after an inventory purge. A spike in Page with redirect is healthy and means your replacements are being found. A spike in page with redirect alongside a spike in Soft 404 means your redirect destinations are wrong, or they are carrying unavailability copy. Same action, two different report outcomes, and nothing except the report distinguishes them.
Because Search Console updates on its own schedule, I check the URLs directly rather than waiting on it, which is why I built the bulk URL inspection tool on this site. Paste the dead SKUs, get their real status back in one pass, and you know within minutes whether last week’s cleanup did what you intended.
Two platform notes from audits, since they change what is even possible:
- On Shopify you cannot serve a 410, and deleting a product versus archiving it versus setting it to draft produce different results at the URL. If products are dropping out after they sell out rather than after you delete them, that is a different problem, and getting Shopify products indexed is the wider picture.
- On WooCommerce, out of stock is a stock status rather than a post status. Turning on the option to hide out-of-stock items from the catalogue pulls them off every category page at once, which removes their internal links while leaving the URLs live and in the sitemap. The pages do not disappear, they just stop being linked to, and then they start drifting into crawled and not indexed.
Sources
- Google Search Central, HTTP status codes and network errors, for the soft 404 content-based classification and the statement that all 4xx errors except 429 are treated the same, checked 5 September 2026
- Google Search Console Help, Page indexing report, for the definitions of Soft 404, Not found (404), Page with redirect and Crawled - currently not indexed, checked 5 September 2026
- Google Search Central, Remove information from Google, for the roughly six month duration of Removals requests and the warning against using robots.txt to block a page, checked 5 September 2026
- schema.org, ItemAvailability, for the nine availability values including Discontinued, checked 5 September 2026
- Search Engine Journal, Google: out of stock products may impact search visibility, transcribing John Mueller in a Search Central office hours session, for the soft 404 assumption on out-of-stock pages, checked 5 September 2026. Reported speech from a hangout, not Google documentation
- Search Engine Journal, Google’s John Mueller explains why expired product pages may become soft 404s, for the case of a correct redirect to a destination carrying unavailability messaging, checked 5 September 2026
