Unusual stock-out velocity, viral SKU, fulfilment glitch, or stock-sync plugin failure. Investigate before ad spend wastes.
At a glance
Real-time alert that fires when a burst of WooCommerce SKUs flip to out-of-stock within an hour. Flags viral demand, fulfilment glitches, or stock-sync plugin failures before ad spend wastes.
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 managed-Woo, baseline ~1.2 OOS flips per hour. Wednesday 10 Apr 26, 16:00-17:00 UTC.
Three observations:
- Cause was a viral TikTok mention. A creator featured the brand’s “ceramic mushroom mug” line at 15:50 UTC; traffic spiked 8x and 12 specific mug variations sold through their stock within 50 minutes. The remaining 6 OOS flips were tangential bestsellers caught up in the surge.
- Self-hosted Woo would have looked similar but for a different reason. On flaky shared hosting, the same alert can fire when an object-cache flush refreshes stock state for ~50 products at once. The 2σ baseline filter usually prevents this, but persistent alerts after host events warrant a cache audit.
- Plugin-induced data shape variance: ATUM Inventory Management. ATUM stores stock in custom tables and writes to
_stock_statuson a delay (every 5 minutes by default). On ATUM-using stores the alert can lag by up to 5 minutes, which means viral demand may have already wasted ad budget before the alert fires.
Sibling cards merchants should reference together
Reconciling against the vendor’s own dashboard
Where to look in WooCommerce Admin: WP Admin → WooCommerce → Reports → Stock → Out of stock shows the cumulative OOS list. WC does not expose hourly flip velocity; this card is the only Vortex IQ view of that. Why our alert may fire when the merchant sees nothing:
Cross-connector reconciliation:
Known limitations / merchant FAQs
Self-hosted vs managed-Woo, false-alert risk? Self-hosted with object-cache misconfiguration produces occasional false spikes (cache flush backfills OOS state). Managed-Woo with Redis is steadier. Status-filter selection, why onlyoutofstock?
Backorder-allowed flips are not really stockouts (the customer can still buy). Including them would noise the alert.
Refund-object accounting?
Refunds restore stock if _restock_refunded_items is enabled. A bulk refund could theoretically push SKUs back to instock, never trips this alert.
Plugin-induced data shape variance?
ATUM Inventory Management updates on a 5-min delay; alert can lag. Stock Synchronisation across multiple Woo installs can produce alert clusters when sync runs. WooCommerce Subscriptions products sometimes track stock and trip alerts on renewal cycles.
Multi-currency, does it affect this alert?
No, inventory is currency-independent.
Why does Woo and Stripe disagree?
Stripe does not track inventory; the metrics are unrelated.
Today is jumpy, why?
Spike alerts are inherently event-driven. The 2σ baseline filter prevents most false positives; rolling-1h evaluation auto-clears once velocity returns to baseline.
Sync-lag from self-hosted server slowness?
Indexer running every 10 min means OOS state can be up to 10 min stale. After host recovery, watch for a delayed alert burst as catch-up reflects intervening events.
My WP Admin shows fewer OOS flips, debug?
- Confirm timezone alignment.
- Refresh WP Admin (purge object cache).
- Check whether a custom inventory plugin overrides
_stock_status. - If the gap persists, contact support.