All articles
Ad Intelligence5 min read

Meta catalog campaign performance dropped?

Your catalog campaign lost ROAS and the Issues tab is clean. Here is how to read the catalog layer before you blame the creative or the algorithm.

Monday morning. The Advantage Plus catalog campaign that carried about 60% of last quarter's revenue is running at half its usual ROAS. Same ads, same budget, same audience settings, and nothing shipped since Thursday. So you open Commerce Manager, click into the catalog, and the Issues tab is clean. Zero errors. You cross the feed off the list and go back to arguing about creative fatigue.

The feed was the problem. It just was not broken.

Short answer: A catalog campaign can lose performance while the feed reports no errors. Items selling out, an availability flip, a changed product set rule or content IDs that stopped matching your pixel events all shrink the pool Meta has to sell from, and none of them raises an error flag. Check the eligible item count over time first.

The takeaways

  • A clean Issues tab is not an all-clear. Selling out, a price change and a product set rule that stopped matching are all valid feed states, so nothing turns red while your eligible item count falls.
  • Track the item count as a time series. Your budget is fixed and the eligible pool is not, so the same spend pushed through 40 items instead of 400 raises frequency per item and reads on the chart as creative fatigue.
  • Confirm the drop against money you can reconcile. A catalog can be perfectly healthy and the drop still be your best sellers selling out, which is a merchandising problem wearing a media costume.

Why does the catalog get skipped in a drop diagnosis?

Because the two bodies of writing about this problem never meet. The general performance drop checklists walk you down platform, then account, then creative, and they treat the catalog as plumbing that either works or throws an error. The catalog guides are the opposite: AdNabu's roundup of 15+ common feed errors and their fixes, sorted by error code.

I fetched two of the ranking ones while writing this. Both are thorough about clearing a rejected item. Neither answers the question you have on Monday morning, which is what to check when nothing is rejected and delivery fell apart anyway.

So you look at the Issues tab, see green, and eliminate the one layer where the answer usually lives. The error report is built to tell you what Meta refused. It was never built to tell you what quietly left.

What shrinks the eligible pool without raising an error?

Four things, and all of them are a correctly formatted feed doing exactly what it was told.

Availability is the big one. AdNabu's feed guide lists the required fields for every product as "id, title, description, availability, condition, price, link, image_link, brand", and availability is one of the 9. An item marked out of stock is a correct value in a correct field. ReferralCandy's troubleshooting guide tells you to update that field "in real-time or at least daily to prevent advertising unavailable products", which reads as a customer-experience rule and doubles as a delivery rule.

Then product set rules. A set defined by a price band or a tag silently stops matching when prices or tags move upstream.

Then partial syncs: item-level rejections shrink the set one product at a time without ever failing the upload.

And content ID drift. If a replatform or an app update changed your variant IDs, your pixel and Conversions API now send IDs the catalog does not recognise, so retargeting has nothing to match against.

How do you read the catalog layer in order?

Start with the number, then go looking for the reason. AdNabu's walkthrough puts the feed history in Commerce Manager under Catalogue, then Data Sources, where each upload carries a "Summary for Upload Session" and a downloadable Issue Report. Nothing in Ads Manager will point you there.

Read three things, in this order.

  1. Eligible items today versus 30 days ago. One number, one time series. It either moved or it did not, and that answer takes 5 minutes.
  2. Whether your revenue is still in the pool. Pull your top 10 SKUs by revenue and check each one is in the product set and in stock. A campaign can keep 95% of its item count and lose the 5 products that made the money.
  3. Whether the events still match. Compare the content IDs in recent purchase events against the IDs in the catalog.

Only after those three do you go to delivery, placement mix and creative. The order matters because each step is cheaper than the one after it.

Why does a shrinking catalog look like creative fatigue?

This is the mechanism, and it is the part the SERP never explains. Your budget is a fixed input. The eligible pool is not.

If the campaign was rotating 400 items last month and 40 today, the same daily spend gets pushed through a tenth of the inventory. €2,000 a day across 400 products is a different campaign from €2,000 across 40, with every setting identical. Frequency per item climbs. Incremental reach per item falls. CTR decays over several days, and cost per purchase drifts up with it.

That curve is indistinguishable from a tired creative. You are reading a denominator, not a creative.

It is also why our fatigue detection reads a multi-day CTR slope alongside a market-wide check rather than trusting one ad's decline on its own. The same downward line has several possible authors. Rule out the cheap explanations before you commission new assets.

What if the feed is healthy and the drop is real?

Sometimes it is. The pool shrank because your best sellers sold out, and no bid strategy or new hook fixes an empty warehouse. Sometimes a seasonal window closed. Sometimes demand moved and the catalog is an innocent bystander.

And sometimes nothing dropped at all. The reported number fell while your actual revenue held, which is an attribution problem rather than a performance one. Before you spend a week fixing delivery, reconcile against money in the bank.

That is the thread running through all of it: a diagnosis is only as good as the number you trust to confirm it. Our composite score weights ROAS and revenue alongside the cheaper engagement metrics for the same reason, and the wider argument sits on the ad intelligence page. Adscalr does not read your product feed. But it will stop you from calling a denominator problem a creative one.

This is the thinking behind Adscalr.

See the product