> ## 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 Products, ShipBob

> Out-of-Stock Products for ShipBob stores. Tracked live in Vortex IQ Nerve Centre. How to read it, why it matters, and how to act on it.

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

## At a glance

> Live count of SKUs with zero or negative on-hand inventory across all ShipBob DCs, scoped to SKUs with measurable recent demand (no point alerting on dead-SKU stockouts). The "what is missing right now and customers want it" number for ops and merchandising.

|                               |                                                                                                                                                                                                                                                                                                                                |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **What it counts**            | `COUNT(DISTINCT sku WHERE SUM(on_hand_qty across all DCs) <= 0 AND demand_30d > demand_threshold)`. Each unique SKU counts 1, regardless of how deeply OOS or how many DCs are dry.                                                                                                                                            |
| **API endpoint**              | `GET /inventory` (Inventory API). Reads `on_hand_quantity` and `available_quantity` per SKU per DC; the card sums across DCs to determine network-wide OOS.                                                                                                                                                                    |
| **DC scope**                  | **Aggregated across every DC** for OOS determination. A SKU is OOS only when zero across the whole network; if Chicago has stock and Cincinnati does not, the SKU is in-stock for the merchant (multi-DC routing handles it). Per-DC view in [Inventory by Warehouse](/nerve-centre/kpi-cards/shipbob/inventory-by-warehouse). |
| **Shipping-method scope**     | Not applicable, this is an inventory metric.                                                                                                                                                                                                                                                                                   |
| **Inventory-split semantics** | A SKU is "in stock" if any DC has it; the card counts SKUs that are zero everywhere. Single-DC stockouts (one DC dry, another full) appear in [Inventory Heatmap](/nerve-centre/kpi-cards/shipbob/inventory-distribution-heatmap), not here.                                                                                   |
| **Perfect-order definition**  | Stockouts at order-time block fulfilment, which fails on-time-shipping, which fails perfect-order. The OOS card is one upstream cause of the perfect-order leg.                                                                                                                                                                |
| **SLA definition**            | Not directly applicable, but related: a SKU OOS at order-time creates an "on-hold" order until restocked, which guarantees an SLA miss. The card surfaces the at-risk SKUs before orders queue against them.                                                                                                                   |
| **Peak-period seasonality**   | **Q4 typically inflates OOS count by 2 to 5 times steady-state.** Volume spikes outpace supply-chain lead times; viral or sale-driven SKU spikes deplete fastest-moving SKUs in days. December typically sees 5 to 15 OOS at any moment for a 200-SKU brand.                                                                   |
| **API rate limits**           | 200 requests / minute / token. Inventory API is webhook-driven via `inventory.updated` events; the card refreshes within seconds of stock movement.                                                                                                                                                                            |
| **Returns / RTO**             | Excluded for the OOS calculation (returned items take 2 to 7 days to be re-received and re-stocked, during which they do not contribute to on-hand).                                                                                                                                                                           |
| **Time window**               | `RT` (real-time, computed from latest indexed inventory snapshot)                                                                                                                                                                                                                                                              |
| **Alert trigger**             | `any OOS`, the `stockout_with_demand` sentiment trips when ANY SKU with measurable demand goes to zero. The threshold can be adjusted (e.g. ignore SKUs with \<10 sales/30D).                                                                                                                                                  |
| **Roles**                     | owner, operations, marketing                                                                                                                                                                                                                                                                                                   |

## Calculation

Calculated automatically from your ShipBob 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 DTC supplements brand using ShipBob 3PL with 3 DCs and a 180-SKU catalogue. Reading taken at 09:00 ET on 12 Mar 26.

