WooCommerce

WooCommerce Out of Stock Pages: 5 Proven SEO Fixes

A product sells out. Somebody ticks “hide out of stock items” because it seems tidy, and six months later the store has four hundred pages that Google still lists, that nothing links to, and that show a dead end to anyone who clicks. Every WooCommerce out of stock product is a small decision about a URL that already has search history attached, and the tidy-looking option is usually the wrong one. Here is how to decide, product by product.

What a WooCommerce out of stock page really costs you

The four outcomes for a WooCommerce out of stock product page: keep it live with a return date if stock is coming back, redirect to a direct replacement if discontinued, redirect to the category if there is no replacement, or return 410 if the page never earned traffic.
The inventory checkbox is not one of the four. It changes the catalogue and leaves the page exactly where it was.

There are four things you can do with the page of a WooCommerce out of stock product, and only four. The inventory checkbox is not one of them — it changes the catalogue, not the URL.

OptionWhat the URL returnsRight when
Keep it live200, marked unavailableComing back, or still useful to read
Hide from catalogue200, but orphanedAlmost never — see below
301 redirect301 to a replacement or categoryDiscontinued, with somewhere sensible to send people
410 Gone410Discontinued, no replacement, no traffic

Notice that three of the four keep the page working in some form. A WooCommerce out of stock product page that ranks for its model number is an asset even while you cannot sell it — deleting it throws away the ranking and the link equity that came with it.

The question that decides it: will this product ever be purchasable again? Yes means keep the page. No means redirect or retire it. Everything else in this article follows from that one answer, and it is usually a question for the buyer rather than the developer.

Why “hide from catalogue” is the trap

What the hide out of stock items setting actually does: the product page stays published and indexed, but it disappears from category pages, search and related products, leaving a page with no internal links pointing at it.
A page that is still indexed but linked from nowhere is worse than either keeping it or removing it properly. Hundreds of them is a real problem.

This is the setting most stores reach for, and it is the one that creates the problem. It lives in WooCommerce → Settings → Products → Inventory and reads as though it removes the product. It does not.

What it doesWhat it does not do
Removes the product from shop and category listingsRemove the product page
Removes it from search results on your siteDeindex it from Google
Removes it from related-product blocksRedirect anyone who arrives
Hides it from new visitors browsingHide it from anyone with the link

The result is an orphan: a page with no internal links pointing at it, still in the index, still receiving search clicks, showing a visitor a product they cannot buy and no obvious next step. Multiply that by every WooCommerce out of stock item over three years and you have a substantial section of your site that exists only for search engines and disappointed customers.

Orphan pages also dilute how a crawler understands your site. Hundreds of unlinked, thin, unavailable product pages compete for the same crawl attention as the products you are actually selling — the wider version of that argument is in our technical SEO checklist.

Five WooCommerce out of stock fixes, by situation

#SituationDo this
1Back in stock within weeksKeep live, state the date, capture emails
2Discontinued, direct replacement exists301 to the replacement product
3Discontinued, no replacement, had traffic301 to the parent category
4Discontinued, never had traffic410 Gone, remove it properly
5SeasonalKeep live all year, say when it returns

1. Temporarily unavailable: keep the page working

This is the most common WooCommerce out of stock case and the one people handle worst. The page already ranks, the visitor already wants the thing, and you are about to have it again.

  1. Leave the page live and visible in the catalogue.
  2. Say when it returns — “back in stock week commencing 14 October” beats “out of stock” enormously.
  3. Offer a back-in-stock email capture. This is the whole point.
  4. Link to two alternatives so the visit is not wasted.
  5. Consider backorders if your supply chain can honour them.

Step three turns a WooCommerce out of stock page from a dead end into a lead. A customer who leaves an email address is worth more than one who bounces, and you get to tell them the moment you can sell to them — which is a far warmer message than any campaign you could otherwise send.

2 and 3. Discontinued: redirect to the nearest useful thing

If a WooCommerce out of stock product is never coming back, the URL should take people somewhere they can still buy something. A 301 preserves most of the ranking signal and gives the visitor a route forward.

Redirect toWhenRisk
The direct replacement productA newer model of the same thingNone — this is the ideal case
The closest alternativeSimilar product, different brandMild — the visitor may feel misled
The parent categoryNo single obvious replacementWeaker signal, but honest
The home pageNeverTreated as a soft 404, helps nobody

