> ## 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.

# OOS Spike Alert, Shopify

> Anomalous OOS spike, usually a misconfigured sync, hold, or sudden demand event. Pair with the cross-platform ad-spend card. How to read it, why it matters...

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

> Anomalous OOS spike, usually a misconfigured sync, hold, or sudden demand event. Pair with the cross-platform ad-spend card.

## At a glance

> Real-time anomaly alert: the OOS variant count has jumped more than 2 standard deviations above its 30-day baseline. Catches misconfigured-sync events, accidental holds, and sudden viral-demand spikes before customer-service queues fill.

|                               |                                                                                                                                                                                                                                                                          |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **What it counts**            | `current_oos_count > mean(oos_count_30D) + 2 * stddev(oos_count_30D)` evaluated every 5 minutes. The alert is binary (firing / not); the count itself comes from [Products with Zero/Negative Stock](/nerve-centre/kpi-cards/shopify/products-with-zero-negative-stock). |
| **VAT / tax treatment**       | Not applicable, count metric.                                                                                                                                                                                                                                            |
| **Shipping**                  | Not applicable.                                                                                                                                                                                                                                                          |
| **Discounts**                 | Not applicable; OOS is independent of pricing state.                                                                                                                                                                                                                     |
| **Refunds**                   | Not applicable directly; restocked refunds may move variants OFF the OOS list.                                                                                                                                                                                           |
| **Cancelled / voided orders** | Cancellations with restock=true return inventory and may reduce the count.                                                                                                                                                                                               |
| **Currency**                  | Not applicable (count of variants).                                                                                                                                                                                                                                      |
| **Channels / sources**        | Inventory is store-wide; channels don't filter the count. POS sales drain inventory the same as online sales.                                                                                                                                                            |
| **Time window**               | `RT` (real-time, 5-min poll cadence)                                                                                                                                                                                                                                     |
| **Alert trigger**             | `OOS variant count up >2σ vs 30D baseline`. Configurable.                                                                                                                                                                                                                |
| **Sentiment key**             | `out_of_stock_count`                                                                                                                                                                                                                                                     |
| **Roles**                     | owner, operations, marketing                                                                                                                                                                                                                                             |

## 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 DTC brand on Shopify Plus, \~3,200 active variants, 30D baseline OOS count = 22 (σ = 6). Tuesday 06 May 26, 09:00 PT, the alert fires: OOS count = 87. That's 65 above mean, \~10σ above baseline.

Drill-down by product family reveals:

| Product family                         | OOS variants 06 May | Normal level | Note                           |
| -------------------------------------- | ------------------- | ------------ | ------------------------------ |
| Linen tee SS26 (5 sizes × 6 colours)   | 28                  | 2-3          | Spring drop momentum, expected |
| Wide-leg trouser (5 sizes × 4 colours) | 14                  | 1-2          | Same drop, expected            |
| Bucket hat (3 sizes × 2 colours)       | 6                   | 0            | Same drop                      |
| Core basics (40+ variants)             | 18                  | 2-3          | UNEXPECTED                     |
| Accessories (small)                    | 3                   | 1            | Normal                         |
| Last-season clearance                  | 18                  | 14           | Trickle, normal                |

Six things to notice:

1. **The expected spike (drop launch) was within tolerance.** Linen + trouser + bucket hat drop on 04 May, OOS rising over 48 hours is the signature; the brand should have absorbed it via reorder POs already placed.
2. **The unexpected spike is in core basics.** 18 core-basic variants OOS is 6× normal. This isn't a launch event; something broke. Check 1: did inventory sync from the warehouse stop? Check 2: did the cycle count get re-imported with stale data?
3. **The cause was a 3PL sync glitch.** Investigation reveals the warehouse barcode-scanner system pushed stale "0" counts for 18 SKUs to Shopify at 03:00 PT. The actual physical inventory is fine; this is a data fault.
4. **Customer impact is live.** Every minute these 18 SKUs show as OOS, the storefront blocks orders. Estimate: 18 SKUs × \~4 orders/SKU/hour normal velocity = 72 orders blocked. Cross-reference [Active Ads on OOS](/nerve-centre/kpi-cards/shopify/active-ads-on-out-of-stock-skus), every Google Ads click on these 18 SKUs is wasted CPC right now.
5. **The fix is fast.** Manually re-publish inventory levels from the WMS to Shopify; SKUs typically come back in stock within 5-10 minutes. Then run a full reconciliation.
6. **Document the lesson.** A 03:00 cron job hit a corrupt CSV; review the WMS-to-Shopify sync pipeline for resilience. Add a sanity check (refuse imports where >10 SKUs go to zero in one batch).

