Ad Creative Fatigue
Decide whether a running ad creative is genuinely wearing out, or whether a confounder - budget change, learning-phase reset, audience saturation, auction CPM inflation, seasonality, tracking breakage - explains the decline, and return a verdict with confidence plus the highest-return remedy per unit of effort. Use whenever the user mentions creative or ad fatigue, wear-out, climbing frequency, dropping CTR, a rising CPA on an older ad, when to refresh creative, or whether to kill an ad - even if they never say 'fatigue'. Covers B2B and B2C across search, social, video, and native. Ends at the verdict: replacement creative belongs to mbfinotti/advertising-skills@ad-copy-variants and mbfinotti/advertising-skills@ugc-ad-scripts.
- Skill ID
- mbfinotti/advertising-skills/ad-creative-fatigue
- Publisher
- mbfinotti
- Repository
- advertising-skills
- Installs
- 884
- Files
- 5
- License
- MIT
- Synced
- Oct 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
mbfinotti/advertising-skills/ad-creative-fatigueInstalls these files- SKILL.md
- evals/evals.json
- references/confounders.md
- references/examples.md
- references/signal-reference.md
What this skill tells the agent
Creative Fatigue
Read a creative's performance-over-time data and decide whether it is genuinely wearing out, how confident that call is, and what to do about it. The core discipline is refusal: many things can cause a declining metric, and creative wear-out is only one of them. Most refresh decisions are made too early, off one metric, against no baseline.
This skill runs a differential diagnosis in a fixed order, confounder screen before the fatigue call, never after:
- Baseline
- Confounder screen
- Decay measurement
- Confidence gate
- Verdict
Two further tensions stay live throughout:
- Fatigue is often hook fatigue rather than whole-ad fatigue (Ben Heath).
- Some ads improve with repeated exposure, the "wear-in" effect Les Binet describes in brand advertising, though Meta's 2023 research found no wear-in for direct-response objectives - wear-in is a real verdict only where the objective is brand, not DR.
There are no universal thresholds here: every trigger is derived from the creative's own trailing baseline and the account's own history. Named practitioner numbers appear only as attributed starting reference points.
This skill ends at the verdict and the recommended action.
- Producing the replacement asset belongs to
mbfinotti/advertising-skills@ad-copy-variants,mbfinotti/advertising-skills@ugc-ad-scripts, andmbfinotti/advertising-skills@ad-creative-brief. - Sample-sizing a pre-launch test belongs to
mbfinotti/advertising-skills@ad-creative-test-plan. - Scoring a video opening before launch belongs to
mbfinotti/advertising-skills@ad-hook-analyzer(here, hook rate is only read as a decay signal on ads already running). - When the confounder screen shows the problem is not the creative at all (structure, targeting, tracking), hand off to
mbfinotti/advertising-skills@ad-account-diagnostic. - Retargeting-sequence and frequency-cap architecture design is
mbfinotti/advertising-skills@retargeting-funnel. - Scaling and pacing decisions after a win are
mbfinotti/advertising-skills@paid-media-scalingandmbfinotti/advertising-skills@ad-budget-pacing.
Interview
Ask before diagnosing anything. One question per message; offer multiple-choice answers where possible; skip anything already answered or visible in supplied data.
- Which platform(s) is the creative running on? (Meta / Google Ads - search, Performance Max, or YouTube / LinkedIn / TikTok / other)
- B2B or B2C/ecommerce?
- Funnel stage: cold prospecting or retargeting/warm? (Tolerated exposure differs sharply between the two.)
- What can you actually export, and at what granularity: per-creative per-day, per-creative weekly aggregate, or only ad-set/campaign level? Per-creative per-day is the working assumption; anything coarser weakens every step downstream.
- Daily spend and conversion volume on the creative in question? (Decides whether the confidence gate can clear at all.)
- Rough audience size for the ad set, and is the audience list-based/ABM or broad?
- How many creatives are live in the same ad set? (Sibling mix changes what "losing spend share" means.)
- When was the ad, or its parent ad set/campaign, last edited - creative, budget, bid, audience, optimization event? Exact date matters.
- Did budget change during the window under suspicion? By how much?
- By what date does the result have to land? (A hard deadline promotes the Action Ladder's same-day rungs - rotation, budget shift, frequency cap - and demotes iteration and new concepts.)
- Do you want a one-off win on this creative, or a compounding asset? (A compounding mandate promotes iteration and new concepts even where a configuration fix would hold this week.)
- What is your effort ceiling: creative production capacity and lead time, in-house editing hours, whose sign-off list work needs, and how reversible the change has to be? (A refresh recommendation nobody can execute is worthless - this answer deletes rungs from the Action Ladder rather than reordering them.)
- What is the target CPA or ROAS the creative is judged against?
Workflow
- Run the Interview; collect every answer before touching the data.
- Fix the unit of analysis. Analyse at creative and concept level, never at campaign averages: forty rows for forty variants of five concepts hides the real pattern, and one fatigued ad dragging an ad-set average looks like a campaign-wide problem. Where the platform rotates variants automatically (Advantage+-style delivery, dynamic creative), read the asset-level breakdown - automated rotation masks individual asset decay. Conversely, a creative silently losing budget share with no manual change is itself a decay signal.
- Build the creative's own baseline. Never compare single days.
Sourced methods to offer as starting defaults, picked per the user's data granularity and overridden by their own history - the two are not ranked against each other, since both cost the same single export and only granularity decides:
- 3-day moving average against the creative's own trailing 14-day baseline (AdSights).
- Rolling 7-day window against a 30-day baseline (Segwise).
Exclude known outages and match the comparison window's day-of-week composition to the baseline's. If your harness can read the export or run the calculation, compute it; otherwise emit the exact export steps and spreadsheet formulas (columns, moving-average ranges, delta formula (current - baseline) / baseline) for the user to run and report back.
- Run the confounder screen, before any fatigue talk. Work through references/confounders.md and mark every confounder pass (ruled out) or fail (present):
- budget/bid change
- learning-phase reset
- audience overlap/saturation
- auction CPM inflation
- seasonality and window composition
- tracking breakage
- attribution-window skew
- placement/device mix shift
- statistical noise
- landing-page/offer change
- sibling-mix shift
Any fail that explains the decline ends the fatigue inquiry: the verdict is confounded (or saturating for the audience case) and the fix targets the actual cause. Structure/targeting/tracking root causes hand off to mbfinotti/advertising-skills@ad-account-diagnostic.
- Measure decay against the baseline using references/signal-reference.md. Apply the field's consensus decision rule: no single metric confirms fatigue - require at least two signals moving together across two or more consecutive periods (Segwise; AdSights). Weight leading signals (link CTR decay, hook-rate decay on video, falling first-time-impression ratio, silent budget-share loss) over lagging ones. Frequency is a lagging, confirming signal only - Meta's own analytics team notes reported frequency is measured at ad/ad-set level while fatigue happens at creative level, and is a period average, not the marginal effect of the next impression. Do not build the call on frequency.
- Apply the Confidence Gate (below). If it fails, the verdict is
insufficient data- state what extra spend or days would clear it and stop; refuse to recommend a refresh on noise. - Separate fatigue from saturation before finalising. The discriminating logic:
- Fatigue: costs rise while conversion rate holds.
- Saturation: both degrade, alongside a falling first-time-impression ratio and flattening reach.
Where the user can run it, the definitive test is Meta's own:
- A new creative restoring performance on the same audience proves fatigue.
- Performance recovering only on a fresh audience proves saturation.
Their fixes are opposite, new creative versus audience expansion, so the split matters.
More from mbfinotti
Use this skill in a project
Open any RiverX project, search the Skills panel for mbfinotti/advertising-skills/ad-creative-fatigue, and install it in one click.