That last row is worth being firm about. Redirecting every dead product to the home page is the most common mistake in this whole area, and search engines treat it as the equivalent of a 404 with extra steps. If you cannot name a better destination than the home page, the right answer is the category.

4. Never had traffic: retire it properly

Not every WooCommerce out of stock product deserves a redirect. A variant that existed for three months and was never linked to or found is clutter, and a redirect rule for it is a rule somebody has to maintain forever.

# Was it ever found? Check before you decide.
# Search Console → Pages → filter by the URL

Zero impressions over twelve months means nobody is looking for it. Return 410, let it drop out, and keep your redirect map short enough that the next developer can read it.

5. Seasonal: leave it alone

Seasonal stock is the case where hiding hurts most. A Christmas product hidden in January has to re-earn its ranking every autumn. Keep it live all year with a clear “available from October” message. The page accumulates history instead of resetting, and you arrive at the season already ranking.

Finding every WooCommerce out of stock page you have

Most stores have no idea how many WooCommerce out of stock pages they are carrying. Products remain posts even after an HPOS migration — that change affects orders only — so one query answers it:

wp db query "SELECT p.post_name, p.post_title
  FROM wp_posts p
  JOIN wp_postmeta m ON m.post_id = p.ID
  WHERE p.post_type = 'product'
    AND p.post_status = 'publish'
    AND m.meta_key = '_stock_status'
    AND m.meta_value = 'outofstock'
  ORDER BY p.post_date DESC;"

Run it, then cross-reference the list against Search Console impressions. That pairing gives you the only two facts you need per URL: is it coming back, and does anyone look for it. Everything else is a judgement you can now make in a few seconds each.

Do it in batches, oldest first. A store with four hundred orphaned products does not need a project. Sort by date, handle the oldest fifty, and add the decision to your process so the backlog never rebuilds.

Keep the structured data honest

Your WooCommerce out of stock status is published in your structured data in your structured data, and it should match reality. The vocabulary has a value for each case:

Availability valueUse for
InStockPurchasable now
OutOfStockTemporarily unavailable
BackOrderOrderable, ships later
PreOrderNot yet released
DiscontinuedGone for good, page still live

Marking a WooCommerce out of stock item as InStock to keep a rich result is a bad idea on two counts. It is a structured-data policy violation, which risks losing rich results across the whole site, and it sends customers to a product they cannot buy — so the click you gained is a complaint you now have to handle.

The definitions are at schema.org’s ItemAvailability, and the values are worth checking rather than guessing, because plugins vary in which ones they emit.

What the page itself should say

The technical half of a WooCommerce out of stock decision is only half of it. The other half is what a person reads when they arrive, and most stores say the least useful possible thing: two words in grey.

TypicalBetterWhy
“Out of stock”“Back in stock w/c 14 October”A date is a reason to return
No alternativesTwo named alternativesSalvages the visit
No email capture“Email me when it is back”Turns a bounce into a lead
Price hiddenPrice still shownPeople are comparing, not only buying
Reviews hiddenReviews still visibleThe content that ranks the page
“Discontinued”“Replaced by the X200 →”A route forward, not a full stop

The price and reviews rows surprise people. Hiding them on a WooCommerce out of stock page strips out most of what made the page worth ranking, so the page’s position slides further than the unavailability alone would cause. Leave the content intact and change only the buy button.

The date row is the highest-value change of the six. “Out of stock” tells a visitor to go elsewhere; a specific date tells them to wait, and gives your email capture something concrete to promise. If you genuinely do not know the date, say that honestly — “expected within four weeks, leave your email and we will confirm” is still better than silence.

Doing this on a store with thousands of products

Everything above is straightforward on a hundred WooCommerce out of stock products and needs a different shape on ten thousand. At that scale you are setting rules rather than making individual decisions.

RuleApplies toAction
Unavailable under 90 daysMost of the listLeave alone entirely
Unavailable over 12 months, zero impressionsThe long tailBulk 410
Unavailable over 12 months, real impressionsA small, valuable setDecide individually
Product line retiredWhole categoriesOne pattern redirect to the new line
Seasonal, tagged as suchPredictableExempt from every rule

The third row is where the value is, and it is usually tiny — a few dozen URLs out of thousands that still pull search traffic despite being unbuyable for a year. Those deserve a human decision each. Everything else can be handled by rule, which is what makes a WooCommerce out of stock backlog tractable rather than a month of work.

