OOS bestsellers leak revenue while ad spend continues, feeds ads_on_oos kill-shot.
At a glance
Real-time count of products with quantity = 0 on Ecwid. For a hobby store running a small catalogue, OOS on a hero SKU is often the difference between a £600 week and a £150 week. The card surfaces it before the merchant notices a revenue dip on Monday morning.
| What it counts | COUNT(products WHERE quantity = 0 AND enabled = true AND inStock_after_oos_handling = false). Counts at the product level (not variant level) since most Ecwid hobby stores have flat catalogues without variant trees. |
| API endpoint | GET /v3/{store-id}/products?inStock=false. Webhook updates on product.updated and inventory.updated. |
| What “OOS” means | quantity = 0 AND the merchant has not opted into “continue selling when out of stock” (Ecwid’s backorder flag). Backorder-enabled OOS products are excluded since they still convert. |
| Disabled / unpublished products | Excluded; only enabled = true products count, since disabled SKUs are not visible to buyers. |
| Variant-level OOS | If the merchant uses variants (e.g. T-shirt sizes), the product counts as OOS only when ALL variants are 0. A “S sold out, M and L still in stock” product does not count here. |
| Currency | Not relevant; this is a count. |
| Time window | RT (real-time, 5-minute polling, webhook-instant). |
| Alert trigger | >10. The threshold is generous for hobby stores; smaller catalogues can configure tighter (e.g. >3) since on a 20-SKU catalogue 10 OOS is half the inventory. |
| Roles | owner, operations. |
Calculation
Calculated automatically from your Ecwid 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 small UK hobby photographer running an Ecwid widget on their WordPress blog, snapshot at 09:00 BST on 27 Apr 26. The seller has a flat catalogue of 32 products: 22 A3 prints, 6 photo zines, 4 limited-edition signed prints. At snapshot time the OOS-product count reads 4.| Product | Status | Why OOS |
|---|---|---|
| A3 Print “Coastal Storm” | OOS | Sold out from a viral Reddit post 4 days ago; reorder pending with print-on-demand supplier |
| A3 Print “Highland Mist” | OOS | Steady-seller, last unit sold 2 days ago; reorder not yet placed |
| Limited-edition “Edge of Light” (signed, edition of 50) | OOS | Sold out a week ago; intentional, not restocking |
| Photo zine “Volume 3” | OOS | First-print run sold out; reprint scheduled for next week |
- Coastal Storm: pending; nothing to do today.
- Highland Mist: order today. Steady-seller revenue is leaking; estimate £15 to £25 / week of lost revenue while OOS.
- Edge of Light: intentional. The “Sold out, signed editions of 50” message is part of the brand’s collector strategy; leave it OOS.
- Volume 3: scheduled. Estimate £40 to £60 of zine revenue lost during the reprint week.
ecwid_low_stock as the trigger. Expected effect: OOS-on-bestsellers count drops from 2 to 0, recovering ~£75 / week of revenue.
Sibling cards merchants should reference together
| Card | Why it matters next to OOS count | What the combination tells you |
|---|---|---|
| Low-Stock Products | Predictive twin. | Low-stock today is OOS tomorrow; restock window. |
| Top Products by Revenue | Identifies the expensive OOS. | OOS on a top-3 SKU is far more costly than OOS on a tail SKU. |
| Total Revenue | Downstream. | Revenue dropping while OOS rising = inventory is the cause; revenue dropping while OOS stable = different issue. |
| Conversion Rate | Funnel impact. | OOS hero SKUs depress CR; restock and watch CR recover. |
| Total Orders | Volume. | Order count drops while OOS count rises = inventory is the constraint. |
| Refund Rate | Quality downstream. | Sometimes OOS forces buyers to substitute (e.g. wrong size) and refund later; cross-check. |
| New Customers | First-impression. | A first-time visitor finding hero SKUs OOS often does not return; persistent OOS suppresses new-customer rate. |
Reconciling against the vendor’s own dashboard
Where to look in Ecwid’s own dashboard:
Ecwid Control Panel (my.ecwid.com) -> Catalog -> Products -> filter by “Stock = Out of stock”
Real-time list. Count should match this card within sync-lag tolerance.
Why our number may legitimately differ from Ecwid’s Control Panel:
| Reason | Direction | Why |
|---|---|---|
| Backorder flag | Ours lower | Backorder-enabled products are excluded; Ecwid’s filter shows them. |
| Variant rollup | Ours lower | We require ALL variants to be OOS to count; Ecwid sometimes counts at variant level. |
| Disabled products | Ours lower | Disabled / unpublished products excluded. |
| Sync lag | Ours occasionally higher | Webhook-driven; recent stock updates may not be reflected for ~60 seconds. |
ecwid_oos_products = COUNT(products WHERE quantity = 0 AND enabled AND NOT continue_selling_when_out_of_stock AND any_variant.quantity = 0)
Known limitations / merchant FAQs
My catalogue is small (under 50 SKUs); is the >10 alert too generous? Yes for very small catalogues. Configure the alert threshold per-store in the manifest; many hobby Ecwid sellers use >3 or >5. For a 20-SKU catalogue, 10 OOS is half the catalogue, far past actionable. Why product-level not variant-level? Because most Ecwid hobby stores run flat catalogues without size / colour variants. For stores that do use variants (e.g. T-shirt sizes), a separate variant-OOS card can be enabled in the manifest. Does this count limited-edition / sold-out-by-design products? Yes by default; the card cannot tell intentional sell-out from accidental. To exclude, tag the product withvortexiq_intentional_oos or set the manifest exclusion list.
Does it count digital products?
Digital products typically have unlimited_stock = true; they never go OOS in our calculation. The card is for physical products.
My OOS count never drops below 5; why?
Three usual causes. (1) Tail SKUs the merchant has long-term ignored (archive them). (2) Limited editions sold-out-by-design (tag them for exclusion). (3) Print-on-demand misconfiguration where stock is reported as 0 while the supplier can still fulfil on demand (configure the products as unlimited_stock if true).
How fast does the count update after a restock?
Webhook-driven; under 60 seconds typically. The count drops on the next render.
Will Ecwid auto-pause my Google Ads / Facebook Ads when a SKU goes OOS?
Not natively; you need to configure the auto-pause in your ad platform’s product feed integration. The cross-channel ads-on-OOS card surfaces this gap if the merchant runs ads.
My OOS count rose during a viral moment. Should I be worried?
For hobby Ecwid stores, viral OOS is often a positive signal (demand outpaces supply); the action is to expedite restocks rather than to fix the demand. Communicate to buyers via the product page that “back in stock soon” rather than hiding the listing.
How do I exclude products that I do not currently sell but want to keep listed for SEO?
Disable the product in Ecwid Control Panel; disabled products are excluded automatically. They remain visible to bots / SEO via cached crawl data but are not counted as OOS.
Why do my OOS products sometimes still show as buyable on the storefront?
Likely because continue_selling_when_out_of_stock = true is enabled on those products. The widget will continue to accept orders against negative inventory; verify the backorder flag in Ecwid Control Panel.