| SKU              | Top status                      | 30D demand (units) | Days since OOS network-wide         | Note                                |
| ---------------- | ------------------------------- | ------------------ | ----------------------------------- | ----------------------------------- |
| MAGNESIUM-500    | OOS in CHI, MOV, CIN            | 1,840              | 2 days                              | Top-3 SKU; replenishment ETA 9 days |
| ASHWAGANDHA-30CT | OOS in MOV; in stock at CHI 320 | 920                | 0 (single-DC OOS, not in this card) | Multi-DC routing handles            |
| OMEGA-3-90CT     | OOS in CHI, MOV, CIN            | 720                | 4 days                              | Mid-tier; replenishment ETA 14 days |
| VITAMIN-D3-60CT  | OOS in CIN; in stock at CHI 80  | 280                | 0 (single-DC OOS, not in this card) | Multi-DC routing handles            |
| BIOTIN-90CT      | OOS in CHI, MOV, CIN            | 22                 | 18 days                             | Long-tail SKU, low priority         |
| PROBIOTIC-30CT   | OOS in CHI, MOV, CIN            | 480                | 1 day                               | Mid-tier; replenishment ETA 6 days  |

The card reads **4** OOS SKUs (MAGNESIUM-500, OMEGA-3-90CT, BIOTIN-90CT, PROBIOTIC-30CT) network-wide. Five things to notice:

1. **Single-DC OOS is hidden by design.** Ashwagandha and Vitamin D3 are out at one DC each but in stock elsewhere; ShipBob's routing engine sends Ashwagandha orders to Chicago and Vitamin D3 orders to Chicago, so customers see "in stock" and orders ship cleanly. The card counts only network-wide OOS to surface customer-facing problems, not warehouse-floor curiosities. Pivot to [Inventory Heatmap](/nerve-centre/kpi-cards/shipbob/inventory-distribution-heatmap) to see single-DC OOS for restocking decisions.
2. **The Magnesium-500 and Probiotic-30CT lines are the bleeding ones.** Top-3 SKUs combined 30D demand is 2,320 units; with 9- and 6-day replenishment lead times, the merchant will lose roughly 110 + 95 = 205 sales over the gap (assuming demand continues at trend). At AOV $58 and 1.4 items / order, that is roughly $5,500 of unrealised revenue.
3. **BIOTIN at 22 units / 30D is tagged but not urgent.** The card surfaces it (network-wide OOS, demand exists) but a 22-unit SKU is not a priority. Configure a higher demand threshold (e.g. 50 units / 30D) to filter this out and reduce alert noise.
4. **Q4 inflates this card structurally.** This same brand's 5 Dec 25 reading was 12 OOS SKUs (vs steady-state 2 to 4); Black Friday and Cyber Monday volume cleared three of their top-10 SKUs in 36 hours. Read peak readings in seasonal context; pre-stock 6 to 8 weeks ahead.
5. **The card is a leading indicator for [Operational Health Score](/nerve-centre/kpi-cards/shipbob/operational-health-score).** OOS feeds the inverse-stockout-severity pulse; a climbing OOS count drops the composite within hours. The card is also a leading indicator for [Pending Backlog](/nerve-centre/kpi-cards/shipbob/pending-fulfilment-backlog), since OOS-held orders accumulate.

## Sibling cards merchants should reference together

OOS is the surface; ageing and demand work happens in supporting cards:

