Skip to main content
Metrics type: Key MetricsCategory: Ecommerce Platform
OOS variants. Pair with the cross-platform ad-spend card to find the real revenue blockers.

At a glance

Real-time count of variants with inventory_quantity <= 0 while still being marketed. The most actionable inventory pulse on the dashboard, every variant on this list that is also part of an active ad campaign is burning ad spend with zero conversion possibility.

Calculation

Calculated automatically from your Shopline data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

An APAC fashion brand running a Hong Kong Shopline store, snapshot at 09:30 HKT on 27 Apr 26. The brand sells womenswear with sizes XS-XL. Total catalogue: 1,200 SKUs (240 products x ~5 size variants each). At snapshot time the OOS-variant count reads 47.
What it means. 47 OOS variants is well above the alert (>0). The actionable subset is 18 (the variants on active ad campaigns); the merchant is burning ~HK$ 2,140 / day of marketing budget on impossible-to-convert SKUs. That is the shopline_xc_ads_on_oos drill-down at work. The 4 negative-stock variants are the urgent ones; orders accepted against negative inventory will eventually fail to ship and convert directly into refund-rate spikes. The merchant should pause those listings now and reconcile inventory with warehouse 2 before re-enabling. The action: pause ads for the 18 ad-active OOS variants today (saves HK$ 2,140 / day), pause sales on the 4 negative-stock variants until reconciled, and add the 22 hero-XS/S variants to a restock-priority email list. Total OOS count should drop from 47 to ~25 after restock arrives later this week.

Sibling cards merchants should reference together

Reconciling against the vendor’s own dashboard

Where to look in Shopline’s own dashboard:
Shopline Admin -> Inventory -> Variants (filter by inventory_quantity <= 0) The Admin view is real-time; the count there should match this card within sync-lag tolerance.
Why our number may legitimately differ from Shopline’s Admin: Internal identity: shopline_inventory_alerts = COUNT(variants WHERE inventory_quantity <= 0 AND track_quantity AND product.status = 'active' AND NOT continue_selling_when_out_of_stock) evaluated in real-time.

Known limitations / merchant FAQs

Why is the alert at any non-zero count? Because every OOS variant with active marketing is a revenue blocker. The alert is meant to be loud; if the merchant runs a large catalogue and tolerates some baseline OOS, the threshold is configurable per-store. My count includes negative-stock variants. Is that a bug? No, that is intentional. Negative stock means “we accepted more orders than we have inventory for”; those orders will fail to ship and convert to refunds. Surfacing them prominently is the point. Why doesn’t this match my warehouse stock report? Two usual causes. (1) Shopline only knows what was synced to it; if your warehouse system pushes updates on a 4-hour cadence, the Shopline view lags. (2) The card excludes backorder-enabled variants by design; your warehouse report may include them. My OOS count never drops below 30. Why? Almost always tail SKUs the merchant has long-term ignored. The healthy action is to either restock or archive them. Tail OOS pollutes the count and dulls the alert; archiving cleans both. Can I exclude specific variants from the count? Yes; tag them vortexiq_ignore_oos (or set the manifest exclusion list). Use this for end-of-line clearance variants where you do not intend to restock and do not want the alert noise. My ads card shows 18 ads on OOS but this card shows 47 OOS variants. Why the gap? The 18 are OOS variants that are also on active ad campaigns; the other 29 are OOS but not currently being advertised. Both are blockers, but the ads-on-OOS subset is the highest-ROI pause action because you save spend immediately. How fast does this update after a restock? Webhook-driven; under 60 seconds in practice. The merchant updates inventory in the Shopline Admin or via API, the webhook fires, and the count drops on the next render. Does this count product-level or variant-level OOS? Variant-level. A product with 5 variants where only the XS is OOS counts as 1, not 5. This matches how merchants think about OOS (per-size, per-colour, per-variant). Why doesn’t this surface my JKO / FPS payment OOS issues? This card is inventory only, not payment. Payment-method outages show up in shopline_payment_methods as a sudden share drop and in shopline_alert_revenue_drop as a revenue anomaly.

Tracked live in Vortex IQ Nerve Centre

Zero/Negative Stock Variants is one of hundreds of KPI pulses Vortex IQ tracks across Shopline 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.