Skip to main content
Card class: HeroCategory: Ecommerce Platform
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.
What it countsCOUNT(items WHERE inventory_count.quantity == 0) from the Square Inventory API, filtered to active items in the catalog.
VAT / tax treatmentn/a, this is an inventory count.
Shippingn/a.
Discountsn/a. An item that’s OOS at full price is still OOS.
Refundsn/a.
Cancelled / voided ordersn/a, this card is real-time inventory, not order-based.
Currencyn/a.
Channels / sourcesPer-location. Square tracks inventory per location_id (a 50-pack of beans can be in stock at the Brooklyn cafe but OOS at Park Slope). This card sums distinct items that are zero across all locations, the strict OOS set. To see “OOS at one location only”, filter by location.
Time windowRT (real-time, polled every 5-15 minutes from Square Inventory API)
Alert trigger>10 items, threshold-based
Rolesowner, operations

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.
Item bucketCountNotes
Active catalog items1,420All items marked is_archived = false in Square Items
In stock at both locations1,180Healthy core
In stock at retail only (web shows OOS)124Web shoppers see “Sold out”, retail shoppers can buy
In stock at web only (retail shelf empty)76Retail walk-ins miss out, web is fine
OOS at every location (this card)40
Of those 40 OOS items: bestsellers (top 50 by 30-day revenue)6The dangerous slice
Of those 40 OOS items: long-tail dead stock28Negligible revenue impact
Of those 40 OOS items: seasonal items pre-launch6Expected, not a problem
What’s interesting:
  1. 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.
  2. 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_id inventory makes this slice possible; pin per-location panels to surface.
  3. 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.
  4. 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

CardWhy pair it with OOS Products
Low-Stock ProductsThe leading-indicator. Today’s low-stock items become tomorrow’s OOS items. Pair to anticipate.
Top Products by RevenueCross-reference reveals which OOS items actually leak revenue. 90% of OOS items are long-tail dead stock; the 10% that are top sellers are the kill-shot.
Conversion RateOOS spikes typically pull web CR down within a day, shoppers land on a sold-out listing and bounce.
Total RevenueRising OOS count usually precedes a revenue dip by 1-3 days. Useful as an early warning.
Refund RateSometimes OOS at the warehouse without the catalog being marked OOS leads to oversells, fulfilment fails, customer refunds. A simultaneous OOS spike + refund spike points to inventory data drift.
shopify.oos_productsSame metric on Shopify.
bigcommerce.oos_productsSame metric on BigCommerce.

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:
ReasonDirection of divergence
Sync lag. Square Inventory API has a small lag (typically <5 minutes). A sale at the register that pushes inventory to zero is reflected here ~1-5 minutes later.Vortex IQ momentarily lags
”Stock alerts” vs OOS. Square supports a “Low stock alert” threshold per item (e.g. alert when <5 left). Items at or below the threshold are flagged in Square but not OOS, those don’t count here.No divergence in OOS strict mode
Items without stock tracking. Square allows items to be untracked (location_overrides[].track_inventory = false). Untracked items always show “in stock” and never count here, even if physically depleted.Vortex IQ may understate true OOS for untracked items
Archived / hidden items. Items with is_archived = true are excluded from this card. If a merchant hides an item from the storefront but doesn’t archive it, the item still counts.Vortex IQ may overcount
Variant vs parent. We count at variant (catalog_object_id) granularity. Square’s Items page can be set to show parent products; counts will look different in that view.Vortex IQ usually higher (variants > parents)
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:

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.

Tracked live in Vortex IQ Nerve Centre

Out-of-Stock Products is one of hundreds of KPI pulses Vortex IQ tracks across Square Online 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.