CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

ad-creative-fatigue-detector

Detect, predict, and resolve ad creative fatigue across platforms. Use when analyzing frequency vs CTR decay, predicting creative lifespan, planning rotation strategies, or calculating statistical significance for A/B tests.

Quality

82%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Ad Creative Fatigue Detector

Systematic framework for detecting, predicting, and resolving ad creative fatigue across Google, Meta, LinkedIn, TikTok, Reddit, and X. Includes decay analysis formulas, platform-specific frequency thresholds, rotation strategies, and statistical significance calculations.

Capabilities

  1. Frequency-CTR Decay Analysis - Quantify the relationship between ad frequency and performance decline
  2. Creative Lifespan Prediction - Estimate when a creative will exhaust its effective audience
  3. Platform-Specific Thresholds - Apply correct fatigue benchmarks per platform
  4. Refresh Strategy Recommendations - Determine what level of creative change is needed
  5. A/B Rotation Analysis - Manage creative rotation for continuous performance
  6. Statistical Significance - Determine if observed fatigue is real or random noise

Fatigue Detection Framework

The Fatigue Signal Matrix

SignalWeightHow to MeasureFatigue Threshold
CTR declineHighWeek-over-week CTR change> 20% decline
CPA increaseHighWeek-over-week CPA change> 30% increase
Frequency riseMediumImpressions / ReachAbove platform threshold
CPM increaseMediumCost per 1,000 impressions> 25% increase (same targeting)
Conversion rate declineHighConversions / Clicks> 25% decline
Engagement rate declineMediumReactions+Comments / Impressions> 30% decline
Negative feedback increaseHighHide, Report, UnlikeAny notable increase

Composite Fatigue Score

Calculate a single score to prioritize creative refreshes:

Fatigue Score = (w1 × CTR_decay) + (w2 × CPA_increase) + (w3 × Freq_excess) + (w4 × CVR_decay)

Where:
  CTR_decay = max(0, (CTR_peak - CTR_current) / CTR_peak)
  CPA_increase = max(0, (CPA_current - CPA_best) / CPA_best)
  Freq_excess = max(0, (Frequency - Threshold) / Threshold)
  CVR_decay = max(0, (CVR_peak - CVR_current) / CVR_peak)

Weights:
  w1 = 0.30 (CTR)
  w2 = 0.30 (CPA)
  w3 = 0.15 (Frequency)
  w4 = 0.25 (CVR)

Interpretation:
  0.00 - 0.15: Fresh — no action needed
  0.15 - 0.30: Early fatigue — prepare replacements
  0.30 - 0.50: Active fatigue — begin rotation
  0.50 - 0.75: Severe fatigue — replace immediately
  0.75 - 1.00: Exhausted — pause creative

Platform-Specific Fatigue Thresholds

Meta (Facebook / Instagram)

MetricProspectingRetargetingHigh AOV
Max frequency (7d)2.5-3.05.0-7.06.0-8.0
Max frequency (30d)6.0-8.015.0-20.018.0-25.0
CTR decay trigger> 20% from peak> 25% from peak> 15% from peak
Avg creative lifespan2-4 weeks4-6 weeks3-5 weeks
Refresh cadenceWeekly rotationBi-weeklyWeekly

Meta-specific fatigue signals:

  • Relevance Score / Quality Ranking drops below average
  • "Ad set is getting fewer results" notification
  • Cost per ThruPlay increasing with stable targeting
  • Hook Rate declining (first 3 seconds losing viewers)

Google Ads (Search)

Search ads experience fatigue differently — it's query-driven, not audience-driven.

MetricThresholdNotes
Ad CTR decline> 15% over 30 daysCompare same keywords
Impression share (lost)Rising by > 10%Competitors may be refreshing
Quality Score dropBelow 5Ad relevance component declining
Avg position declineDropping with same bidsCreative losing auction preference
Creative lifespan3-6 monthsLonger than social platforms

Google Ads (Display / YouTube)

MetricProspectingRemarketing
Max frequency (7d)5-710-15
Max frequency (30d)15-2030-40
CTR decay trigger> 25% from peak> 30% from peak
Creative lifespan3-6 weeks4-8 weeks
View rate (YouTube)> 20% decline> 25% decline

LinkedIn Ads

MetricThresholdNotes
Max frequency (30d)4-6B2B audiences are small
CTR decay trigger> 15% from peakEngagement-driven
Engagement rate< 0.35%Below platform average
Creative lifespan4-8 weeksLonger B2B consideration
Sponsored ContentRefresh every 3-4 weeksCarousel lasts longer

TikTok Ads

MetricThresholdNotes
Max frequency (7d)3-4Fast-scroll environment
CTR decay trigger> 30% from peakRapid creative churn
2-second view rate< 40% (from 60%+)Hook is failing
Creative lifespan1-3 weeksShortest of all platforms
Completion rateDropping > 20%Content losing interest

Reddit Ads

MetricThresholdNotes
Max frequency (30d)3-5Community-sensitive
CTR decay trigger> 20% from peakReddit users flag repetition
Downvote ratioIncreasingNegative community signal
Creative lifespan2-4 weeksModerate churn
Comment sentimentShifting negativeCommunity fatigue

