You sold the last blue kurta on Monday. On Wednesday someone bought another one, and the site happily took their money. Or the reverse: the shelf is full, but the product page says “Out of stock” and has done for two days. Either way, the inventory is wrong after orders, and you no longer trust the numbers in the dashboard.
WooCommerce stock not updating is rarely a single bug. It is usually one of a short list of settings, order statuses or outside tools doing exactly what they were told to do. This post helps you work out which one, using the evidence WooCommerce already keeps for you.
First, match what you see to a likely cause
Start with the symptom. It narrows the search a long way before you open a single setting.
| What you see | Most likely cause |
|---|---|
| Stock never changes, for any product | Stock management switched off globally, or for those products |
| Stock changes for some orders but not others | Those orders never reached a paid or on-hold status |
| Stock correct in admin, wrong on the product page | Page caching showing an old copy |
| Stock jumps back to an old number overnight | An import, sync or inventory plugin overwriting it |
| Variable product stock wrong for one size or colour | Stock managed at the wrong level, parent or variation |
| Stock low after refunds and cancellations | Items not restocked when the order was refunded |
Read the order notes before changing anything
Every WooCommerce order has a notes panel on the right of the order screen. When WooCommerce reduces or increases stock for an order, it adds a note there saying so, listing the product and the stock level before and after.
That makes the order notes the most useful evidence you have. Open three orders: one where stock went down correctly, one where it did not, and the most recent one. Compare them.
- If the problem order has no stock note at all, WooCommerce never reduced stock for it. Look at the order’s status and the payment notes.
- If it has a note and the numbers look right, WooCommerce did its job and something changed the stock later. Look at imports and sync tools.
- If there is a note showing stock going back up, the order was cancelled or moved back to pending at some point.
Write down what you find for each order. It saves going round in circles later.
Cause 1: stock management is not switched on where you think
There are two switches, and both need to be on.
- The store-wide setting. WooCommerce > Settings > Products > Inventory has an option to enable stock management. If it is off, WooCommerce does not track quantities at all.
- The product setting. In each product’s Inventory tab there is an option to manage stock for that product. If it is off, you can still mark the product “In stock” or “Out of stock” by hand, but no quantity is tracked and orders will not change it.
This is a frequent cause on stores where products were added in a hurry, or imported from a spreadsheet that did not include the stock columns.
Cause 2: the orders never reached the right status
WooCommerce does not reduce stock the moment someone clicks “Place order”. It reduces stock when the order moves to a status that means it is going ahead: Processing, Completed or On hold. A card or UPI payment usually moves the order to Processing once the gateway confirms it. Cash on delivery and bank transfer orders move straight to a status that reduces stock, because no online payment needs to be confirmed.
So when an order is stuck in “Pending payment”, the stock is not reduced. If the payment did actually go through but the gateway never told your site, the customer has paid, the order sits as pending, and your stock count is now too high. That is how overselling happens. Our post on orders stuck in pending or missing from the dashboard covers why gateways fail to report back.
When you confirm such an order has been paid and move it to Processing by hand, WooCommerce reduces the stock at that point and adds the usual note.
The hold stock setting
In the same Inventory settings there is a “Hold stock” time in minutes. Unpaid orders are held for that long and then cancelled automatically. That cancellation relies on WordPress’s scheduled tasks. If those are not running, pending orders pile up instead of being cleared, which muddies your picture of what is really available. If you suspect this, our guide to WordPress scheduled tasks that stop running explains how to check.
Cause 3: the page is cached, not the stock
If the product’s stock is correct inside the dashboard but the public product page still shows the old status, the number is fine and the page is stale. Somewhere between the server and the shopper, a saved copy of that page from before the stock changed is still being handed out, whether by a caching plugin, your hosting company’s cache or a CDN.
Test it by opening the product page in a private browser window with a query string added to the address, such as ?nocache=1. If that shows the right stock, purge the cache and check whether your caching tool clears product pages when stock changes. Many do; some need a setting switched on.
Cause 4: something outside WooCommerce is overwriting it
If the order notes show stock going down correctly and then the number jumps back later, look for anything else that writes stock levels:
- A product import run on a schedule from a supplier’s feed.
- A plugin syncing stock with a marketplace, a second website or a point-of-sale system in a physical shop.
- An accounting or inventory system that pushes its own stock figures to the site.
- A staff member bulk-editing products from an old spreadsheet.
Each of these will happily replace a correct number with a wrong one. Decide which system is the source of truth for stock, and make sure the others only read from it, never write back. Two systems both believing they are in charge is the classic cause of inventory that keeps drifting.
Cause 5: variations managed at the wrong level
A variable product, say a shirt in four sizes, can track stock on the parent product as one shared pool, or on each variation separately. Each variation’s settings include its own option to manage stock. If it is off, that variation uses the parent’s stock.
Mixing the two is where it goes wrong: some sizes counting their own stock, others drawing on the parent’s pool. Pick one approach for each product. For clothing and anything else where sizes sell at different rates, managing stock on each variation is usually the clearer choice.
Cause 6: refunds and cancellations that did not restock
When you refund an order in WooCommerce, the refund form has a “Restock refunded items” option. If it is not ticked, the money goes back but the stock does not. Over months of returns that leaves the store showing less stock than you really have. The details of a refund that does go through, and one that does not, are in our post on a refund stuck in WooCommerce.
Cancelling an order that had already reduced stock puts the stock back automatically, with a note. Deleting an order is not a reliable way to get the stock back, so cancel rather than delete when an order falls through.
Fixing the numbers once you know the cause
- Fix the cause first. If you correct the numbers while the cause is still there, they will drift again.
- Count the physical stock of the affected products.
- Correct the quantities in WooCommerce. For many products, the product export and import tools let you edit stock in a spreadsheet and bring it back, but keep a copy of the export before you change anything.
- Place a test order for one tracked product and check that a stock note appears and the number drops by one.
- Cancel the test order and check that the stock comes back.
Settings that prevent the next mix-up
- Low stock threshold. Set it so you get an email before a product runs out, not after.
- Out of stock threshold. If you keep a few units back for damaged goods or exchanges, set this above zero so the site stops selling before the shelf is empty.
- Backorders. Check each product’s backorder setting. “Allow” means the site keeps selling at zero, which may be what someone switched on and forgot.
- One person, one source. Decide who is allowed to change stock and from where.
A weekly spot-check of a few best sellers against the shelf, as set out in our WooCommerce upkeep checklist, catches drift while it is still small.
When WooCommerce stock is still not updating
If the order notes say one thing, the stock says another and nothing you have installed seems to explain it, the cause is often a custom code snippet or an extension modifying stock in a way that is not obvious from the dashboard. That is a job for someone who can read the code and the database: a developer, or an ecommerce website maintenance company in India or abroad that does this sort of tracing regularly.
For a one-off look at why your stock keeps going wrong, our help for existing WooCommerce stores page explains what a single session covers.
Next in this series: WooCommerce Coupon Not Working? Read the Message First