At a glance
The ad spend going through Advantage+ Catalog or Dynamic Product Ads (DPA) at products that are currently out of stock on the connected commerce platform, so they cannot convert. Every unit shown here is wasted CPC pointed at a page that ends in a sold-out variant. Because the join is live against the commerce inventory feed, the card names the ad and the SKU so you can pause the ad, hold the budget, and recover the spend within minutes. Caveat: ad-platform catalog feeds sync on a delay, so a SKU that just went out of stock can keep spending until Meta pulls the next feed update; treat the figure as the floor of the waste, not the ceiling.
| What it counts | Spend on active Meta catalog ads (Advantage+ Catalog Sales and DPA) whose product maps to a commerce-platform SKU currently flagged out of stock. Joined live across the Meta Ads connector and the connected ecommerce connector. |
| What “out of stock” means | Inherited from the commerce platform’s own definition (for example zero or negative available inventory on an active product). Draft or archived products do not count. |
| SKU matching | Matched between the Meta product catalog and the commerce product index by a shared identifier such as GTIN, MPN, or product handle. Naming mismatches are common, so treat the figure as an underestimate rather than an overestimate. |
| Why Meta skews worse | Meta’s Commerce Manager catalog often defaults to a daily sync. Until the next sync, Meta keeps serving ads for items the store has already marked out of stock. Tightening the catalog update schedule closes most of the gap. |
| Advantage+ opacity | Advantage+ Catalog auto-selects which catalog items to show, so you cannot pause a single SKU inside the campaign. The reliable fix is to mark the item out of stock in the catalog feed, which propagates to delivery on Meta’s schedule. |
| Chart type | Alert table. Each row names the ad set or ad, the out-of-stock SKU, and the spend at risk. |
| Currency | Account currency on the Meta side. For multi-platform stores, spend is shown in the workspace display currency and treated as approximate. |
| Time window | RT (real-time, recomputed on the standard refresh). |
| Roles | owner, marketing, operations |
Calculation
Calculated automatically from your Meta Ads (Facebook) data joined to your commerce inventory. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK fashion brand on Shopify running an Advantage+ Catalog Sales campaign and a DPA retargeting ad set. Reading taken at 11:30 on 14 Mar 26. Account currency GBP. All figures are illustrative.| Ad set | Mapped SKU | Stock state | Daily spend (£) | Flagged |
|---|---|---|---|---|
| Advantage+ Catalog (cold) | linen-shirt-cream-M | Out of stock (sold through 13 Mar) | 138 | Yes |
| Advantage+ Catalog (cold) | wool-coat-navy-L | In stock | 210 | No |
| DPA retargeting | trainers-white-42 | Out of stock | 64 | Yes |
| DPA retargeting | denim-jacket-S | In stock | 95 | No |
- The card reads about £202/day at risk across the two out-of-stock SKUs, projecting to roughly £1,400 a week if left running.
- The cream linen shirt is the worst offender. It sold through the previous evening, but Meta’s catalog last synced 18 hours ago, so the Advantage+ campaign is still serving it. The store already marked it out of stock; the lag is entirely on the feed-sync side.
- Advantage+ cannot be paused at the SKU level. The fix is to confirm the item is marked out of stock in the Meta catalog feed and let delivery drop it on the next sync, or to switch the catalog update schedule to hourly so the gap shrinks from hours to minutes.
- The DPA case is simpler. Retargeting ad sets can be edited more directly, and the wasted spend there is reclaimable as soon as the out-of-stock SKU is excluded.
- The reclaimed budget compounds. Roughly £200/day moved off dead SKUs onto in-stock high-velocity items earns several times its value back at a typical catalog ROAS, so the real opportunity is larger than the raw waste figure.
- Out-of-stock SKU still spending = pause or exclude, then check the catalog sync schedule.
- Spend persists after marking out of stock = feed-sync lag. Tighten the Commerce Manager update schedule.
- Whole campaign affected = Advantage+ Catalog; fix at the feed level, not the campaign level.
Sibling cards merchants should reference together
| Card | Why pair it with Active Ads on Out-of-Stock SKUs | What the combination tells you |
|---|---|---|
| Shopify Products with Zero/Negative Stock | The out-of-stock source list. | This card is that list filtered to “out of stock AND being advertised on Meta”. |
| Shopify Active Ads on Out-of-Stock SKUs | The commerce-platform view of the same join, across all ad platforms. | The store-wide total; this Meta card is the Meta slice of it. |
| Shopify OOS Spike Alert | Predicts which SKUs are about to go out of stock. | Pause or de-prioritise ads pre-emptively before the waste starts. |
| Wasted-Spend Burst (3-day spike) | The general wasted-spend alert. | Out-of-stock ads are one common cause of a zero-conversion burst. |
| ROAS by Campaign | Where the catalog campaigns sit on efficiency. | A catalog campaign with collapsing ROAS often has out-of-stock landing pages behind it. |
| Spend by Campaign | The budget context. | How much of total spend is exposed to the out-of-stock catalog. |
| Google Ads Active Ads on Out-of-Stock SKUs | The same join on paid search Shopping. | The full cross-channel out-of-stock exposure across both ad platforms. |
Reconciling against Meta Ads Manager
Where to look in Meta Ads Manager: Meta Ads Manager itself has no native “ads on out-of-stock SKUs” view, it has no live link to commerce inventory. The closest reconstruction is across two surfaces:- Meta Commerce Manager → Catalog → Diagnostics shows feed-level warnings, including items flagged out of stock in the feed. This is the upstream signal but shows feed health, not the spend at risk.
- Meta Ads Manager → Ads shows spend per catalog ad set but does not cross-reference live commerce stock.
| Reason | Direction | Why |
|---|---|---|
| SKU matching gaps | Ours lower (underestimate) | Matching by GTIN, MPN, or handle covers most catalogues. Non-standard naming or custom feed transforms leave some SKUs unmatched, so they spend without being counted. |
| Commerce sync lag | Ours lower (transient) | An item that just went out of stock on the store webhooks into Vortex IQ within minutes; in the gap before that, spend may not yet be flagged. |
| Meta catalog sync lag | Drives the waste | Meta keeps serving an out-of-stock item until its next catalog pull (often daily by default). Spend accrues against the out-of-stock SKU during that gap. |
| Multi-currency | Approximate | Multi-platform spend summed without FX is order-of-magnitude correct, not exact. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
shopify.products_with_zero_negative_stock | This card is a subset (out of stock AND advertised on Meta) | Items on that list with no active Meta ad simply do not appear here. |
shopify.active_ads_on_out_of_stock_skus | This Meta card is the Meta portion of the store-wide total | The store-wide card also includes Google, TikTok, and Amazon ad spend. |
google_ads.active_ads_on_out_of_stock_skus | The paid-search portion of the same exposure | Google Shopping and Performance Max contribute there, not here. |