Skip to main content
Metrics type: Cross-Platform MetricsCategory: Ecommerce Platform
Spend on SKUs that can’t convert, pause the ad, hold the budget, recover the wasted spend within minutes.

At a glance

Real-time alert listing active paid-ads (Google Shopping, Meta Catalogue, TikTok Shopping) that point at Adobe Commerce SKUs currently out of stock. Every dollar of ad spend on a zero-stock SKU is wasted, the click can’t convert. Pause the ad, redirect the budget, recover within minutes.

Calculation

Calculated automatically from your Adobe Commerce 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 homewares brand on Adobe Commerce 2.4.6 with US, UK, and B2B Store Views. Snapshot taken Tuesday 12 Apr 26, 14:00 GMT. Note row 3 (CHAIR-HARRIS-OAK): Adobe Commerce has allow_backorders = 1 on this product, so the SKU is technically salable_qty = 0 but the customer can still place an order (it just ships when restocked). The card detects this from the backorders field on the product entity and excludes it from the alert. The merchant doesn’t need to pause those ads; they’re still converting. What this is telling the merchant:
  1. 6 ads across 3 truly-out-of-stock SKUs are burning ~$2,650/week. Pause them and the budget redirects to in-stock SKUs immediately.
  2. The Copper Pendant Lamp (both sizes) is the biggest waste, $1,730/week combined. This is also a clue: if both size variants are out, the supplier may have stopped shipping. Pair with Catalogue Drift to surface other supplier-stalled SKUs.
  3. Adobe Commerce’s MSI multi-source inventory matters here. LMP-COPPER-12 is genuinely zero across both Source Stock US and Source Stock UK; the card is right to flag. If only the US source were out and UK source had stock, we’d flag it for US-targeted ads only.
  4. The lost-conversion estimate uses the SKU’s typical 7-day order rate × its average grand_total contribution. It’s an order-of-magnitude estimate, not exact. For the Moroccan Rug: 8 orders/week × £675 AOV = ~£5,400 of weekly revenue at risk if the SKU stays out.
  5. B2B portal SKUs aren’t flagged here because B2B doesn’t run consumer paid-ads. The cross-platform feed for B2B is a separate concern, and the supplier-stall pattern usually shows up first on consumer ads.

Sibling cards merchants should reference together

This card surfaces a moment-of-action; pair with these for context and follow-up:

Reconciling against the vendor’s own dashboard

Where to look in Adobe Commerce Admin: The Adobe Commerce Admin views to verify the stock side of the alert:
Catalog > Products with the Quantity filter set to ”≤ 0” and Visibility set to “Catalog, Search”. The product list should show every SKU at zero stock that’s also visible to customers, the candidates for this card.
For the multi-source inventory view (Adobe Commerce 2.3+):
Stores > Inventory > Sources to confirm the source-stock configuration, then Catalog > Products edit > Sources tab on a flagged SKU shows source-by-source quantity. This is what salable_qty aggregates.
For ad-platform synchronisation:
Marketing > Communications doesn’t cover ad platforms (it’s email/transactional). Check your Google Ads Content API integration (often via a third-party connector module like Magento 2 Google Shopping by Magenest) for feed-sync timestamps.
Other Adobe Commerce Admin views that look relevant but aren’t:
  • Reports > Products > Most Viewed: traffic, not stock.
  • Reports > Products > Bestsellers: sales velocity, not stock.
  • Catalog > Categories: category hierarchy, no stock signal.
  • Stores > Configuration > Catalog > Inventory: backorder/stock-display rules, not live stock levels.
Why our number may legitimately differ from the Adobe Commerce stock view: Cross-connector reconciliation (when these connectors are connected for this merchant): This card is a cross-connector contrast. The honest read:

Known limitations / merchant FAQs