## Sibling cards merchants should reference together

The OOS-spike alert is the trigger. The investigative companions:

| Card                                                                                                   | Why pair it with this alert                                                               |
| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| [Products with Zero/Negative Stock](/nerve-centre/kpi-cards/shopify/products-with-zero-negative-stock) | The underlying count this alert watches. Drill-down to see the SKU list.                  |
| [Active Ads on OOS SKUs](/nerve-centre/kpi-cards/shopify/active-ads-on-out-of-stock-skus)              | The cross-platform companion: ads still serving on now-OOS SKUs. Pause first, fix second. |
| [Top Products by Revenue](/nerve-centre/kpi-cards/shopify/top-products-by-revenue)                     | Which OOS variants are top revenue? That subset is the urgent one.                        |
| [Stock vs Sales Velocity](/nerve-centre/kpi-cards/shopify/stock-vs-sales-velocity)                     | Predicts which non-OOS variants are heading toward stockout next.                         |
| [Inventory Distribution](/nerve-centre/kpi-cards/shopify/inventory-distribution)                       | The fat-tail view; helps distinguish chronic low-stock SKUs from acute breakages.         |
| [Fulfillment Rate](/nerve-centre/kpi-cards/shopify/fulfillment-rate)                                   | The lagging consequence: persistent OOS drives fulfilment-rate decline in 3-7 days.       |
| [Refund Rate](/nerve-centre/kpi-cards/shopify/refund-rate)                                             | When OOS drives partial fulfilment or oversells, refunds spike.                           |

## Reconciling against the vendor's own dashboard

**Where to look in Shopify Admin:**

Shopify doesn't expose a dedicated OOS-spike alert. The closest reconstructions:

