# How to detect creative fatigue on Meta and TikTok with an AI agent

> Tier: deep. Full contract: quantified decision rules and evidence requirements.

Find the ads whose audience has seen them too often, prove the decay with frequency and CTR trends, and rank what to refresh first.

**Intent.** Separate creatives that are worn out from creatives that never worked, and rank refresh candidates by spend at risk.

## When to use

- CPA drifting up over weeks with no structural change.
- Frequency creeping on always-on prospecting.
- Before a creative production sprint: this is the brief.

## When not to use

- Ads younger than 7 days or under ~1,000 impressions: that is a launch, not fatigue.
- Remarketing audiences, where high frequency is the design; judge them on efficiency only.

## Sources

Required: Meta Ads
Optional: TikTok Ads

## Preconditions

- Ad-level daily insights available over at least 21 days.
- Accounts ticked, confirmed via list_accounts.

## Inputs

- `scope`: Campaigns or ad sets to inspect. Default: active prospecting campaigns.
- `window`: Trend window. Default: last 28 days, daily.

## Procedure

1. On TikTok, start from the platform's own fatigue diagnostics. — tools: `tiktok_get_creative_fatigue_recipes`
   It encodes TikTok's thresholds; use it as the first ranking, then verify.
2. Pull ad-level daily insights with frequency, CTR, CPM and spend. — tools: `meta_get_insights`, `tiktok_get_insights`
3. Join ads to their creatives so findings name the asset, not an ID. — tools: `meta_get_ads`, `meta_get_creatives`, `tiktok_get_creatives`
4. For each ad with enough data, compare current CTR to its own first-14-days baseline, and read the frequency trend.
5. Rank confirmed fatigue by spend at risk, and note the creative angle of each so the refresh brief writes itself.

## Decision rules

- **When** CTR is down 30% or more against the ad's own first-14-days baseline AND frequency exceeds 4 on a 7-day window → **conclude** Fatigue confirmed. Rank by current spend. **Unless** CPM rose sharply at the same time, which can depress CTR account-wide; check a non-fatigued control ad first.
- **When** CTR never reached the account's median for the format → **conclude** Not fatigue: the creative under-performed from launch. Different fix, different list.
- **When** Frequency is high but CTR and CPA are stable → **conclude** Watch, do not refresh: audiences tolerate frequency until results say otherwise.
- **When** Under 1,000 impressions or under 7 days of data → **conclude** Refuse to grade; say the sample is too small.

## Evidence requirements

- Every fatigued ad shows its baseline CTR, current CTR, frequency and the dates of both readings.
- Spend at risk is the ad's current daily spend, stated with its window.

## Human approval boundary

- Pausing a fatigued ad is a Safe Write: preview, human confirmation, apply.
- Choosing replacement creative is a human decision; the skill delivers the ranked brief.

## Failure modes

- Seasonality read as fatigue: compare against the account's overall CTR trend before blaming the creative.
- An audience change mid-window resets the baseline; check ad set history before concluding.
- On TikTok, catalogue ads carry no owned creative asset; fatigue there belongs to the product feed, not a video.

## Output

- **Fatigued, ranked**: Ad, creative, baseline vs current CTR, frequency, spend at risk.
- **Never worked**: The separate list, so the refresh brief does not revive them.
- **Refresh brief**: Angles and formats that are still fresh in the account.

## Related

- Skill: [budget-reallocation](https://www.getmcpads.com/skills/budget-reallocation.md)
- Skill: [weekly-performance-review](https://www.getmcpads.com/skills/weekly-performance-review.md)
- Guide: [creative-fatigue](https://www.getmcpads.com/guides/creative-fatigue.md)