The card flags ads as wasted but my ad-platform reports show the SKU as in stock, who’s right? The card is right about Adobe Commerce stock. The ad platform’s product status is whatever it last received from your feed sync, which can lag 30 minutes to several hours. The customer who clicks the ad will land on a product page that says “out of stock” (because the storefront uses live salable_qty) and bounce. The ad is wasted regardless of what the ad platform thinks. Pause and force a feed re-push. What’s the difference between state and status and does it affect this card? This card uses product stock status (stock_status, salable_qty), not order state/status. Order lifecycle is irrelevant to whether the SKU has stock. The indirect link is via pending_payment: orders in pending_payment reserve stock in MSI even though no money was taken, which can flag a SKU as OOS during the limbo. That behaviour is correct, ads should still pause because the customer can’t add the reserved units to a new cart anyway. Why does my multi-source Adobe Commerce setup not show source-by-source ad waste? The card aggregates salable_qty across all stock-sources visible to the storefront. A SKU in stock at the UK warehouse but out at the US warehouse may waste US-only ad spend even though the headline salable_qty is positive. Set up a per-region card variant that filters store_id and only checks the matching stock-source. Standard MSI configurations with country-restricted source-stocks need this customisation. Why is the spend figure ex-VAT? Ad platforms report spend ex-VAT because VAT is invoiced separately to the merchant. Both Google and Meta do this. Comparing to Adobe Commerce grand_total (typically VAT-inclusive on UK/EU stores) introduces a slight bias when computing waste-as-percentage-of-revenue, ad spend is undercounted by the VAT delta. For a like-for-like view, gross up ad spend by your VAT rate before comparing. The card flags a SKU but I don’t run ads on it, false positive? Possible causes: (1) the SKU is in your Google Merchant Center catalogue feed even though no campaign is actively bidding on it, Google Shopping can still serve free organic placements that count as “active”; (2) a campaign is set to bid on all products in a feed via Performance Max or a smart-shopping campaign, even ones you didn’t manually add; (3) a third-party feed-management tool (Channable, GoDataFeed) is auto-creating ads at a more granular level than your console shows. My multi-store Adobe Commerce, can I see per-Store-View ad waste? Not on this card directly. Set up per-region card variants, each filtered to one Store View’s stock-source and one ad-platform geo target. Particularly important for region-locked merchants (UK warehouse only ships UK). Why is the lost-conversion estimate fuzzy? It’s an order-of-magnitude figure based on the SKU’s typical 7-day order rate × its average grand_total contribution. It can’t account for: substitution (customers buying a different SKU), seasonality (the SKU’s sales rate is changing), or paid-vs-organic mix (some of those orders would have happened without the ad). Treat as “is this a 200/wkproblemora200/wk problem or a 20,000/wk problem”, not as a precise revenue figure. The Adobe Commerce admin shows the SKU as qty = 5 but the card flags it as OOS, why? Two possibilities: (1) qty is physical-source stock; salable_qty is what’s available to sell after reservations for pending_payment orders, B2B holds, and pre-sales. The card uses salable_qty. If physical qty is 5 but 5 are reserved for pending orders, salable is 0 and the card is right. (2) stock_status = 0 (Out of Stock) was manually set in the product edit screen, even with qty > 0 the SKU is hidden from sale. Check both fields in admin. Why doesn’t Google Analytics agree this is wasted spend? GA4 attributes the revenue of converting clicks; clicks on OOS SKUs simply don’t convert, so they show as zero-revenue paid traffic. GA4 doesn’t have a concept of “wasted spend”; it shows the spend in the channel report and the (zero) revenue separately. The card synthesises the contrast across data sources that don’t talk to each other. Use this card as the action prompt; use GA4 for after-the-fact attribution. Should I delete the OOS SKU from my catalogue feed? Usually no. Pause the bidding (or remove the product from the active campaign), but keep the product live in the feed so when stock returns the ad-platform’s quality score and ranking history are preserved. Deleting and re-adding usually costs you 2-4 weeks of ad-platform learning. For a permanently discontinued SKU, full removal is right.

Tracked live in Vortex IQ Nerve Centre

Active Ads on Out-of-Stock SKUs is one of hundreds of KPI pulses Vortex IQ tracks across Adobe Commerce 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 or book a demo to see this metric running on your own data.