Products with stock_status=outofstock OR stock_quantity<=0. Source-of-truth feeding the ads_on_oos cross-platform kill-shot.
At a glance
Real-time count of WooCommerce products that are currently out of stock. The ground-truth feeding the Ads on OOS cross-platform kill-shot.
Calculation
Calculated automatically from your WooCommerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US homewares brand on Pressable managed-Woo with 1,840 active products, ~6,200 variations across colour and size. Inventory polled every 10 minutes.
Three observations:
- Variations dominate the count. 312 of 415 OOS items are variations (specific size/colour) rather than entire products. The full SKU may still be sellable in other variants. The Ads on OOS card joins this against ad-active SKUs to flag the high-impact subset.
- Self-hosted server with object cache misconfiguration shows stale counts. A previous host this brand used cached
wc_get_product_stock_statusfor 6 hours. The OOS count showed 380 in the morning, jumped to 415 at lunchtime (cache expired) and dropped to 350 by evening (warehouse restocked but cache showed pre-restock data for hours). Pressable Redis configuration eliminated the lag. - Plugin-induced data shape variance: WooCommerce Subscriptions. Subscription products do not normally track stock, but some merchants enable inventory management on them. Subscriptions plugin then reduces stock on each renewal, which can drive a subscription product to OOS even though it is intangible. Watch for
_subscription_renewalorders alongside Customer Churn.
Sibling cards merchants should reference together
Reconciling against the vendor’s own dashboard
Where to look in WooCommerce Admin: WP Admin → Products → Filter by Stock status: Out of stock. Counts simple products only. For the variation-level count, use WP Admin → WooCommerce → Reports → Stock → Out of stock. Why our number may legitimately differ from WooCommerce Admin:
Cross-connector reconciliation:
Known limitations / merchant FAQs
Self-hosted vs managed-Woo, why does it matter for OOS? Object cache misconfiguration on self-hosted Woo can show stale stock for hours. Managed-Woo hosts almost always run Redis or Memcached correctly. If your OOS count appears to “jump” rather than drift, suspect cache. Status-filter selection, why excludeonbackorder?
Backorder-allowed products are still purchasable, just delayed. Treating them as OOS would over-flag and noise the alert. If your business model relies heavily on backorders (e.g. furniture), use the Low Stock card instead.
Refund-object accounting, does it affect OOS?
No. Refunds restore stock if manage_stock = true and _restock_refunded_items is enabled (a 2024+ default). The OOS state updates accordingly within minutes.
Plugin-induced data shape variance, what plugins might affect this?
- ATUM Inventory Management stores stock in a custom table; we read the WC core meta fallback.
- Stock Synchronisation for WooCommerce can sync stock from another Woo install on a delay; the OOS count drifts during sync.
- Google Listings & Ads plugin reflects this card’s count in the Merchant Center feed.
- WooCommerce Subscriptions: subscription products tracked as inventory will hit OOS on renewal cycles.
- Refresh WP Admin (purge object cache if Redis-backed).
- Check whether a custom inventory plugin overrides
_stock_status. - Verify variations are being counted in WP Admin (the Products list shows simple products only by default, the Stock report shows variations).
- If the gap persists, contact support.