Listings showing on a channel with stock_level=0, direct revenue blocker per channel.
At a glance
The count of catalogue listings on each BigCommerce channel whereinventoryLevel = 0andavailability = 'available'. These are listings the customer can still see but cannot buy, a direct revenue blocker that costs the merchant attention every minute it persists.
| What it counts | COUNT(products WHERE inventoryLevel = 0 AND availability != 'disabled') GROUP BY channel_id. Per-channel because OOS impact differs by channel: a hero SKU OOS on Stencil web blocks the storefront’s primary funnel; the same SKU OOS on a marginal Facebook Shop is less urgent. |
| VAT / tax treatment | n/a, inventory metric. |
| Shipping | n/a. |
| Discounts | n/a. |
| Refunds | n/a, this is an inventory snapshot. |
| Currency | n/a, count metric. |
| Channels / sources | Per-channel breakdown is the entire point of the card. Each channel_id shows its own OOS count and the dollar-velocity weight (revenue per day this SKU usually generates on this channel). |
Incomplete / Declined orders | n/a. |
| OOS definition gotcha | We count listings where inventoryLevel = 0 but availability is not disabled. A merchant who toggles availability = disabled properly when stock runs out is correctly hidden from this count; merchants who leave OOS items live with availability = available are surfaced here. The latter is the failure mode, customers see the listing, click through, find it unavailable, and bounce. |
| Velocity-weighted ranking | Within each channel, OOS listings are sorted by historical revenue velocity (30-day average revenue per day pre-OOS). The top OOS by velocity is the most urgent to restock or hide; the long tail is less material. |
| Time window | RT (real-time, refreshed each catalogue sync; typically every 15-30 minutes) |
| Alert trigger | >0, any positive count fires the alert. The Vortex IQ Nerve Centre treats OOS-on-live-listing as always-actionable, OOS items should be hidden, restocked, or marked as preorder, never left in zombie state. |
| Sentiment key | out_of_stock_count |
| Roles | owner, operations, marketing |
Calculation
Calculated automatically from your BigCommerce 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 homewares brand on BigCommerce Enterprise. Snapshot at 09:00 UTC on 13 Apr 26.channel_id | Channel | OOS count | Top OOS SKU (by velocity) | Daily lost revenue |
|---|---|---|---|---|
1 | Stencil web | 14 | ”Linen 4-piece bedding set, King” ($340/day) | ~$1,180 |
1019847 | Amazon Channel Manager | 6 | ”Towel set 6pk, ivory” ($180/day) | ~$420 |
1019850 | Facebook Shop | 2 | ”Throw cushion 18inch” ($35/day) | ~$50 |
1020114 | POS Terminal A | 0 | n/a | n/a |
| Store total | 22 | ~$1,650/day |
- **50k/month, 1k+/day back.
- Web carries the most urgent OOS. A bedding set at 14. Customers who came specifically for this SKU bounce and don’t return.
- Amazon OOS is structurally different. Amazon penalises sellers for OOS listings (the listing’s BSR drops, the buy box may be lost to a competitor seller). The cost is not just lost direct revenue but reduced future ranking. Set Channel Manager → Amazon to auto-hide OOS items; do not leave them visible.
- Facebook Shop OOS is low-urgency. Two items at low velocity, fix during the next merchandising review. Don’t drop everything for it.
- POS Terminal A shows zero OOS because POS-only catalogue is typically smaller and tightly managed by the in-store team. Healthy pattern.
- Hide / disable all OOS items on Stencil web (14 listings, biggest revenue blockers). Most BC themes have a one-click “hide if
inventoryLevel = 0” rule, ensure it’s enabled. - Restock the top 3 by velocity, the bedding set, top Amazon SKU, and any other items above $100/day velocity.
- Consider preorder / backorder tagging for items with known restock dates, customers will commit if they see “ships 12 May 26” rather than just “out of stock”.
- Set per-channel auto-hide rules in Channel Manager so this card always reads zero on marketplaces (Amazon and eBay penalise sellers harshly for OOS-but-listed).
- Audit your inventory sync if OOS counts are persistently high, the underlying issue is usually a sync gap between BC and your warehouse / ERP.
Sibling cards merchants should reference together
| Card | Why pair it with OOS Listings per Channel |
|---|---|
| Inventory Alerts | The store-wide inventory headline. This card disaggregates by channel. |
| BC Stock vs Sales | The velocity-weighted view. Tells you which OOS items are urgent (high velocity) and which are tail-end (can wait). |
| BC Inventory Distribution | The healthy-stock baseline. Lets you see whether OOS is concentrated or distributed across the catalogue. |
| BC Alert OOS Spike | The trend alert. Fires when OOS count grows quickly, often signalling a supplier outage. |
| BC Top SKUs | Cross-reference: if your top-selling SKUs appear in this card, that’s a five-alarm event. |
| BC Top SKUs Revenue | The revenue-impact view. Multiply OOS days by daily velocity for the lost-revenue estimate. |
| BC Channel Revenue Mix | Context for prioritisation, OOS on a 70%-of-revenue channel matters more than OOS on a 1% channel. |
| BC XC Ads on OOS | The cross-connector overlap with Google Ads, paying to drive traffic to OOS items is double-burn. |
Reconciling against the vendor’s own dashboard
Where to look in BigCommerce Control Panel: Products → View, filter by Inventory level = 0, exclude items with Visibility = Disabled. The list should match the store-wide OOS count to within 1-2 (boundary timing). For per-channel breakdown, Channel Manager → per-channel listings shows OOS at the channel-listing layer. Other BC views that look adjacent:- Catalogue → Categories: groups products into categories, doesn’t surface OOS directly.
- Settings → Inventory: configures inventory tracking; doesn’t surface counts.
- Reports → Inventory snapshot (Plus / Pro): partial overlap, runs on a daily cadence rather than real-time.
| Reason | Direction |
|---|---|
| Variant-vs-product semantics. BC supports product-level and variant-level inventory; we count at the variant level for products with variants. BC’s product list shows “1 product” for a multi-variant item even if 3 of 5 variants are OOS. | Vortex IQ HIGHER count than naive product-level filter |
| Channel publication state. A product can exist in BC catalogue but not be published to a specific channel. We count only published listings per channel. | Vortex IQ LOWER count per channel than total catalogue OOS |
| Sync lag. Inventory updates from warehouse / ERP take 5-30 minutes to propagate to OpenSearch. Recent stock-ins may still show as OOS. | Vortex IQ slightly LAGS BC for short windows |
Disabled / Visibility = false. We exclude availability = disabled. Some merchants use this state to “soft-hide” OOS items. | Vortex IQ LOWER count if merchant uses disable correctly |
Backorder / Preorder. Items configured as preorder may carry inventoryLevel = 0 but should not count as urgent OOS. We surface them with a flag; some merchants want to exclude them entirely. | Mixed |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_ads.ga_oos_items | Google Ads merchant-feed OOS items should overlap with the web channel_id = 1 slice of this card | Google Ads runs its own inventory feed; sync lag can cause mismatches. |
amazon_sp.amazon_oos_listings | Amazon SP-API exposes inventory-level data per listing; should match the Amazon channel slice | Amazon’s “currently unavailable” includes more states than just OOS (e.g. account-level suppression). |
google_analytics.ga_no_inventory_clicks | GA4 ecommerce events fire view_item on OOS items; cross-checking shows wasted-traffic dollars | GA4 doesn’t differentiate OOS view from in-stock view by default; requires custom event configuration. |
salesChannelIds) and Adobe Commerce (per website_id); the field shapes differ but the merchant-facing semantics are equivalent.
Known limitations / merchant FAQs
Why does the alert trigger fire on >0? Even one OOS item? Because OOS-on-live-listing is always actionable. The right state for a stocked-out item is either (a) hidden, (b) marked preorder, or (c) restocked. Leaving items live-but-unbuyable wastes traffic, hurts SEO ranking signals, and degrades customer experience. The alert is a nudge, not an emergency, but it should always result in either resolution or an explicit “yes, leave it visible” decision, never a “we’ll deal with it later”. My OOS list keeps showing the same items, what’s wrong? Either (a) you don’t have an auto-hide rule configured on your theme, OR (b) your inventory sync to BC is broken, the warehouse says “we have stock” but BC still reads zero. Check the BC Inventory Distribution view to see whether the count is real OOS or a sync artefact. Why does Amazon penalise me for OOS more than other channels? Amazon’s algorithm treats OOS as a buyer-experience failure. The listing’s BSR (Best Sellers Rank) drops; the buy box may move to competitor sellers; the product can be temporarily delisted from search. For Amazon, OOS-but-listed is materially worse than OOS-but-hidden. Set Channel Manager → Amazon to auto-hide on OOS, full stop. My theme auto-hides OOS items, but they still show up in this card? The auto-hide rule on most BC themes only hides items from category browse pages and search; the direct product URL still loads. We count any product whereinventoryLevel = 0 regardless of theme-side hiding. To fully hide an OOS item, set availability = disabled in the BC admin (Channel Manager will then exclude it from listings on every channel).
Should I leave items as preorder instead of hiding?
Yes for items with known restock dates within 14-21 days. Customers commit to preorder at meaningful rates (often 50-80% of in-stock conversion); for delayed-restock items it’s a way to capture demand instead of losing it. For items with uncertain restock dates, hide rather than preorder, broken promises hurt brand more than missed orders.
Why is my POS Terminal A showing zero OOS?
POS catalogues are typically smaller and tightly managed; inventory is checked physically at the till. POS systems also commonly use a “decrement on sale” model that keeps inventory more accurate than warehouse-fed web channels. Zero OOS on POS is the healthy norm.
My Channel Manager OOS count is much higher than BC catalogue, why?
Channel Manager listings can drift out of sync with BC catalogue. Common causes: (1) marketplace-specific listing variants that don’t exist in BC catalogue (Amazon-only variant SKUs, Walmart-specific bundles); (2) Channel Manager queue backlog after bulk inventory updates; (3) marketplace approval delays where BC pushed an availability change but the marketplace hasn’t ack’d yet. Run Channel Manager → Activity log to see sync state.
The lost-revenue figure looks high, is it accurate?
It’s an estimate based on the SKU’s pre-OOS 30-day average daily revenue. Treat it as ±30% accurate, the actual lost revenue depends on whether customers substitute to a similar in-stock item, switch to a competitor, or just walk away. For most homewares / fashion stores ~30-50% of would-be OOS demand substitutes; the rest is genuine lost revenue.
Should I notify customers when OOS items come back?
Yes, restock-notify lists convert at 12-25% on average. BC’s native back-in-stock email (Plus / Pro plans) or third-party apps like Klaviyo back-in-stock flow capture customer emails on OOS pages and email when restocked. This is the highest-ROI single action on a high-OOS catalogue.
My multi-warehouse store shows OOS even though stock exists in another warehouse, why?
BC’s inventory model historically aggregated across warehouses; Multi-Location Inventory (MLI) in newer BC versions tracks per-location stock. We follow whatever BC indexes; if your channel is configured to fulfill from a specific location and that location is at zero, the listing shows OOS even if other locations have stock. Configure your channels with multi-location fulfilment fallback to avoid this.