Lock in $67
Method

Facebook ad fatigue: creative or audience, and how to tell

Two problems that look the same in a summary, need opposite fixes, and are separated by one line on a chart the connector will not draw for you.

Espen Opdahl Published 6 min read
The short answer

Creative fatigue and audience fatigue look identical in a summary and they need opposite fixes. The split is whether reach is still growing. If reach keeps climbing while click-through decays, the idea has worn out. If reach has flattened and frequency is the thing still rising, you have run out of people. Meta's ads connector can answer that, but not through the tool you would reach for: the trend tool takes no date range and does not carry frequency at all.

Cost per result drifts up over a fortnight. Nothing was changed. You ask the connected chat what happened and get a paragraph about testing new creative, which is the advice for one of the two things this could be and actively wrong for the other.

Swapping creative into a saturated audience buys a few days and costs a week of production. Widening an audience that is bored of one idea spreads the same tired ad over more people. Getting the diagnosis right is worth more than the fix is, and it is a two-line check.

The mechanism: one is a supply problem, one is a wear problem

An ad set delivers by finding people who have not been served yet. While that pool holds out, reach rises roughly in step with impressions and frequency stays near flat. Response decaying in that state is the idea losing its edge on people meeting it for the first time. That is creative fatigue, and it is a wear problem.

When the pool thins, delivery starts re-serving the same accounts. Reach flattens, impressions carry on, and frequency — the ratio between them — is the line that moves. Response decays because the audience is exhausted, not because the ad got worse. That is a supply problem, and new creative does not create supply.

So the diagnosis needs the two lines separately over the same window. Reach and frequency both sit in the connector's field catalogue: asked on 2026-09-08, frequency returns as a filterable, sortable float, described as “the average number of times each Meta Account saw your ad”, available at account, campaign, ad set and ad level. reach is there alongside it, with the catalogue going out of its way to note that it “is different from impressions, which may include multiple views of your ads by the same Meta Accounts”.

Routing a question to the tool that can actually answer it is most of the skill in running an account this way. The Claude Ads Operator course is built around that, and around getting the connector attached properly first.

worth knowing Frequency is in the connector's field catalogue and missing from its trend tool.

The obvious move is ads_insights_performance_trend, whose job is a time-series view of performance. Its schema lists the metrics it will analyse: CPC, CPM, CPR, ROAS, CTR, CVR and REACH. Frequency is not among them. Read on 2026-09-08, the same description also says the tool “analyzes the full available history and accepts no date range: do not pass date_preset, date_from, or date_to”. Fatigue is a slope inside a window, so the one tool named for trends declines both halves of the question and points you elsewhere itself: “to analyze a specific window, use ads_get_ad_entities with a date_preset instead”.

SignalCreative fatigueAudience fatigue
Reach, week over weekStill climbingFlattened
FrequencyRoughly flatThe line that is moving
CTRDecayingDecaying
A genuinely new angle, same targetingRecoversDoes little
Same ad, untouched audienceDoes littleRecovers
What the fix costs youProduction timeCheaper prospecting, worse fit

Asking for it in a way that survives the tooling

Because the trend tool will not take a window, you supply the windows yourself and compare. Two entity pulls at ad set level, then the arithmetic, and insist the dates come back before the numbers so you can see which fortnights were actually compared.

For each active ad set, pull reach, impressions, frequency, ctr and
amount spent for last_14d, then the same fields again for the fourteen
days before that. Echo the two date ranges back first. Then, per ad set,
show the change in reach, the change in frequency and the change in CTR
side by side. Do not summarise, do not rank, and do not tell me what to
do about it yet.

The last sentence is load-bearing. Ask an assistant why performance dropped and it will reason its way to a cause from a summary; ask it for three deltas per ad set and the cause is legible in the table without anyone having to be right about it. The reading is the two-column split above: reach up and CTR down is a wear problem, reach flat and frequency up is a supply problem.

New creative cannot manufacture new people, and a wider audience cannot make a worn-out idea interesting again.

Where this breaks

Three limits, and the first is the one that costs most. Meta publishes three relevance diagnostics at ad level — rankings for quality, for engagement rate, for conversion rate — and they are the comparative read on whether an idea is losing to the ads beside it. Asked for by name on 2026-09-08, the connector's field catalogue returned all three as unknown fields. They are standard Marketing API columns and the connector does not resolve them, which is covered in more detail here. Reach, frequency and CTR are what you have.

Second, the anomaly tool will flag the drop and will not name its cause, and says so plainly: it instructs the assistant to “distinguish between observations and actionable causes” because anomalies “indicate areas for deeper analysis, not definitive conclusions”. Take it at its word rather than reading a flagged ad set as a verdict.

Third, a separate condition mimics both. The auction benchmarks tool says its own job includes telling you to merge near-identical ad sets where there is “high auction overlap”, which it describes as causing “under-delivery and budget fragmentation”. Ad sets bidding against each other push costs up and squeeze delivery with no fatigue involved at all, and the tell is timing: it shows up when you add ad sets, not as anything gradually decays.

  • Reading frequency as a threshold. There is no universal number at which an audience is finished; it varies by offer, price and how warm the pool is. What tells you something is your own line bending, not where it sits.
  • Comparing windows of different lengths. A fortnight against the last month double-counts the overlap and flatters whichever end you were hoping for. Equal-length, adjacent, no gap.
  • Diagnosing at campaign level. Reach and frequency average across ad sets with different audiences, and one saturated ad set inside a healthy campaign disappears into the mean.
  • Treating a broad prospecting set and a retargeting pool as the same question. A small warm pool is supposed to run at high frequency. Fatigue there is normal operation.

Try this tonight Pick your highest-spending ad set and run the two-window pull above. If reach is still growing, put tomorrow into producing a genuinely different angle rather than a recut of the winner — and check whether your creative output has been flat while spend grew, because that is the condition that makes this recur. If reach has flattened, leave the creative alone and widen the audience or lift the exclusions instead.

Can I just ask Claude which kind of fatigue I have?

You can, and you will get an answer whether or not the data supports one. Ask for the reach, frequency and CTR deltas across two equal windows first, then ask for the interpretation with that table already on screen. The order matters more than the wording.

Why does the trend tool not accept a date range?

Its schema states it analyses the full available history by design and tells you to use the entity tool with a date preset for a specific window. No reason is documented. Treat it as a long-run direction indicator rather than a diagnostic.

Does frequency come back at ad level?

Yes. The catalogue lists it as supported at account, campaign, ad set and ad level, and it is filterable with range operators, so you can ask for ad sets above a frequency you choose rather than reading the whole account.

What if reach is flat and frequency is flat too?

Then delivery itself has slowed and this is not a fatigue question. Look at budget pacing, ad set overlap and whether anything went into review — the auction and delivery side, not the creative side.

Stop guessing which fatigue you have

The course is the routing: which tool answers which question, which fields the connector actually resolves, and the checks to run before you rebuild a campaign that did not need rebuilding.

See what's inside — $67 founding price

Pre-sale: the modules are still being recorded and founding members get the checkout link first. No charge today. Public price $97.

Espen Opdahl Writes The Claude Ads Operator. I run Meta ad accounts through Claude and Meta's official ads connector, and I write down what actually happens — including the parts that don't work. Not affiliated with Meta or Anthropic.