* **Products → Inventory** with filter *Available: 0 or less* and *Status: Active*: gives the current OOS count. Comparing that to your typical baseline (you'll have to remember it) gives the "is this a spike?" answer.
* **Home → Notifications**: low-stock notifications, but at a per-SKU level, not aggregate.
* **Apps like Stocky / Inventory Planner**: typically expose stockout-risk and forecasting; alert profiles vary.

**Why our number may legitimately differ from a manual check:**

| Reason                         | Direction     | Why                                                                                                                                                          |
| ------------------------------ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Baseline definition**        | Either        | Vortex IQ uses 30D rolling mean and σ; manual checks may use a static "what looked normal last month" reference. The numbers differ.                         |
| **Sync lag**                   | Either        | Inventory webhooks fire within seconds; OpenSearch index can lag 5-15 min during heavy write periods. Manual Shopify Admin check sees latest within seconds. |
| **Multi-location aggregation** | Same approach | Both we and Shopify aggregate `Available` across active locations by default.                                                                                |
| **Active filter**              | Same approach | Both filter to `status = ACTIVE`.                                                                                                                            |
| **Continue-selling-when-OOS**  | No effect     | Variants set to *Continue selling when out of stock* still appear OOS in both views; the setting changes whether sales are blocked, not the OOS state.       |

**Cross-connector reconciliation:**

| Card                                                                             | Expected relationship       | What causes legitimate divergence                                                                         |
| -------------------------------------------------------------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------- |
| [`amazon_ads.amazon_oos_skus`](/nerve-centre/amazon_ads/amazon_oos_skus)         | Independent inventory truth | A spike here may not appear on Amazon if Amazon inventory is independent or sync-managed differently.     |
| [`google_ads.google_oos_keywords`](/nerve-centre/google_ads/google_oos_keywords) | Lagging                     | Google Ads detects OOS landing pages 30-90 min later via crawler. Use this card as the leading indicator. |

***

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

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

## Known limitations / merchant FAQs

**Why does the alert fire when I just launched a new collection?**
Launches naturally spike OOS as customers buy through inventory. The 2σ threshold is generic; for known launch days, either:

1. Pre-emptively raise the threshold for that 48-72h window via the *Nerve Centre → Alerts → Suppress* feature.
2. Accept the false-positive and treat it as a "drop is going well" signal rather than an incident.

**My catalogue is large (>5,000 variants) and OOS shifts daily. Is this useful?**
Yes, but tune the threshold. Large catalogues have higher absolute baselines and higher σ. The 2σ multiplier still works, but very-large catalogues might prefer 2.5σ or 3σ to filter noise. Also worth filtering OOS to *active product type != clearance*, since clearance OOS is intentional.

**Why didn't the alert fire when my key SKU went OOS?**
A single SKU OOS rarely moves the aggregate count enough to trigger 2σ. The alert is for *aggregate* anomalies; for single-SKU coverage, use [Top Products by Revenue](/nerve-centre/kpi-cards/shopify/top-products-by-revenue) with [Products with Zero/Negative Stock](/nerve-centre/kpi-cards/shopify/products-with-zero-negative-stock) to set per-SKU watch lists.

**The alert is firing because I deliberately ran down clearance inventory. Is that OK?**
Yes, expected. Clearance liquidation produces a "clean" OOS count rise. Either suppress alerts during planned liquidation windows or filter clearance from the baseline calculation.

**How fast does the alert fire after a sync glitch?**
Within 5-10 minutes typically (the poll cadence is 5 min, plus index lag of 1-3 min). For a typical 03:00 cron-driven failure, the alert lands by 03:10-03:15. Configure paging escalation to your ops on-call.

**Does negative stock count toward the spike?**
Yes. Negative stock is part of the underlying OOS count. A spike driven by negative-stock variants (oversells) is more urgent than a zero-stock spike, because each new order on a negative-stock SKU deepens the customer-promise gap.

**My subscription store, do recurring billings cause spikes?**
Possible but rare. Subscription billings draw from inventory if the SKU is physical. A monthly billing day can drain low-stock SKUs concurrently and trip the alert. To avoid, either pre-allocate subscription inventory or schedule billing on dates after expected reorder arrivals.

**Why does the alert fire on Mondays even when nothing's wrong?**
Weekend sales drain inventory without intra-period reorder. Monday morning often has the highest OOS count of the week. The 30D baseline absorbs this somewhat, but Monday spikes can still cross 2σ on busy weeks. Acceptable false-positive frequency: 1-2/month. If higher, raise the threshold.

**Can the alert miss a real OOS event?**
Yes, if:

1. The OOS rise is gradual over many days (the daily delta is below 2σ even though cumulative OOS is high). Use the underlying count card alongside.
2. The OOS rise is on a per-SKU basis but the count aggregate is unchanged because other SKUs restocked simultaneously.

For comprehensive coverage, pair this alert with [Stock vs Sales Velocity](/nerve-centre/kpi-cards/shopify/stock-vs-sales-velocity) to catch slow-burn stockouts.

**Action playbook when this alerts:**

1. **Open the OOS list** sorted by velocity (units sold last 30 days desc).
2. **Identify the cause cluster**: is it concentrated on one product family, one location, one batch? Pattern usually reveals cause.
3. **Distinguish data-fault vs real OOS**: if 10+ SKUs went to zero simultaneously, it's almost always a sync fault, not real demand. Verify via WMS / 3PL.
4. **For real demand**: place emergency reorder on top-velocity OOS SKUs; pause ads on OOS variants.
5. **For data fault**: re-sync inventory from source; investigate the cron / pipeline that introduced the fault.
6. **Document and prevent** in your ops runbook.

***

### Tracked live in Vortex IQ Nerve Centre

*OOS Spike Alert* is one of hundreds of KPI pulses Vortex IQ tracks across Shopify 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.
