OOS variants. Pair with the cross-platform ad-spend card to find the real revenue blockers.
At a glance
A live count of product variants whoseProduct.totalInventory(or any underlyingInventoryLevel.available) is at zero or negative. The single ops red-flag for “we are losing sales right now.”
Calculation
Calculated automatically from your Shopify 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 apparel brand on Shopify Plus. Spring drop went live 04 Apr 26. The next morning, 12 Apr 26, the card reads 47 variants OOS.
Six things to notice:
- The headline (47) overstates the operational problem. 27 of those are clearance variants, deliberately running out so the brand can move into the new season. Filtering by
status = ACTIVE AND productType != 'Clearance'would show 20 truly worrying variants. Vortex IQ Nerve Centre doesn’t auto-filter clearance today, that’s a manual judgement call when reading the list. - Pair with revenue impact, not raw count. Of the 20 non-clearance OOS variants, only 4 sit in the top-50 by revenue from the last 30 days. Those 4 are the real money. Cross-reference Top Products by Revenue to find them.
- The cross-platform impact is the killer. If the brand is running Google Ads and Meta Ads on the linen shirt, every click is now landing on a sold-out PDP, paying CPC for zero conversion. This is exactly what Active Ads on Out-of-Stock SKUs catches and is the highest-ROI pause in the AI OS.
- Negative inventory is the urgent subset. If 3 of those 47 variants show NEGATIVE stock (oversold because Continue selling was on), they need attention TODAY: every new order deepens the customer-promise gap. Check Shopify Admin → Inventory → Available sorted ascending.
- POS oversells are silent. A POS sale at the till of the last 2 jumpers happens before the storefront updates. The OOS shows up here within minutes of webhook fire, but for those 2 customers the brand promise was already met. The card is a leading indicator for online sales, a lagging indicator for retail.
- The fix-time matters. Variants with a Shopify Inventory Incoming PO arriving in 5 days are temporarily OOS but recoverable. Variants with no Incoming row are permanent stockouts requiring a reorder. The card doesn’t expose Incoming today; check Shopify Admin → Inventory → Incoming to triage.
Sibling cards merchants should reference together
The OOS count is the trigger. The decision-quality cards are these:Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin: Products → Inventory → filter Available: 0 or less. The count of matching rows should match this card to within sync-lag tolerance (5 to 15 minutes). Filter additionally by Status: Active to match the card’s active-only definition. Other Shopify Admin views that look like the same number but aren’t:- Reports → Sell-through rate: a velocity metric (units sold / units stocked over period), not a current OOS count. Useful for forecasting OOS, not for diagnosing now.
- Products → All products → Out of stock filter: counts PRODUCTS with at least one OOS variant. This card counts VARIANTS. A 10-variant product with 1 OOS variant counts as 1 product in Shopify’s filter and 1 variant here, the numbers diverge as multi-variant products dominate.
- Apps like Stocky / Inventory Planner: these include Incoming and Available together to show net position. This card shows current Available only, ignoring the next PO arriving.
- Home → “Low stock” widget: a separate threshold (typically <5 units), not zero. Read this as a leading indicator before items hit OOS.
Cross-connector reconciliation:
Inventory state is Shopify-internal. The closest cross-connector signal is in the cross-platform cards Vortex IQ derives from this:
Known limitations / merchant FAQs
Why does my count keep climbing even though I’m restocking? Restocks add inventory to incoming POs in Shopify, but the Available count only updates when the PO is received (the warehouse marks units in). If the count keeps climbing while you have £30k of stock in transit, you’re seeing the gap between Incoming and Available. To see the net position, look at Shopify Admin → Inventory → Incoming alongside this card. Does negative stock count? Yes, and it’s the urgent subset. Negative inventory means you’ve oversold, customers paid for stock that doesn’t exist. This happens when Continue selling when out of stock is on for a variant. Each new order deepens the negative count and the customer-promise gap. Treat negative-stock variants as the highest priority on the list. Why does my POS not appear to update inventory in real-time? It does, the issue is usually that Shopify webhook delivery has lag (5 to 60s) and the OpenSearch index in Vortex IQ has its own ingest lag (5 to 15 min). For ops triage, always reconcile against Shopify Admin → Products → Inventory directly during a live incident. This card is a 5-minute-lagged view, not a real-time POS dashboard. My multi-location store, how does this card aggregate? The card sumsAvailable across all active fulfillment locations. A variant that has 0 in London and 50 in Manchester is NOT on this card because the global Available is 50. To see per-location stockouts, use Shopify Admin → Settings → Locations → Inventory at this location. Per-location OOS cards are on the roadmap.
Do bundle SKUs work correctly?
Mostly yes, with caveats. Native Shopify Bundles tie inventory to component SKUs, so the bundle Available is the limiting component’s Available. Apps like Bundle Pro / SimpleBundles often create a virtual SKU with its own inventory record, which can show Available=100 even when the component is OOS. Treat bundle SKUs with care, the card may misreport.
Why do I see archived products on the list?
You shouldn’t. The card filters to Product.status = ACTIVE. If you’re seeing archived products, either Shopify hasn’t propagated the status change to the index yet (sync lag), or the product is DRAFT not ARCHIVED and DRAFT was inadvertently included in your workspace’s filter config. Open a Vortex IQ support ticket and reference the affected SKU.
Does this include digital products and gift cards?
Digital products typically have inventory tracking off (tracksInventory = false) and will NOT appear on this list regardless of “stock”. Gift cards in Shopify are issued as a SKU type with effectively infinite inventory and similarly won’t appear. So the card is implicitly physical-goods only.
The card alerts >0. Is that the right threshold for me?
For most merchants, yes, any active OOS is a problem. But brands with a long-tail catalogue (5,000+ active variants) often have a structural 5 to 10% OOS background level for low-velocity items they’re letting run out intentionally. For those brands, the threshold should be reset to OOS-of-top-50-by-revenue or OOS-with-active-ads. Configurable per workspace in Nerve Centre → Alerts.
Action playbook when this card alerts:
- Open the OOS list. Sort by units sold last 30 days (highest velocity first).
- For top-velocity OOS: pause Google Ads and Meta Ads on that SKU immediately, see Active Ads on Out-of-Stock SKUs.
- For negative-stock variants: contact customer-service to email affected customers proactively with restock ETA.
- For top-revenue OOS without an Incoming PO: place an emergency reorder. The financial cost of expedited shipping is almost always less than the revenue lost.
- For long-tail OOS without ads: deprioritise. Not every OOS is worth fixing; some are intentional sell-through.
- Review Continue selling when out of stock settings, decide policy per SKU. Generally: enable for back-orderable items with clear customer comms, disable for must-ship-immediately items.