X (Twitter) Ads

MetricThresholdNotes
Max frequency (7d)4-6Timeline-driven
CTR decay trigger> 25% from peakFast-moving feed
Engagement rate< 0.5%Below platform average
Creative lifespan2-4 weeksModerate churn
Reply sentimentShifting negativeAudience annoyance

Creative Lifespan Prediction

Exponential Decay Model

Creative CTR follows an exponential decay curve after the initial ramp-up:

CTR(t) = CTR_peak × e^(-λt)

Where:
  CTR(t) = CTR at time t (days after peak)
  CTR_peak = highest CTR observed
  λ = decay constant (platform-specific)
  t = days since peak CTR

Solving for λ from observed data:
  λ = -ln(CTR_current / CTR_peak) / t

Predicting remaining lifespan (days until CTR drops to threshold):
  t_remaining = -ln(CTR_threshold / CTR_current) / λ

Platform Decay Constants (Typical)

Platformλ (avg)Half-life (days)Meaning
TikTok0.07010CTR halves every 10 days
Meta (prospecting)0.04017CTR halves every 17 days
Meta (retargeting)0.02528CTR halves every 28 days
X Ads0.04515CTR halves every 15 days
Reddit0.03520CTR halves every 20 days
LinkedIn0.02035CTR halves every 35 days
Google Display0.01839CTR halves every 39 days
Google Search0.00887CTR halves every 87 days

Prediction Example

Platform: Meta (prospecting)
CTR_peak: 2.4% (Day 3)
CTR_current: 1.8% (Day 12, so t=9)

λ = -ln(1.8 / 2.4) / 9 = -ln(0.75) / 9 = 0.2877 / 9 = 0.032

Fatigue threshold: 50% of peak = 1.2%

t_remaining = -ln(1.2 / 1.8) / 0.032 = -ln(0.667) / 0.032 = 0.405 / 0.032 = 12.7 days

Action: ~13 days until creative hits fatigue threshold. Begin preparing replacement by Day 18.

Workflows

Workflow 1: Weekly Fatigue Audit

Step 1: Pull performance data (7-day granularity)

For each active creative, collect:

  • Daily: Impressions, Reach, Clicks, Conversions, Cost
  • Calculate: CTR, CPC, CPA, Frequency, CVR

Step 2: Calculate Fatigue Scores

For each creative:

  1. Find peak CTR (best day or best 3-day average)
  2. Compare to current 7-day average
  3. Calculate composite fatigue score
  4. Rank creatives by score (highest fatigue first)

Step 3: Triage

Score Range# CreativesAction
0.50+Replace immediatelySwap with new creatives
0.30-0.50Prepare replacementHave new creatives ready in 3-5 days
0.15-0.30MonitorCheck again next week
< 0.15HealthyNo action

Step 4: Document and track

Log each creative's fatigue progression to build platform-specific decay models for your account.

Workflow 2: Creative Rotation Strategy

Evergreen rotation model:

Maintain 3 tiers of creatives at all times:

Tier 1: "Active" (2-4 creatives)
  → Currently running, performance monitored daily
  → When fatigue score > 0.30, move to Tier 3

Tier 2: "Ready" (2-4 creatives)
  → Approved, tested, waiting to deploy
  → Promoted to Tier 1 when needed

Tier 3: "Resting" (historical creatives)
  → Paused for 4-8 weeks
  → Can be recycled after rest period (audience forgets)
  → Keep if original CTR was top quartile

Rotation triggers:

  1. Fatigue score > 0.30 → Swap from Tier 1 → Tier 3, promote from Tier 2
  2. Weekly: Add 1 new creative to Tier 2 (maintains pipeline)
  3. Monthly: Review Tier 3 for recyclable creatives

Format mixing strategy:

SlotFormatPurpose
Creative AStatic imageBaseline performer
Creative BShort video (< 15s)Engagement driver
Creative CCarousel / CollectionProduct showcase
Creative DUGC / testimonialSocial proof

Workflow 3: A/B Test Significance Calculator

When comparing creative performance, verify statistical significance before making decisions.

Step 1: Collect data

MetricCreative ACreative B
Impressions50,00048,000
Clicks1,2001,050
CTR2.40%2.19%

Step 2: Calculate z-score

p_A = clicks_A / impressions_A
p_B = clicks_B / impressions_B
p_pooled = (clicks_A + clicks_B) / (impressions_A + impressions_B)

SE = sqrt(p_pooled × (1 - p_pooled) × (1/impressions_A + 1/impressions_B))

z = (p_A - p_B) / SE

Example calculation:

p_A = 0.0240
p_B = 0.0219
p_pooled = 2250 / 98000 = 0.02296

SE = sqrt(0.02296 × 0.97704 × (1/50000 + 1/48000))
SE = sqrt(0.02296 × 0.97704 × 0.0000408)
SE = sqrt(0.000000916)
SE = 0.000957

z = (0.0240 - 0.0219) / 0.000957 = 2.19

Step 3: Interpret z-score