Tag seasonal products explicitly so the rules skip them. The alternative is an automated cleanup that quietly retires your Christmas range every February, which is the sort of thing nobody notices until October.

Where this goes wrong

The mistakeWhat happensDo this instead
“Hide out of stock items” as a policyHundreds of orphan pagesDecide per product
Deleting discontinued products404s, lost rankings, lost links301 to a replacement or category
Redirecting everything to the home pageTreated as a soft 404Category at worst
Hiding seasonal products off-seasonRe-earning the ranking every yearKeep live, state the return date
Faking availability in schemaPolicy risk and angry customersMark it accurately
Hiding a parent because one variation sold outLosing a whole product’s trafficDisable the variation only
No back-in-stock captureDemand you never hear aboutCapture the email every time

The variations row catches larger stores in particular. One size selling out should never remove the product; it should grey out that option. If your theme or a plugin hides the parent when any variation is unavailable, that is a bug worth fixing before anything else here — it is silently removing sellable products from your catalogue.

Make it a process, not a cleanup

Handle a WooCommerce out of stock product at the moment stock hits zero and there is never a backlog to clear.

TriggerDecisionWho
Stock hits zeroReturning or not?Whoever buys stock
Not returningName the replacementSame person
Replacement namedAdd the 301Whoever maintains the site
No replacement, no traffic410 and removeSame
QuarterlyRe-run the query, catch straysSame

Five rows, and no WooCommerce out of stock backlog ever forms. The reason stores end up with hundreds of stranded pages is never that somebody decided badly — it is that nobody was asked to decide at all, so the default setting decided for them.

Worth checking the customer-facing side too. A visitor landing on a WooCommerce out of stock page with no alternatives and no email capture is an abandoned session you paid to acquire, which makes this part of the same conversation as reducing cart abandonment and checkout optimisation.

Knowing whether it worked

Three numbers tell you whether the effort paid back, and none of them needs a new tool.

MeasureWhereWhat good looks like
Back-in-stock sign-upsYour email platformAny number above zero — it was zero before
Soft 404s reportedSearch Console coverageFalling, as redirects replace dead ends
Orphan product pagesRe-run the stock queryShrinking quarter on quarter

The first row is the one to watch, because it converts. A WooCommerce out of stock page that collects fifty email addresses over a quarter has given you fifty people who told you exactly what they want to buy, and a restock email to that list outperforms almost anything else you could send.

Frequently asked questions

Does a WooCommerce out of stock product hurt my rankings?

A WooCommerce out of stock page tends to slip while it is unavailable, because engagement drops. It does not drag the rest of the site down. Hundreds of orphaned, thin, unlinked pages can dilute how your site is understood, which is a different and more gradual problem.

Should I noindex out of stock products?

Not for temporarily unavailable items. Noindexing a WooCommerce out of stock product throws away a ranking you will want back in three weeks. For permanently discontinued products with no replacement, a 410 is cleaner than a noindex that leaves the page live forever.

Is it better to allow backorders?

If you can genuinely honour them, yes. It keeps the product purchasable, keeps the page fully functional, and the schema value exists for exactly this. If your lead times are unpredictable, do not — a late order is worse than a delayed sale.

What about products out of stock for years?

They are discontinued, whatever the inventory system says. Apply fix two, three or four. A WooCommerce out of stock page that has been unavailable for two years is not temporary and treating it as such helps nobody.

Should the product stay in my sitemap?

Yes while it is temporarily unavailable, because you want it crawled and ready when it returns. Remove it when you retire it with a 410 — a sitemap listing a WooCommerce out of stock URL you have deliberately killed is a contradictory signal.

Will redirects slow my site down?

A few hundred, no. Thousands of rules evaluated on every request, measurably — which is another argument for using 410 on products nobody searches for rather than redirecting everything.

Can I automate the decision?

Partly. You can automate finding them and automate the 410 for zero-traffic products. Naming the right replacement is a judgement about your catalogue that no rule will make well.

Does hiding out of stock items speed up my shop?

Marginally, by shortening category queries — hiding WooCommerce out of stock items is not a speed strategy. It is nowhere near the top of the list — the things that actually matter are in speeding up a slow WooCommerce store, and none of them are inventory settings.