> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Out-of-Stock Items, Square Online

> Out-of-Stock Items: OOS bestsellers leak revenue while ad spend continues, feeds ads_on_oos kill-shot. How to read it, why it matters, and how to act on it.

**Metrics type:** [Key Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> 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 counts**            | `COUNT(items WHERE inventory_count.quantity == 0)` from the Square Inventory API, filtered to active items in the catalog.                                                                                                                                                                    |
| **VAT / tax treatment**       | n/a, this is an inventory count.                                                                                                                                                                                                                                                              |
| **Shipping**                  | n/a.                                                                                                                                                                                                                                                                                          |
| **Discounts**                 | n/a. An item that's OOS at full price is still OOS.                                                                                                                                                                                                                                           |
| **Refunds**                   | n/a.                                                                                                                                                                                                                                                                                          |
| **Cancelled / voided orders** | n/a, this card is real-time inventory, not order-based.                                                                                                                                                                                                                                       |
| **Currency**                  | n/a.                                                                                                                                                                                                                                                                                          |
| **Channels / sources**        | **Per-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 window**               | `RT` (real-time, polled every 5-15 minutes from Square Inventory API)                                                                                                                                                                                                                         |
| **Alert trigger**             | `>10` items, threshold-based                                                                                                                                                                                                                                                                  |
| **Roles**                     | owner, 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 bucket                                                   | Count  | Notes                                                  |
| ------------------------------------------------------------- | ------ | ------------------------------------------------------ |
| Active catalog items                                          | 1,420  | All items marked `is_archived = false` in Square Items |
| In stock at both locations                                    | 1,180  | Healthy core                                           |
| In stock at retail only (web shows OOS)                       | 124    | Web shoppers see "Sold out", retail shoppers can buy   |
| In stock at web only (retail shelf empty)                     | 76     | Retail 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) | 6      | The dangerous slice                                    |
| Of those 40 OOS items: long-tail dead stock                   | 28     | Negligible revenue impact                              |
| Of those 40 OOS items: seasonal items pre-launch              | 6      | Expected, 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](/nerve-centre/kpi-cards/square-online/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

| Card                                                                                     | Why pair it with OOS Products                                                                                                                                                                       |
| ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Low-Stock Products](/nerve-centre/kpi-cards/square-online/low-stock-products)           | The leading-indicator. Today's low-stock items become tomorrow's OOS items. Pair to anticipate.                                                                                                     |
| [Top Products by Revenue](/nerve-centre/kpi-cards/square-online/top-products-by-revenue) | Cross-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 Rate](/nerve-centre/kpi-cards/square-online/conversion-rate)                 | OOS spikes typically pull web CR down within a day, shoppers land on a sold-out listing and bounce.                                                                                                 |
| [Total Revenue](/nerve-centre/kpi-cards/square-online/total-revenue)                     | Rising OOS count usually precedes a revenue dip by 1-3 days. Useful as an early warning.                                                                                                            |
| [Refund Rate](/nerve-centre/kpi-cards/square-online/refund-rate)                         | Sometimes 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_products`](/nerve-centre/shopify/oos_products)                             | Same metric on Shopify.                                                                                                                                                                             |
| [`bigcommerce.oos_products`](/nerve-centre/bigcommerce/oos_products)                     | Same metric on BigCommerce.                                                                                                                                                                         |

## Reconciling against the vendor's own dashboard

**Where to look in the Square Dashboard:**

[Square Dashboard, Items, Inventory](https://squareup.com/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:**

| Reason                                                                                                                                                                                                            | Direction 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:

* [`google_adwords.ads_on_oos`](/nerve-centre/google_adwords/ads_on_oos) (planned), surfaces ad spend currently pointing at OOS bestsellers.
* [`amazon_ads.ads_on_oos`](/nerve-centre/amazon_ads/ads_on_oos) (planned).

***

<details>
  <summary><em>Same-metric documentation cross-reference (for agencies running multiple platforms)</em></summary>

  OOS Products exists as a card on every commerce-platform connector.

  * [`shopify.oos_products`](/nerve-centre/shopify/oos_products)
  * [`bigcommerce.oos_products`](/nerve-centre/bigcommerce/oos_products)
  * [`adobe_commerce.oos_products`](/nerve-centre/adobe_commerce/oos_products)
</details>

## 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](/nerve-centre/kpi-cards/square-online/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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