z-scoreConfidenceDecision
< 1.28< 90%Not significant — keep testing
1.28 - 1.64590-95%Marginally significant — lean toward winner
1.645 - 1.9695-97.5%Significant — winner confirmed
1.96 - 2.57697.5-99.5%Highly significant — strong winner
> 2.576> 99.5%Very highly significant — decisive winner

Example result: z = 2.19 → 97.1% confidence. Creative A is the winner at the 95% level.

Step 4: Minimum sample size for future tests

n = (z_α/2 + z_β)² × (p1(1-p1) + p2(1-p2)) / (p1 - p2)²

For detecting a 10% relative CTR difference:
  Baseline CTR: 2.0%
  Detectable difference: 0.2% (absolute) = 10% relative
  Confidence: 95% (z = 1.96)
  Power: 80% (z = 0.84)

  n = (1.96 + 0.84)² × (0.02×0.98 + 0.022×0.978) / (0.002)²
  n = 7.84 × 0.04112 / 0.000004
  n = 80,594 impressions per variant

Refresh Strategy Reference

Creative Change Impact by Level

LevelWhat ChangesExpected CTR LiftTime to CreateCost
Copy tweakHeadlines, body text5-15%30 minFree
Color/layoutBackground, CTA button, font10-20%1-2 hoursFree
New angleSame product, different benefit/hook15-30%2-4 hoursLow
New visualDifferent imagery, same message20-40%4-8 hoursMedium
Format changeStatic → video, video → carousel25-50%1-2 daysMedium
Full creativeEntirely new concept and visuals30-60%2-5 daysHigh
UGC / testimonialUser-generated or influencer content40-80%3-7 daysVariable

Creative Lifespan by Format

FormatAvg Lifespan (Meta)Avg Lifespan (Google)Avg Lifespan (LinkedIn)
Static image2-3 weeks4-6 weeks4-6 weeks
Short video (< 15s)2-4 weeks3-5 weeks3-5 weeks
Long video (30s+)3-5 weeks4-8 weeks4-8 weeks
Carousel3-5 weeksN/A5-8 weeks
UGC content3-6 weeksN/A3-5 weeks
Responsive (RSA)3-6 months3-6 monthsN/A

Examples

Example 1: Meta Campaign Fatigue Diagnosis

Data (7-day snapshots):

WeekCTRCPCFrequencyCVRCPA
Week 12.4%$0.851.24.1%$20.73
Week 22.1%$0.951.83.8%$25.00
Week 31.7%$1.152.63.2%$35.94
Week 41.3%$1.403.52.5%$56.00

Fatigue Score (Week 4):

CTR_decay = (2.4 - 1.3) / 2.4 = 0.458
CPA_increase = (56 - 20.73) / 20.73 = 1.70 → capped at 1.0
Freq_excess = (3.5 - 3.0) / 3.0 = 0.167
CVR_decay = (4.1 - 2.5) / 4.1 = 0.390

Score = 0.30×0.458 + 0.30×1.0 + 0.15×0.167 + 0.25×0.390
Score = 0.137 + 0.300 + 0.025 + 0.098 = 0.560 (Severe)

Action: Immediate creative replacement. This creative is severely fatigued.

Example 2: Lifespan Prediction for Budget Planning

Scenario: Launching 4 creatives for a Meta campaign. Budget: $5K/day. Need to predict when replacements are needed.

Using decay constants:

  • Static image: λ = 0.045 → half-life = 15 days → usable for ~25 days
  • Video (15s): λ = 0.035 → half-life = 20 days → usable for ~33 days
  • Carousel: λ = 0.030 → half-life = 23 days → usable for ~38 days
  • UGC video: λ = 0.028 → half-life = 25 days → usable for ~41 days

Content calendar:

  • Week 1-3: All 4 active
  • Week 4: Replace static image
  • Week 5: Replace 15s video
  • Week 6: Replace carousel + start new batch
  • Week 7: Replace UGC video

Production pipeline: Need 2 new creatives every 10 days to maintain performance.

Example 3: Multi-Platform Fatigue Dashboard

Weekly fatigue report across platforms:

PlatformCreativeDays ActiveFatigue ScoreStatusAction
Meta"Hero Video"220.62SevereReplace
Meta"Carousel V2"140.28EarlyMonitor
Google"RSA Set A"450.12FreshKeep
LinkedIn"Whitepaper CTA"310.35ActivePrepare replacement
TikTok"Demo Clip"110.44ActiveReplace soon
Reddit"Community Post"180.21EarlyMonitor

Priority queue:

  1. Meta "Hero Video" → replace immediately (Day 22, severe)
  2. TikTok "Demo Clip" → replace within 3 days (Day 11, fast decay)
  3. LinkedIn "Whitepaper CTA" → prepare replacement (Day 31, moderate)

About this skill

Part of the Synter free skills collection — open-source agent skills for advertising, PPC, and marketing automation.

Want this skill (and 40+ more) running on autopilot against your live ad accounts? Try Synter — AI Agent Media Buyers that connect to Google, Meta, LinkedIn, TikTok, Reddit, Amazon, and 7+ more platforms.

Repository

Synter-Media-AI/free-skills

Path

skills/ad-creative-fatigue-detector/SKILL.md

Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.