Skip to main content
Card class: Cross-ChannelCategory: Ad Platform

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 countsSpend 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” meansInherited 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 matchingMatched 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 worseMeta’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+ opacityAdvantage+ 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 typeAlert table. Each row names the ad set or ad, the out-of-stock SKU, and the spend at risk.
CurrencyAccount currency on the Meta side. For multi-platform stores, spend is shown in the workspace display currency and treated as approximate.
Time windowRT (real-time, recomputed on the standard refresh).
Rolesowner, 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 setMapped SKUStock stateDaily spend (£)Flagged
Advantage+ Catalog (cold)linen-shirt-cream-MOut of stock (sold through 13 Mar)138Yes
Advantage+ Catalog (cold)wool-coat-navy-LIn stock210No
DPA retargetingtrainers-white-42Out of stock64Yes
DPA retargetingdenim-jacket-SIn stock95No
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
Quick reads:
  • 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

CardWhy pair it with Active Ads on Out-of-Stock SKUsWhat the combination tells you
Shopify Products with Zero/Negative StockThe 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 SKUsThe 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 AlertPredicts 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 CampaignWhere the catalog campaigns sit on efficiency.A catalog campaign with collapsing ROAS often has out-of-stock landing pages behind it.
Spend by CampaignThe budget context.How much of total spend is exposed to the out-of-stock catalog.
Google Ads Active Ads on Out-of-Stock SKUsThe 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: You would have to read the out-of-stock items from Commerce Manager Diagnostics, then match them by hand to the spending ad sets in Ads Manager. This card does that join automatically and continuously. Why the Vortex IQ value may legitimately differ:
ReasonDirectionWhy
SKU matching gapsOurs 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 lagOurs 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 lagDrives the wasteMeta 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-currencyApproximateMulti-platform spend summed without FX is order-of-magnitude correct, not exact.
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
shopify.products_with_zero_negative_stockThis 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_skusThis Meta card is the Meta portion of the store-wide totalThe store-wide card also includes Google, TikTok, and Amazon ad spend.
google_ads.active_ads_on_out_of_stock_skusThe paid-search portion of the same exposureGoogle Shopping and Performance Max contribute there, not here.

Known limitations / merchant FAQs

Why is spend still showing on a SKU I already marked out of stock? Meta’s catalog syncs on a schedule, often daily by default. Until the next sync, Meta keeps serving the item even though the store has it marked out of stock. Tighten the update schedule in Commerce Manager → Catalog → Settings to hourly to shrink the gap. Why can’t I just pause the SKU in the Advantage+ campaign? Advantage+ Catalog and DPA choose which catalog items to show automatically, so there is no per-SKU pause inside the campaign. The reliable lever is the catalog feed: mark the item out of stock there and it drops from delivery on the next sync. Why might my figure be lower than I expect? SKU matching depends on a shared identifier between the Meta catalog and the commerce index. Brands with non-standard SKU naming, white-label items, or custom feed transforms will have unmatched SKUs that spend but are not counted, so the card underestimates rather than overestimates. Why is the figure zero when I know items are out of stock and ads are running? Either no commerce connector is linked (the join needs live inventory), or the out-of-stock items have no active Meta catalog ad pointing at them, or the SKU mapping key is not matching. Check the connector link and the mapping configuration. Does this include Advantage+ Shopping campaigns that are not catalog-based? The card is about catalog and DPA spend pointed at specific out-of-stock SKUs. A broad Advantage+ Shopping campaign that does not serve a specific out-of-stock product is not the target here; pair with Wasted-Spend Burst for the broader zero-conversion case. Should I auto-pause out-of-stock catalog ads? For high daily spend, pausing or excluding promptly is almost always right. The conservative default is to surface the recommendation for a manual review step, because a fast-restocking item can be worth keeping live to capture the back-in-stock buying window. My commerce platform and Meta disagree on stock. Whose truth wins? The commerce platform is the inventory truth source; Meta holds a slightly stale copy via the feed. This card treats commerce stock as authoritative and flags Meta spend that runs against it.

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 Meta Ads (Facebook) 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.