Stock & inventory automation

WooCommerce out of stock not showing correctly: the full fix

This phrase covers two opposite complaints, and I hear both from small retailers most weeks. Either sold-out products are still sitting there taking orders, or products that should be visible have vanished from the shop. Both come down to a handful of settings, in a specific order worth checking, and one cause that no setting will fix.

Run the free stock checker →

In short: If WooCommerce shows the wrong stock status, check Settings > Products > Inventory ("Hide out of stock items"), the per-product stock status, and page caching serving stale data. If the problem returns after the settings are right, an external feed or marketplace sync is overwriting your stock on a schedule.

The two failure modes, and why they get confused

"Out of stock not showing" gets typed into Google by two different owners with opposite problems. One has a product that ran out weeks ago but is still marked "In stock" on the front end, taking orders you can't fulfil. The other has a product that's out of stock but should still appear on the shop page (maybe as "back soon", maybe just for SEO), and instead it's gone completely, as if the product never existed. Same search term, opposite symptom. Work out which one you actually have before you touch any setting, because the fixes point in different directions.

Failure mode one: sold-out items still sell

This is the expensive one. A customer orders something you don't have, you find out after the payment's gone through, and now you're refunding or scrambling a supplier order at short notice. Three places cause it, roughly in order of likelihood.

Backorders are allowed. Go to WooCommerce > Products > Inventory and check the default "Allow backorders" setting, then check the same field on the individual product. If it's set to "Allow, but notify customer" or "Allow" rather than "Do not allow", WooCommerce will keep selling even at zero stock, and it's working exactly as configured. This is the single most common cause of this exact complaint, because it's usually set once during setup and forgotten.

Stock quantity and stock status have drifted apart. WooCommerce tracks these as two separate fields. A product can have "In stock" as its status while its quantity sits at zero, or worse, a negative number, because someone edited one field and not the other, or because an import updated quantity without updating status. Managing stock at the product level (the "Manage stock?" checkbox) ties these together automatically; if it's unticked, status is a manual field that nothing keeps honest.

The out of stock threshold is set wrong. Under Products > Inventory there's an "Out of stock threshold" field. If it's blank or zero, the product only flips to out of stock exactly at zero, so a quantity of 1 still reads as available even if that unit is damaged, reserved, or already gone from your actual shelf. Retailers with any buffer stock, faulty-return rate, or multi-channel selling usually want this set above zero, not left at the default.

Failure mode two: out of stock items disappear when they shouldn't

The opposite problem is usually one checkbox: "Hide out of stock items from the catalog", in WooCommerce > Settings > Products > Inventory. When it's on, any product with stock status set to "Out of stock" drops out of shop pages, category archives, and search results the moment it hits zero. The product page itself still exists at its URL, it just stops being listed anywhere a shopper would naturally land on it, which tanks the page's traffic and, over time, its ranking.

If that setting is off and products are still vanishing, check catalog visibility on the product itself, under the Publish box on the edit screen ("Shop and search results" vs "Search results only" vs "Hidden"). It's easy to set this by accident when duplicating a product or running a bulk edit, and it overrides the global setting on a per-product basis.

Worth deciding deliberately, not by default: do you want dead stock hidden (cleaner catalogue, but you lose the SEO value of a page that's already ranking and the option to sell it as "back in stock soon"), or visible but clearly marked unavailable (keeps the page working for you, costs you a slightly messier shop grid). Most retailers I work with land on visible-but-marked for anything that restocks regularly, and hidden only for genuinely discontinued lines.

The diagnostic order that actually saves time

Guessing at settings wastes an afternoon. Check in this order and you'll usually find it inside ten minutes.

  • Pick one specific product exhibiting the problem, not the general symptom, and open it in the editor.
  • Check its stock status, stock quantity, and "Manage stock?" checkbox against each other, they should agree.
  • Check its Backorders setting, and whether it inherits the global default or overrides it.
  • Check its catalog visibility field in the Publish box.
  • Check the global settings at Products > Inventory: hide-out-of-stock, out-of-stock threshold, default backorder behaviour.
  • Reload the product and shop page in a private/incognito window, then hard-refresh, ruling out browser cache before you rule out anything server-side.
  • If any page or object caching plugin is active (or your host runs edge caching), purge it and check again before concluding the setting is wrong.

That last step trips up more people than it should. A stock change is often correct in the database within seconds, but a cached shop page or product fragment keeps serving the old state for anywhere from a few minutes to 24 hours depending on your cache configuration. If you fixed the setting an hour ago and it "hasn't worked yet", clear the cache before you assume the fix failed.

When the fix works today and breaks again tomorrow

This is the pattern that actually brings most people to me, rather than to a settings screen. You go through the list above, everything checks out, the product corrects itself, and it holds for a day, sometimes two, then reverts to the exact same broken state on its own. Nobody touched the settings in between.

At that point the settings aren't your problem. Something is overwriting the stock value on a schedule, and it's almost always one of: a supplier feed import, a marketplace sync plugin (eBay, Amazon, a wholesale price list), or a scheduled CSV/XML import job. Each of these writes stock quantity and status directly to the product on its own timetable, independent of anything you change by hand in wp-admin. You fix it, the next scheduled run overwrites your fix, and the cycle repeats until someone finds and fixes the actual source, not the symptom.

This is a synchronisation problem, not a settings problem, and no amount of re-checking the inventory screen will resolve it. The real fix is making sure whatever writes stock into WooCommerce is reading accurate numbers in the first place, running on a schedule that suits your business, and guarded so a bad or partial feed can't wipe or corrupt your catalogue on the way through. That's a different job to ticking the right boxes, and it's the one most WordPress troubleshooting guides don't cover, because it isn't a WordPress problem at all.

What good stock sync actually looks like

For a UK workwear retailer I built exactly this: a nightly sync that keeps the live website matched to supplier stock feeds across 91,000 products, shipped with 121 automated tests and guarded against bad data, so a malformed feed can't silently overwrite good numbers. It runs unattended, logs what it changed, and alerts a human only when something genuinely needs one. That's the difference between "someone checks the inventory settings every time this happens" and the problem simply not happening again.

If you've been through the checklist above and the fix keeps reverting, that's the tell. The settings are fine. The sync feeding them isn't.

Why does WooCommerce still let people buy out of stock items?

Usually backorders are allowed on the product or a default, or the stock quantity is above zero even though the item is actually gone, so WooCommerce reads it as available. Check Products > Inventory and the per-product Backorders setting first.

Why are my out of stock products disappearing from the shop?

"Hide out of stock items from the catalog" is switched on in Settings > Products > Inventory, or catalog visibility has been set to hidden on those products directly. Both remove the page from shop and search listings, though the URL still loads.

Why does a stock fix revert after a day?

An external feed, import plugin, or marketplace sync is overwriting your manual correction on its own schedule. The settings are right, but something upstream keeps rewriting the values, which is a sync problem rather than a settings problem.

Does page caching affect out of stock display?

Yes. If a product page or shop archive is cached, a stock change won't show until the cache clears or expires, which can look identical to a broken setting for hours.

About the author

Jordan Bee builds automation for UK online retailers at GlideOps. In June 2026 he manually audited 135 UK online shops, finding 4 in 10 showing sold-out products still live and ranking on Google, research that underpins these guides and the free dead-listing checker. He has built stock-sync systems covering 91,000+ products for UK retailers.

See which of your products are affected right now

The free checker scans your live store and shows you exactly which products are out of stock but still buyable, or hidden when they shouldn't be, in minutes, no changes made.

Run the free stock checker →