Wrong stock numbers are one of the most damaging problems a product-based business can have. You sell something you no longer have. A customer buys the last unit twice. Your purchase orders are based on counts that are days old. By the time you catch it, you’re already dealing with the fallout.
If your WordPress inventory keeps showing numbers that don’t match reality, the problem is almost always one of five things. Here is what each one looks like and how to fix it.
1. Stock Management Is Not Actually Turned On
This sounds obvious, but it’s the most common cause of inventory not tracking at all.
WordPress inventory plugins need stock management enabled at two levels: the global plugin setting, and the individual item level. If you turned it on globally but forgot to enable it on specific products, those products will never track quantity changes.
Fix: Go through your product list and confirm that stock management is active on each item. In WP Inventory Manager, this is a per-item setting in the inventory record. In WooCommerce, it’s under each product’s Inventory tab. A single unchecked box silently breaks tracking for that entire SKU.
2. Caching Is Showing Old Numbers
Your website uses caching to serve pages faster. That is normally good. But caching can hold onto old stock counts and show visitors a number that is hours out of date.
A customer sees “3 in stock.” They buy one. Your cache still shows “3 in stock.” Another customer buys one. You now have oversold.
Fix: Exclude product pages, cart, and checkout from your caching plugin’s rules. Most caching plugins (WP Rocket, W3 Total Cache, LiteSpeed) have an option to exclude specific page types or URLs. Set that up, then clear your cache manually any time you do a bulk stock update.
3. WP-Cron Is Stalling
WordPress uses a background task system called WP-Cron to run scheduled updates, including inventory syncs with third-party tools or automatic stock recalculations. The problem: WP-Cron only fires when someone visits your site. On a low-traffic site, those scheduled tasks can sit in a queue for hours before they run.
If your inventory numbers lag by one to four hours after a sale or stock update, this is almost certainly the cause.
Fix: Replace WP-Cron with a real server cron job. Your hosting provider can usually set this up in a few minutes. You schedule wp-cron.php to run every 5 minutes via your server’s task scheduler instead of relying on site traffic to trigger it. This alone eliminates the lag for most stores.
4. Two Plugins Are Updating the Same Field
This one is harder to spot because it does not fail loudly. Instead, stock counts drift in unpredictable directions.
When two plugins both write to the same inventory field, they overwrite each other. One plugin sets a product to 5 units. Another runs a sync and sets it to 12. The first one runs again and sets it back to 5. Your actual stock count becomes whatever ran last, not what is accurate.
This is common for stores that use a WooCommerce-centric inventory plugin alongside a separate inventory management plugin, or when a point-of-sale sync and an order management tool both update stock simultaneously.
Fix: Decide which plugin owns inventory data and disable stock management in the others. You should have exactly one source of truth for stock counts. If you are using WP Inventory Manager for physical stock tracking, turn off WooCommerce’s stock management so the two systems are not fighting each other.
5. Multi-Location Stock Is Tracked in One Bucket
If you sell from more than one location, warehouse, or channel and you are tracking all stock in a single field, your numbers will always be wrong.
Consider a retailer with a physical store and an online shop. A sale happens in the store. Nobody updates the WordPress inventory. The online store still shows the old count. The item gets sold online too. Now you have an angry customer and a hole in your inventory records.
Fix: Use a plugin that supports location-level stock tracking natively. WP Inventory Manager’s Locations Manager add-on lets you assign stock to specific locations so each site or warehouse has its own count. Fulfillment then pulls from the right bucket, not a shared pool that nobody fully controls.
How to Run a Quick Inventory Audit
Before you troubleshoot, you need a baseline. Here is a simple process:
- Export your current stock counts from WordPress to a spreadsheet
- Do a physical count (or pull counts from your POS or warehouse system)
- Compare the two side by side
- Identify which items are off and by how much
- Check each discrepancy against the five causes above
Once you have found the pattern, you can fix the root cause instead of chasing individual wrong numbers.
When the Problem Is the Plugin Itself
Sometimes the issue is not configuration. Some plugins are simply not built to handle inventory accurately at scale. Signs you have outgrown your current setup:
- Stock counts change for no apparent reason
- Bulk updates do not save consistently
- The plugin has no audit log so you cannot trace when a count changed
- You are manually correcting numbers more than once a week
WP Inventory Manager is built specifically for this. It works without WooCommerce, supports multi-location tracking, keeps a record of stock changes, and does not fight with your other plugins over the same database fields. You can start with the free version and add capabilities as your business grows.
