Sale and promotion
Out of stock products in catalog ads, handled properly
Convinci team. Published 2026-09-11, updated 2026-09-11.
Meta stops serving a product once the feed says it is out of stock, so the fix is feed speed. Update availability at least every few hours and exclude out of stock items from your product sets. Keep a fallback set so a campaign never runs dry.
A catalog ad for a sold out product is the most expensive kind of wasted spend, because it looks like it is working. The click through rate is fine. The landing page has no buy button. You paid for every one of those visits.
Meta already has the mechanism to prevent it. What goes wrong is almost always timing.
What Meta does on its own
When your feed marks a product out of stock, Meta stops serving it. There is no toggle to turn this on and it happens within an hour or so of the catalog updating.
That is the whole mechanism, and it is enough, as long as the feed is current. The failure mode is the gap between a product selling out in your store and your feed telling Meta about it.
Where the gap comes from
| Cause | Typical gap | Fix |
|---|---|---|
| Feed scheduled once a day | Up to 24 hours | Schedule hourly, or push updates |
| Feed scheduled hourly | Up to 1 hour | Acceptable for most stores |
| Variant level stock not in the feed | Permanent | Assign stock per variant |
| Backorder settings hide the state | Permanent | Decide preorder or out of stock |
| Feed fetch fails silently | Days | Read the data source run history |
The last one is worth saying twice. A scheduled feed that has been failing for a week leaves your catalog frozen on last week's stock, and nothing in Ads Manager tells you. The only place it shows is the data source run history in Commerce Manager.
Four settings that stop it
One, update availability more often than you sell out. For most stores that is hourly. If you run flash sales, it is more often than that, and you may need a push update rather than a scheduled file. Hourly is the practical default.
Two, build product sets that exclude sold out items. A product set can filter on availability. A set defined as availability = in stock plus your usual filters never contains a sold out product. That holds for the hour before the feed catches up.
Three, keep the set wide enough to survive. A product set of twelve best sellers is one delivery day away from being a set of four. Build sets with enough products that losing a few does not starve the campaign, and keep a broader fallback set behind the narrow one.
Four, decide what preorder means to you. If you take backorders, mark those products available for order rather than out of stock, and make sure the landing page says when it ships. If you do not take backorders, do not let your platform report zero stock as available.
What about a sale that sells out
This is the case that catches people during a promotion. You badge fifty products, you drive traffic hard, and by hour six the three best ones are gone.
Two things save the campaign:
- The availability filter on the product set, so the sold out items leave delivery on their own.
- A supplementary feed carries the sale price and the badged image. Removing a product from the sale is then deleting a row, not editing creative. See supplementary feeds on Meta and how to add sale badges to Meta catalog ads.
Plan the promotion around the stock you have. Badging a product you have eleven of is a way to pay for traffic to a sold out page.
Should you pause the ad set
Usually no. Pausing and restarting an ad set resets its learning, which costs more than the sold out impressions did. Let the availability field do the work and leave the ad set alone.
The exception is a product set that has emptied out. An ad set with nothing to serve is not delivering anyway, and that one is worth pausing while you fix the set.
A weekly check that takes two minutes
- Open Commerce Manager, look at the data source run history, confirm the last run succeeded.
- Compare items in stock in the catalog against your store's in stock count.
- Open two products you know sold out this week and check the catalog agrees.
If all three look right, out of stock spend is not your problem and you can go back to creative. Why dynamic product ads look bad is the next thing to read.
To see your own in stock products drawn as finished catalog cards, paste your store URL into the preview.
Questions
- Does Meta show out of stock products in catalog ads?
- No, as long as your feed says they are out of stock. Meta pauses delivery of any product marked out of stock, usually within an hour of the catalog updating.
- Why am I paying for clicks on sold out products?
- Because the feed is behind your store. A feed scheduled once a day can advertise a product for up to 24 hours after it sold out.
- How often should availability update?
- Hourly for most stores. More often if you run flash sales or carry thin stock. Once a day is too slow for anything that sells out regularly.
- Can a product set exclude out of stock items?
- Yes. Product sets can filter on availability, so a set defined with an in stock filter will not contain sold out products.
- Should I pause the ad set when stock runs out?
- No, unless the whole product set is empty. Pausing resets learning, which usually costs more than the wasted impressions.
- What should preorder products be marked as?
- Mark them `available for order` or `preorder`, not `out of stock`, and say the shipping date on the product page. Marking them out of stock removes them from delivery entirely.
See these badges on your own products before you pay anything.
Try the free preview