A curve decaying from left to right, marking where the fall steepens

Performance falling does not tell you why. Ad fatigue and an auction change look identical in a CPA column and completely different one level down: fatigue moves hook rate on a specific creative, an auction shift moves CPM across every campaign you run at once. Five checks separate them in about twenty minutes, and the fixes have nothing to do with each other, so guessing wrong costs you either a wasted production cycle or a week of bidding into an auction you cannot win.

Why the distinction is worth twenty minutes

Four problems present as "CPA is up and I do not know why": creative decay, auction inflation, a seasonal or competitive shift, and a measurement break. The fix for each is unrelated. New creative does nothing for a broken conversion event, and raising bids does nothing for an exhausted hook.

The order below is deliberate. Each check is cheaper than the one after it, and each rules something out rather than confirming a hunch.

Check 1: the CPM trend, at three levels

Start here because it is free and it splits the problem in half.

Pull CPM for the affected ad set over 30 days, then the same window for the whole account, then the same placement in the previous month. Three patterns and three conclusions:

  • CPM up in the ad set and flat account-wide: something specific to this ad set. Creative relevance is the usual cause, so keep going down the list.
  • CPM up across every campaign, including ones with fresh creative: an auction change. A campaign with fresh creative inflating alongside the rest is the clean control here.
  • CPM up account-wide and also up the same month last year: seasonality. Q4, a major sales event, an election in your market. Plan around it rather than fixing it.

CPM rising is genuinely ambiguous, which is why it goes first and is never the last word. Platforms do price less relevant creative higher, so fatigue raises CPM, and so do six other things.

Check 2: hook rate, on the creative itself

This is the check that actually decides it. Hook rate is the share of impressions that stay past the opening beat, and an auction change does not touch it. Bidding pressure changes what you pay for an impression, not whether a person who sees your video keeps watching.

Compare each creative to its own first week rather than to a benchmark. Typical figures are 15 to 25 percent on Meta feed and 20 to 30 percent on TikTok in-feed, but a 22 percent hook rate means nothing without knowing whether that ad opened at 30.

Hook rate down on the affected creative and holding on others in the same ad set is creative fatigue, full stop. Hook rate holding while CPM and CPA rise means your creative is still doing its job and the problem is the price of the impression. That single comparison rules out more wrong diagnoses than everything else here combined.

Check 3: frequency per creative, at ad level

Frequency is impressions over reach on a rolling seven days, read at ad level and never at campaign level. Delivery concentrates 60 to 70 percent of impressions on the winner, so a campaign average of 2.0 routinely contains one creative at 2.5 or higher.

Our 2026 fatigue benchmark puts the onset of decline at a weekly frequency of 2.5 on Meta prospecting, with Meta internal research showing CTR down 45 percent after a fourth exposure to the same creative. If the affected ad is above 2.5 and its neighbours are not, you have both a cause and a mechanism. If everything in the account sits at 1.4, fatigue is not your problem, whatever the CPA column says. Our ad fatigue calculator will tell you when a given budget and audience crosses the line, which is also useful in reverse: it tells you when you could not possibly have crossed it yet.

Check 4: the measurement chain

Compare platform clicks against sessions in your own analytics for the same period, then sessions against conversions.

Clicks flat, sessions down: something between the click and the page. A redirect, a consent banner change, a slow landing page, an app store review. Clicks and sessions both flat but reported conversions down: a tracking break. A pixel change, a consent mode update, a modified conversion event, a CAPI feed that stopped firing. Neither of those is fatigue, and neither improves if you ship new creative.

A conversion event that silently stopped firing looks exactly like creative decay in the platform's reporting, and it will happily consume a fortnight of production before anyone opens the analytics tab.

Check 5: your own change log

Look at what you changed 3 to 7 days before the decline. Budget increases, bid strategy changes, new placements, audience edits, campaign consolidation, a new attribution setting.

Two things worth knowing here. A budget increase against a fixed audience raises frequency directly, so it can trigger genuine fatigue rather than merely coinciding with it. And a significant edit to a live ad set restarts learning, which typically produces two or three days of worse results that have nothing to do with creative at all. If you cannot see a change log, start keeping one. It resolves more of these arguments than any dashboard.

The diagnostic table

CPM Hook rate Frequency Conversions vs sessions Most likely cause First action
Up in this ad set only Down on the affected ad Above 2.5 on that ad In line Creative fatigue Promote a fresher variation, retire the tired one
Up account-wide Flat everywhere Normal In line Auction inflation or competition Reassess targets and bids, do not reshoot
Up account-wide and up year on year Flat Normal In line Seasonality Plan spend around it, hold winners for after
Flat Flat Normal Conversions down, sessions flat Tracking break Audit pixel, events and consent before anything else
Flat Flat Normal Sessions down too Landing page or site Check page speed, redirects, availability
Up Flat, then down a week later Rising fast In line A budget increase that caused fatigue Return budget to the previous level, add variations
Volatile for 2 to 3 days Noisy Noisy Noisy Learning reset after an edit Wait, and stop editing live ad sets mid-test

The two most common misreadings sit in rows two and four. Both get treated as fatigue and answered with a production sprint, which changes nothing in row two and lets row four keep eating conversions.

Why a new creative set is the cheapest test

If the checks leave you unsure, do not run a bidding experiment or restructure the account. Ship three genuinely different concepts, put them live at low budget beside the incumbent, and read hook rate after a day or two of real delivery.

The logic is clean. If the new concepts open at a normal hook rate while the incumbent stays low, it was fatigue. If the new concepts open just as badly, the problem is upstream of your creative: auction, audience, tracking or offer. Either way you know within 48 hours, and you were going to need the new creative eventually anyway. Compare that against the alternative of two weeks spent adjusting bid caps.

This is exactly the diagnostic loop we built Genyad for: three new concepts from footage you already own, one credit each, so the cheapest test in the account is also the one that produces a usable asset. To be clear about what it is not, there is no dashboard, no predicted performance score, no direct publishing to Meta or TikTok, and no AI avatars. Every number in the five checks above comes from your platform reporting and your own analytics, and it has to, because a tool that generated your creative should not also be the one grading it.

Frequently asked questions

Does rising CPM mean ad fatigue?

Not on its own. Platforms price less relevant creative higher, so fatigue raises CPM, but so do competitive pressure, seasonality, audience changes and bid strategy edits. Compare the ad set against the whole account and against the same placement last month: if a campaign with fresh creative is inflating too, the auction changed and your creative did not.

What single metric separates ad fatigue from an auction change?

Hook rate on the specific creative, measured against that ad's own first week. Auction dynamics change what you pay for an impression, not whether someone who sees the video keeps watching. A falling hook rate on one creative while its neighbours hold steady is creative decay, and a flat hook rate with rising costs is a pricing problem.

How can I tell whether my ads or my tracking broke?

Compare platform clicks with sessions in your own analytics, then sessions with conversions. Flat clicks and flat sessions with fewer reported conversions points at a pixel, event or consent problem rather than the creative. Fatigue shows up earlier in the chain, in hook rate and CTR, before it ever reaches the conversion count.

If it is seasonality, should I pause my campaigns?

Usually not, but change what you expect from them. A seasonal squeeze raises CPM for everyone, so targets set in a cheap month look broken in an expensive one. One quiet upside: a flat budget buys fewer impressions at a higher CPM, so frequency accumulates more slowly and a winner can last longer in calendar days than usual.