OOS bestsellers leak revenue while ad spend continues, feeds ads_on_oos kill-shot.
At a glance
Real-time count of products that show zero stock right now in Square’s Inventory API. The single highest-leverage operational signal on a Square account: every minute an OOS bestseller stays OOS while ad spend runs against it is leaked revenue.
Calculation
Calculated automatically from your Square Online 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 gift store on Square: one retail location plus Square Online. Catalog of 1,420 active items (mix of single-SKU and variant-driven products). Snapshot taken on 12 Apr 26 at 14:00 UTC.
What’s interesting:
- Only 6 of the 40 OOS items actually matter. A flat OOS count of 40 doesn’t tell you whether you’re losing money. The dangerous slice is OOS bestsellers, items that drive disproportionate revenue. Cross-reference this card with Top Products by Revenue, the overlap is the kill-shot list.
- Per-location OOS is a richer signal than chain-wide. A bestseller OOS at retail with web stock is fine if you can ship it; an item OOS at retail with active in-store ad campaigns is a problem. Square’s per-
location_idinventory makes this slice possible; pin per-location panels to surface. - Variant-level OOS hides under product-level “in stock”. A t-shirt with 5 sizes might show in stock if any size has inventory, but if Medium (the bestseller size) is OOS, the listing converts at near-zero. This card counts at the variant level (
catalog_object_id), not the parent product level, the right granularity for OOS reads. - The alert fires at >10 OOS items. This snapshot has 40, well above threshold. Vortex IQ Nerve Centre raises the alert; the kill-shot diagnostic surfaces the 6 OOS bestsellers and (if Square Ads is connected) any active ad spend pointing at them.
Sibling cards merchants should reference together
Reconciling against the vendor’s own dashboard
Where to look in the Square Dashboard: Square Dashboard, Items, Inventory. Filter by Out of stock to see the same set of items this card counts. Square Online’s per-product editor also flags OOS state with a “Sold out” badge on the storefront. For per-location inventory, use the Stock by location tab. Why our number may legitimately differ from Square Dashboard:
Cross-connector reconciliation:
OOS data is platform-internal (Square Inventory API is the single source of truth). If a merchant runs a separate ERP / 3PL system as the master inventory record, the Square count may lag the ERP count, the ERP push to Square is the bottleneck.
For ad-driven kill-shot diagnostics, this card pairs with paid-ad connectors:
google_adwords.ads_on_oos(planned), surfaces ad spend currently pointing at OOS bestsellers.amazon_ads.ads_on_oos(planned).
Known limitations / merchant FAQs
My Square Items dashboard says I have 8 OOS items but this card says 40. Why? Three likely reasons: (1) Square Items dashboard counts at the parent-product level by default; this card counts at the variant (catalog_object_id) level, so a t-shirt with 5 sizes (Medium and Large OOS, Small / XL / XXL in stock) shows as 1 product in stock in Square but 2 OOS variants here. (2) Sync lag: this card refreshes every 5-15 minutes; instantaneous changes lag. (3) Per-location: this card counts items OOS at every location; Square’s default Inventory page may show a single-location filter.
Does an item that’s untracked count as OOS?
No. Items with track_inventory = false always read as “in stock” via the Square API, regardless of physical reality. This card respects that, untracked items never count here. Many small Square merchants run untracked for low-cost SKUs (greeting cards, sample-size items). If you need OOS visibility for those items, enable inventory tracking in Square Item editor.
Why does the count fluctuate hour-to-hour?
Real-time inventory changes with every sale and every manual adjustment. A bestseller can sell out at 14:00 and be re-stocked at 15:30 once the merchant tops up. Use the trend, not the snapshot. A persistent OOS count above threshold is a problem; a momentary blip is normal operations.
The alert says >10 OOS items but only 1 of them matters. How do I prioritise?
The headline count is a leading indicator; the kill-shot diagnostic is what matters. Vortex IQ Nerve Centre cross-references this card against Top Products by Revenue to surface the OOS-bestseller subset. Ten OOS items where none are top-50 sellers is a maintenance issue (clear them from the catalog or restock); one OOS item that’s a top-5 seller is a $5,000-a-week leak and a paid-ad budget burn.
Does this include POS-only items?
Yes, Square’s catalog is unified across POS and Square Online. An item OOS at the warehouse is OOS for both retail and web. To split, look at per-location inventory, an item OOS at the retail location only is unsold in-store but still shippable from web stock if web inventory is tracked separately.
What about negative inventory (oversells)?
Square allows negative inventory if oversells happen (e.g. two simultaneous purchases of the last unit). Items with quantity < 0 count as OOS in this card (zero or below). The merchant should investigate the oversell, those orders typically end in fulfilment fails and refunds.
My catalog has 5,000 items. Will this card slow my dashboard?
No. Square’s Inventory API supports batch reads; we poll inventory deltas, not the full catalog every refresh. For very large catalogs (>10K SKUs), the refresh interval can stretch to 15 minutes; that’s fine for an operational signal but not for sub-minute reaction.
What’s the right action playbook when this card spikes?
Three steps in order: (1) sort the OOS list by 30-day revenue, focus on the top quartile, (2) check incoming purchase orders or transfer requests, are restocks already in motion? if yes, this is an inventory-team backlog issue, (3) if Square Ads or Google Ads is connected, pause campaigns that target the OOS bestsellers immediately, even a half-day of OOS ad spend can blow a week’s marketing budget.