Skip to main content
Card class: HeroCategory: Ecommerce Platform
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.
What it countsCOUNT(products WHERE stock_status changed to 'outofstock' in last 1h). Fires when count >5 AND >2σ above the 7D baseline of hourly OOS flips.
REST API endpointGET /wp-json/wc/v3/products?stock_status=outofstock&modified_after=.... Polled every 10 minutes.
VAT / tax / shipping / discountsNot applicable, inventory state.
Status filterOnly stock_status transition from instock (or onbackorder) to outofstock.
VariationsVariations count separately. A parent product losing 5 size/colour combos in one hour can trip the alert on its own.
CurrencyCurrency-agnostic.
Channels / sourcesInventory is global across channels. Marketplace plugin pools may not match this card.
Self-hosted vs managed-WooSelf-hosted with object-cache misconfiguration can produce a false-spike pattern if cache flushes (5 SKUs become “newly OOS” because the cache caught up, not because they actually flipped). Managed-Woo with Redis is steadier.
Time windowRT (rolling-1h, polled every 10 min)
Alert trigger>5 SKUs flipped to OOS in 1h AND >2σ vs 7D baseline; sentiment_key out_of_stock_count
Rolesowner, operations, marketing

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.
Hour bucketOOS flipsCause
14:00-14:591Normal
15:00-15:592Normal
16:00-16:5918Alert fires
Three observations:
  1. 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.
  2. 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.
  3. Plugin-induced data shape variance: ATUM Inventory Management. ATUM stores stock in custom tables and writes to _stock_status on 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

CardWhy pair it with this alert
WC Out of StockThe cumulative count behind this alert.
WC Low StockThe leading indicator, often spikes 1-2 hours before this alert.
WC Ads on OOSThe action card: pause ad spend on the freshly OOS SKUs.
WC Top ProductsIdentifies whether the OOS spike hit revenue-leaders or long-tail.
BC Alert OOS SpikeCross-platform peer for agencies.

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:
ReasonDirection
Time-zone. Alert evaluated UTC; WP Admin uses WP-site timezone. Hour buckets may not align.Both report same events
Self-hosted server uptime. Cache flush after a brief outage can backfill OOS state and look like a spike.Self-resolves
Plugin-version compatibility. ATUM, Stock Synchronisation plugins update on a delay.Alert may lag by up to 5-10 min
Currency plugin behaviour. Not relevant for inventory.n/a
Cross-connector reconciliation:
CardExpected relationship
google_ads.gads_disapproved_productsOOS spike on Woo => disapproval spike on Merchant Center within 24-48 hours unless ads are paused.

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 only outofstock? 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?
  1. Confirm timezone alignment.
  2. Refresh WP Admin (purge object cache).
  3. Check whether a custom inventory plugin overrides _stock_status.
  4. If the gap persists, contact support.

Tracked live in Vortex IQ Nerve Centre

OOS Spike Alert is one of hundreds of KPI pulses Vortex IQ tracks across WooCommerce and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.