| Card                                                                                                | Why pair it with Out-of-Stock Products             | What the combination tells you                                                                     |
| --------------------------------------------------------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| [Inventory by Warehouse](/nerve-centre/kpi-cards/shipbob/inventory-by-warehouse)                    | Per-DC stock levels.                               | Shows whether single-DC OOS exists for SKUs in this card; informs routing-vs-restock decisions.    |
| [Stock vs Demand](/nerve-centre/kpi-cards/shipbob/stock-vs-demand-forecast)                         | Demand-weighted view.                              | Surfaces SKUs at risk of going OOS in 7 to 14 days (early warning), not just those already gone.   |
| [Inventory Heatmap](/nerve-centre/kpi-cards/shipbob/inventory-distribution-heatmap)                 | DC-by-SKU stock matrix.                            | Visual identification of single-DC OOS that the headline OOS count hides.                          |
| [Inventory Ageing](/nerve-centre/kpi-cards/shipbob/inventory-ageing)                                | Time-in-stock per SKU.                             | Old inventory signals over-buying; OOS signals under-buying. Pair to right-size purchase orders.   |
| [Operational Health Score](/nerve-centre/kpi-cards/shipbob/operational-health-score)                | Composite that includes inverse-stockout-severity. | OOS climb drops the composite within hours; the relationship is direct.                            |
| [Pending Fulfilment Backlog](/nerve-centre/kpi-cards/shipbob/pending-fulfilment-backlog)            | OOS-held orders accumulate in backlog.             | Climbing OOS predicts climbing on-hold orders within hours.                                        |
| Cross-connector: [`shopify.unfulfilled_orders`](/nerve-centre/kpi-cards/shopify/unfulfilled-orders) | Customer-side OOS impact.                          | OOS at ShipBob causes Shopify orders to either be PARTIALLY\_FULFILLED or held; correlated metric. |
| Cross-connector: [`shopify.refund_rate`](/nerve-centre/kpi-cards/shopify/refund-rate)               | Downstream impact at 7 to 14 days.                 | Sustained OOS drives customer-cancel-and-refund.                                                   |
| Cross-connector: customer NPS surveys                                                               | Downstream sentiment, lag 14 to 30 days.           | Customers complain loudly about OOS in surveys; correlates with sustained OOS readings.            |

## Reconciling against the vendor's own dashboard

**Where to look in ShipBob Merchant Portal:**

[ShipBob Merchant Portal](https://merchant.shipbob.com/) → **Inventory → Stock Status → Filter "Out of Stock"**. The portal shows per-SKU per-DC inventory levels with on-hand, reserved, available quantities. The closest like-for-like view is "Out of Stock at All DCs".

**Why our number may legitimately differ from ShipBob's portal:**

| Reason                                                | Direction                | Why                                                                                                                                                        |
| ----------------------------------------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Timezone (UTC default)**                            | Negligible               | Real-time card; timezone affects only the demand-window denominator, not the OOS calculation itself.                                                       |
| **DC-level vs aggregated reporting**                  | Aggregated by definition | The card counts network-wide OOS only; portal can show per-DC OOS. Numbers diverge by definition.                                                          |
| **SLA definition variance (demand-threshold filter)** | Either                   | The card filters by recent demand (default >5 sales / 30D); portal shows all OOS. Brands with long-tail SKUs see lower numbers in the card.                |
| **Peak-period batch-processing delays**               | Ours lower briefly       | Inventory webhook lag of 1 to 5 minutes during normal operation; up to 30 minutes during BFCM. T-1-hour fully reconciles.                                  |
| **Reserved stock treatment**                          | Either                   | Portal sometimes counts "reserved for in-flight orders" as in-stock; the card uses `available_quantity` (on-hand minus reserved) by default. Configurable. |

**Cross-connector reconciliation:**

| Card                                                                               | Expected relationship                                                       | What causes legitimate divergence                                                                                                                                 |
| ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`shopify.unfulfilled_orders`](/nerve-centre/kpi-cards/shopify/unfulfilled-orders) | OOS-held orders flow into Shopify unfulfilled. ShipBob lag of 2 to 6 hours. | Shopify orders for OOS SKUs may be allowed at checkout (continue-selling-when-OOS toggle), creating Shopify unfulfilled count without ShipBob being able to ship. |
| Shopify product inventory                                                          | Storefront catalogue.                                                       | Shopify product inventory counts are typically synced from ShipBob; differences indicate sync lag or in-flight reservations.                                      |
| Amazon FBA OOS                                                                     | Peer 3PL with its own inventory. Independent population.                    | Different SKUs allocated to FBA vs ShipBob; not reconciled.                                                                                                       |
| Customer NPS / out-of-stock complaints                                             | Downstream sentiment, lag 14 to 30 days.                                    | Survey response bias; complaints peak when sustained OOS exceeds 7 to 14 days on top-tier SKUs.                                                                   |

