You are paying Meta to advertise products you cannot ship
Meta Ads Manager will tell you your CPA. Shopify will tell you your stock levels. Neither will tell you that 14% of last month's ad spend went to products that were out of stock. That number is not hypothetical — it is roughly what we see in stores that never audit the overlap.
Why the gap exists
Catalog syncing is not the same as campaign pausing. A product feed can mark an item unavailable while an active campaign or ad set keeps spending on collection pages, broad audiences or lookalikes that still route to it. Manual campaigns built around a single hero SKU are the worst offenders because nothing about them is tied to inventory at all.
What it costs
Take your monthly paid spend, multiply by the share of clicks that landed on out-of-stock or unpublished products, and annualize. For a store spending $20k/month with a 10% overlap, that is $24,000 a year — before counting the customers who bounced and never came back.
How to measure it yourself
A rough manual version takes an afternoon:
- Export the last 30 days of spend by campaign and destination URL from Meta and Google Ads.
- Export product availability history from your store.
- Join on the product handle or SKU in the URL.
- Sum spend on any day where the destination product was unavailable.
How to stop it happening again
The durable fix is an automated check that runs on every audit: whenever spend appears against an unavailable product, pause the ad set and notify the owner. That is a cross-source rule — it needs your ads account and your store in the same place, which is precisely what Revenue Leak AI connects.