Short answer
If the product will return or can be ordered, the page stays at the same URL with a 200, and stock changes only in the page content and markup. If the product is discontinued for good, the replacement decides: a like-for-like alternative gets a 301, otherwise a 404 or 410. According to Google's documentation both codes are processed the same way and the URL leaves the index (developers.google.com, checked 02.11.2026).
Deleting a page, adding noindex or redirecting to a category while the product is back on sale tomorrow means paying to rebuild rankings: Googlebot has to crawl the URL again, and links gathered over months land on a 404 or someone else's redirect. A page that already sits in the index is worth more than it seems at the moment the warehouse shows zero.
Four situations, four responses
"What do I do with an out-of-stock product?" has no answer in that form. I split such products into four groups by what is known about the return, and each group gets its own code: 200, 301, 404 or 410.
| Situation | Response | On the page | In the markup |
|---|---|---|---|
| Sold out, delivery expected | 200 | Status, delivery time, notification signup | OutOfStock; with a date, PreOrder or BackOrder |
| Can be ordered | 200 | Lead time and terms | BackOrder or PreOrder |
| Discontinued, direct replacement exists | 301 to the replacement | The page is gone | Markup on the replacement |
| Discontinued, no replacement | 404 or 410 | A 404 page with category and search links | None |
The third and fourth rows differ by one question: "What would a shopper arriving from search for this product name want to see?" If the answer fits one URL, that is the replacement. If you have to choose between three similar products, there is no replacement, and a redirect would mislead the visitor.
For cases between the rows one question works: when will you know the product is not coming back? Until the supplier confirms it in writing, the product belongs in the first row of the table: a 200 and waiting.
What to keep on the page so it does not look empty
A page with a title, a grey button and the label "out of stock" is the most common template, and it is risky for two reasons. For the shopper it is a dead end. For Google it is a page with no content, and by the definition in the documentation a page with a 2xx code that looks empty or like an error can be treated as a soft 404 (developers.google.com, checked 02.11.2026).
The working minimum for an out-of-stock product page:
- The description and specifications stay in full. They are what keeps the page in search.
- The status is written in words and visible without scrolling: "out of stock", "expected in December", "made to order, 14 days". The last two are examples: you fill in your own supply time.
- Under the status sits a block of alternatives: cards with price and availability. It brings the shopper back into the catalogue and gives the page outgoing links.
- A "notify me when back" form. It turns a search visitor into a contact instead of an exit.
- Breadcrumbs and the link to the category stay, so the page does not become an orphan page.
What not to do: keep a "buy" button that leads to a cart error, or hide the price and show "0 €" in its place.
Availability markup: what to put in Offer
Google's merchant listing documentation lists these availability values: InStock, OutOfStock, BackOrder, PreOrder, PreSale, Discontinued, SoldOut, LimitedAvailability, OnlineOnly and InStoreOnly. It also says not to specify more than one value (developers.google.com, checked 02.11.2026).
The status mapping I use in templates:
| Status on the page | availability value |
|---|---|
| In stock | InStock |
| Out, delivery not confirmed | OutOfStock |
| Out, but we take orders with later shipping | BackOrder |
| Not released yet, can be reserved | PreOrder |
| Discontinued, page kept for some reason | Discontinued |
There is one rule: the value must match what the person sees on the page. If the template always outputs InStock while stock updates only in the text, the markup says one thing and the page another. I found no direct ban on such a mismatch on the documentation page I checked, but markup that contradicts the page stops being a source of data about the product, and that is my own assessment, not Google's words.
The check takes a minute: open an out-of-stock product page in Google's Rich Results Test and compare availability with the visible status.
What happens in the sitemap and internal links
While the page returns a 200, it stays in sitemap.xml. There is no need to pull temporarily missing products from the sitemap: you would be telling Google the page need not be crawled, though it should stay in the index. I described the rules for building the sitemap in the article on sitemap.xml and robots.txt.
After a product moves to "discontinued" the picture changes. A URL with a 301 or 404 leaves the sitemap the same day, and internal links to it are updated: "similar products" blocks, menus and old articles. If you skip this, the robot keeps visiting the URL and link weight drains into nothing. For chains and broken links see the articles on 404, 410 and redirects and redirect chains.
My order of work for a catalogue
I build the system on product statuses, because "by feel" decisions turn into chaos across thousands of pages. The 5 steps below are how I go through a catalogue.
- Export products with no stock and tag each one: awaiting delivery, made to order, discontinued, status unknown.
- For "status unknown" I ask purchasing for an answer. Until there is one, the product counts as awaiting delivery: erring in that direction is safer than deleting a page with history.
- Check discontinued products against Search Console and the logs. URLs that brought clicks or have external links I review by hand. The rest are closed by rule.
- Look for a replacement for discontinued products. If there is one, a 301 to a specific page. If not, a 404 or 410 and a 404 page with category links.
- Set a review deadline. If a product stays in "awaiting delivery" longer than a realistic supplier lead time, it moves to "discontinued". I do not impose a number of days: it depends on the shop's logistics.
An honest limit: I have not measured on my projects how many weeks a page's rankings survive after the move to "out of stock", and I will not name a number. How fast Google re-evaluates a page depends on how often the robot visits it. On a site where crawling follows mostly new products, re-evaluation can take much longer than on a large shop crawled daily.
If the catalogue is big and products change status fast, a large share of the rules lives in the shop template: status, Offer markup and the alternatives block must come from one database field. You settle that with the developer, and here it is worth checking beforehand whether you have duplicate pages: pages for different colours or bundles often run out one after another, and the question "which one to keep" is solved with canonical, not deletion.
Which reactions to "out of stock" do harm
- Noindex on an out-of-stock product. The page drops out of the index and getting it back means waiting for a new crawl.
- A 302 to a category. A temporary redirect says the original URL stays the main one, so it does not fit a discontinued product, and for a product awaiting delivery it cuts the shopper's path.
- Redirecting all discontinued products to the home page. The shopper does not get what they were looking for, and Google may treat such redirects as soft 404s.
- Hiding the price and description. The page loses the content it was shown for.
- Removing from the catalogue without fixing links. "Similar" blocks and the menu keep pointing at an empty URL.