***

<details>
  <summary><em>Documentation cross-reference (for agencies running multiple 3PLs)</em></summary>

  OOS / stockout count exists on every 3PL platform with conceptually similar definitions. These are independent inventory pools on different SKUs; the cross-link exists so multi-3PL agencies can navigate documentation.

  * Amazon FBA inventory health
  * Shopify Fulfillment Network historical OOS report (legacy)
</details>

## Known limitations / merchant FAQs

**ShipBob vs FBA, can I see OOS across both?**
Each 3PL holds its own inventory pool; the SKUs allocated to FBA are not visible to ShipBob and vice-versa. Track each separately. The all-up "what is OOS in my catalogue" view sits in Shopify's product inventory, which usually reconciles from both sources but with sync lag.

**How does ShipBob choose which DC to deplete first?**
The router picks the closest DC with stock. If Chicago has 100 units and Cincinnati has 200, Chicago depletes first for Chicago-area orders. Different SKUs deplete at different rates per DC; the [Inventory Heatmap](/nerve-centre/kpi-cards/shipbob/inventory-distribution-heatmap) shows the matrix.

**SLA-vs-carrier-tracking discrepancy, why does OOS make late deliveries worse?**
A SKU OOS at order-time creates an "on-hold" order. The order waits for restock (days to weeks), then ships when stock arrives. Customer expectation set in checkout was 3 to 5 days; actual delivery may be 14+ days. This guarantees an SLA miss and a likely return-and-cancel.

**Perfect-order rate vs OOS, what is the relationship?**
Stockouts at order-time block fulfilment, which fails on-time-shipping (one perfect-order leg) and often cascades to late delivery (another leg) and customer cancellation (a return-leg miss). OOS is the upstream cause; perfect-order is the downstream consequence.

**How do I plan for Q4 / BFCM peak using OOS?**
Three actions. (1) Pre-stock 6 to 8 weeks before BFCM with 1.5 to 2 times normal levels for top-20 SKUs. (2) Set the demand-threshold filter to surface only top-tier SKUs (e.g. >50 sales / 30D) during peak to focus attention. (3) Set the alert threshold tighter on top-3 SKUs and looser on long-tail to reduce alert fatigue.

**Multi-DC inventory split optimisation, how does OOS guide it?**
This card surfaces network-wide OOS; the [Inventory Heatmap](/nerve-centre/kpi-cards/shipbob/inventory-distribution-heatmap) shows single-DC OOS. If one DC consistently runs dry on the same SKU while another holds excess, your inventory split is mis-aligned with customer geography. Re-allocate per the portal's "Inventory Distribution" recommendations.

**Returns, do they immediately re-add to OOS?**
No, with lag. A return takes 2 to 7 days from received-at-DC to be inspected, re-stocked, and counted as available inventory. During that window, the SKU appears OOS even though physical units exist on the DC floor. Pivot to [Return Processing Time](/nerve-centre/kpi-cards/shipbob/return-processing-time).

**Why does ShipBob show OOS but Shopify still allows the order?**
Shopify's "continue selling when out of stock" toggle. If enabled, customers can place orders for OOS SKUs; the order arrives at ShipBob and is held until restock. This is intentional for backorder workflows but causes confusion if not communicated to customers in checkout.

**Why does the count flicker between values within an hour?**
Inventory updates are webhook-driven; each shipment-out and return-in fires an event. A 200-SKU brand can see 5 to 15 inventory events per minute during peak. The count flickers as SKUs cross the OOS boundary back and forth on individual unit movements. The 30-minute rolling average is more useful for monitoring than the live count.

***

### Tracked live in Vortex IQ Nerve Centre

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