---
title: "How to Measure Creative Fatigue from Performance Data"
description: "A versioned protocol for measuring creative fatigue: guarded window comparisons, volume floors, a decay rule, and false-positive checks for mobile UA teams."
canonical: "https://lemon-ai.com/resources/creative-fatigue-measurement"
markdown_url: "https://lemon-ai.com/resources/creative-fatigue-measurement.md"
language: "en"
image: "https://lemon-ai.com/og/resource-creative-fatigue-measurement.png"
image_alt: "Ranked assets with a declining rate curve behind a guarded fatigue measurement rule."
date_published: "2026-08-14"
date_modified: "2026-08-14"
authors: ["Gregory Potemkin"]
schema_types: ["Article","BreadcrumbList","Organization","Person","WebApplication","WebPage","WebSite"]
---

# How to Measure Creative Fatigue from Performance Data

Fatigue measurement protocol

A versioned protocol for measuring creative fatigue: guarded window comparisons, volume floors, a decay rule, and false-positive checks for mobile UA teams.

![Gregory Potemkin](https://lemon-ai.com/images/join-us/gregory.webp) 

By [**Gregory Potemkin**](https://lemon-ai.com/authors/gregory-potemkin)  
Founder & CEO  
Published August 14, 2026 

**Measure creative fatigue as a guarded comparison: the same efficiency rate, for the same asset, across two adjacent windows of equal length, accepted only when both windows clear minimum volume floors and the asset is still spending.** The threshold that turns a decline into a flag is a parameter of that comparison, not a universal truth. What transfers between accounts is the structure of the guards, and that structure is what this protocol defines.

This page publishes the exact rule Lemon AI runs in production, with its default parameters, a hand-worked example, and the checks that separate genuine creative decay from the delivery, auction, and reporting changes that imitate it.

![Five gates of the fatigue measurement protocol: spend floor, impression floors on both windows, active-spend check, decay rule, and a review queue ranked by money at stake.](https://lemon-ai.com/images/resources/fatigue-measurement-gates.svg) 

A fatigue flag must pass every gate. Most candidates fail on volume, not on the decay rule.

## Fatigue is real. Universal thresholds are not.

Repeated exposure measurably reduces response. In a 2023 study, Meta’s analytics team modeled ad response across impressions with a logistic regression that controlled for audience saturation and user-level selection effects. The associated likelihood of conversion fell by about 45% by the fourth repeated exposure, following approximately (N+1)^-0.43 for N prior exposures. The same study found no evidence of a beneficial wear-in period, and adding a new creative to fatigued ad sets improved conversion rates by about 8% on average across roughly 26,000 test cases. Those results describe the Meta ecosystem, but the mechanism they measure is the one every UA team manages.

The problem is what the industry does with that fact. Public guidance is full of universal rules: a frequency ceiling of 3, a 20% CTR decline over 7 days, refresh cadences by audience size. These numbers circulate without a dataset, a method, or a stated scope. Applied directly, they produce two expensive errors. A rule tuned too tight kills working creatives on noise. A rule tuned too loose lets a genuinely decayed asset spend for weeks.

There is also a structural reason to distrust any exposure-based rule: not every network lets you observe exposure at the level where you make decisions. As verified on August 14, 2026, AppLovin’s [Asset Reporting API](https://support.applovin.com/en/growth/promoting-your-apps/api/asset-reporting-api) documents asset identity, campaign and creative-set identifiers, impressions, clicks, cost, and CTR. Frequency and reach are not among the documented asset-level fields, and neither are installs or revenue. A protocol that depends on frequency cannot run there. A useful protocol has to work from the delivery and outcome series you actually have on every network.

## Protocol v1.0, step by step

Each step exists to remove a specific way the measurement goes wrong.

**1\. Fix the unit of analysis.** Measure at the asset (the individual creative), within one account, holding app, platform, and campaign objective scope constant. Fatigue claims about a mixed scope are claims about the mix.

**2\. Choose the efficiency rate.** Use IPM (installs per thousand impressions) as the primary rate. Install intent is what the budget buys. Take asset-grain installs from the network report, your MMP, or a documented reconstruction when the network does not report them at that grain. Fall back to CTR only when neither comparison window reports installs at all, so an asset without install attribution still gets a signal instead of a fabricated zero.

**3\. Compare two adjacent windows of equal length.** Current 7 days against the previous 7 days. Never compare against the asset’s all-time peak: peaks are outliers by construction, and a peak-anchored comparison manufactures decline in any noisy series.

**4\. Apply volume floors on both sides.** Require at least 10,000 impressions in each window, and at least $100 of spend in the current window. A rate computed on a few hundred impressions is noise, and a confident flag about noise is worse than silence. The floor applies to both windows because either side can be the unstable one.

**5\. Require active spend.** The asset must have nonzero spend within the last 2 days. Fatigue on an asset that already stopped delivering is history, not a decision.

**6\. Gate on outcome maturity.** The trigger rate (IPM or CTR) matures fast. The metrics you will check during review often do not. A D7 ROAS whose cohorts have not had seven days to mature is still moving, and comparing into it manufactures a decline that reverses on its own. Any metric with an outcome window enters the review only through dates that have fully matured.

**7\. Apply the decay rule.** Compute the relative drop: previous-window rate minus current-window rate, divided by the previous-window rate. Flag the asset when the drop reaches 25%.

**8\. Rank flags by money, not by percentage.** Order the review queue by current-window spend. A 26% drop on $6,000 of weekly spend outranks a 70% drop on $300, because the first is where the budget is.

**9\. Review before acting.** A flag is a queue entry, not a verdict. The review applies the look-alike checklist below, then ends in a recorded decision: keep, refresh with a controlled variant, or retire.

Version the protocol. Record the version and the parameter values alongside every decision. When you change a threshold, change the version. Six months later, the question “were our fatigue calls any good?” is only answerable if you know which rule made each call.

## A worked example with the arithmetic visible

A playable asset in a mobile game account, scope held constant:

| Window          | Impressions | Installs | Spend  | IPM   |
| --------------- | ----------- | -------- | ------ | ----- |
| Previous 7 days | 388,000     | 4,010    | $5,640 | 10.34 |
| Current 7 days  | 412,000     | 3,140    | $5,870 | 7.62  |

The gates: current-window spend $5,870 clears the $100 floor. Both windows clear the 10,000-impression floor. The asset spent yesterday, so it is active. IPM for the previous window is 4,010 divided by 388, which is 10.34\. IPM for the current window is 3,140 divided by 412, which is 7.62.

The decay rule: (10.34 - 7.62) / 10.34 = 0.263, a 26.3% relative drop. That clears the 25% threshold, so the asset is flagged with $5,870 at stake and enters review with its daily IPM series as evidence.

Compare a second asset in the same account that lost 41% of its IPM in the same period but delivered 8,200 impressions this window. It never becomes a flag. The floor excludes it, which is the correct outcome: at that volume, a 41% swing is well within ordinary variance, and a queue that contains it trains the reviewer to ignore the queue.

## Rule out the look-alikes before acting

A recent research paper on fatigue detection makes the central evaluation point well: a detector must be tested not only on fatigue events but on realistic non-events it should ignore. Its benchmark names eight such regimes: stable baselines, impression-volume shifts, seasonality shifts, delivery gaps, targeting-mix changes, auction-pressure shocks, attribution volatility, and creative rotation. The paper’s evidence is synthetic screening rather than production validation, but the taxonomy is exactly the checklist a human review needs, because every one of those regimes can produce a falling rate on a healthy creative. The paper also quantifies why false alerts matter: each one charges review time, and a detector that finds every event while flooding the queue is still a bad detector.

The review step checks each look-alike directly:

| Look-alike              | What you observe                            | How to rule it out                                                                    |
| ----------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------- |
| Impression-volume shift | Delivery expanded sharply between windows   | Break the windows down by country, platform, and placement; a mix change is not decay |
| Seasonality             | Similar assets declined together            | Compare against the account-level baseline for the same windows                       |
| Delivery gaps           | Dark days inside a window                   | Inspect the daily series; a gap makes the window rate unstable                        |
| Targeting change        | Campaign or audience edits mid-window       | Check the change log before blaming the creative                                      |
| Auction pressure        | CPM rose while the rate held                | Rising cost with stable IPM is an auction story, not a creative story                 |
| Attribution volatility  | Install reporting shifted or arrived late   | Confirm connection freshness and that both windows are fully reported                 |
| Creative rotation       | A new sibling creative entered the ad group | Reallocated delivery lowers an incumbent’s volume and mix without audience wear-out   |

If none of the look-alikes explains the decline, treat the flag as fatigue and design the refresh as a controlled test: keep the attributes that made the asset win, change the element you believe wore out, and record the hypothesis.

## Default parameters and how to tune them

These are the defaults Lemon ships in its production screening. Every one is a parameter, not a law.

| Parameter         | Default                                             | Why this guard exists                                                         |
| ----------------- | --------------------------------------------------- | ----------------------------------------------------------------------------- |
| Window length     | 7 days                                              | Long enough to absorb day-of-week effects at typical UA volumes               |
| Comparison        | Current vs. previous adjacent window                | Equal lengths, no peak anchoring                                              |
| Rate              | IPM, with CTR only when neither window has installs | Install intent is the purchase; CTR is the last resort, not the default       |
| Impression floor  | 10,000 per window, both windows                     | Rates below this volume are noise at typical IPM levels                       |
| Spend floor       | $100 in the current window                          | A flag must be worth the review it triggers                                   |
| Active-spend gate | Spend within the last 2 days                        | Stopped assets are history                                                    |
| Decay rule        | Relative rate drop of at least 25%                  | Above ordinary window-over-window variance for stable assets at floor volumes |
| Queue order       | Current-window spend, descending                    | Directs attention at money, not at percentages                                |

Tune against your own noise, not against someone else’s blog. Take the assets you believe are healthy, compute the distribution of their window-over-window IPM changes over a stable period, and set the decay threshold above the bulk of that distribution. If routine variance in your account regularly produces 20% swings at your volumes, a 15% threshold will flood the queue. Raise the impression floor as account volume grows; the floor’s job is to make every flag worth reading.

## What this protocol cannot tell you

- It is a screening rule. It finds candidates efficiently; it does not diagnose causes. The look-alike checklist is part of the protocol, not optional.
- It is not causal. Passing every check makes fatigue the best remaining explanation, not a proven mechanism.
- It cannot separate audience wear-out from creative wear-out without exposure data, and exposure data is not available at asset grain on every network.
- The IPM trigger assumes install attribution is consistent between the two windows. An attribution change mid-window invalidates the comparison.
- The defaults are starting points measured against typical mobile UA volumes. An account spending $500 a week needs different floors than one spending $500,000.

## How Lemon runs this protocol continuously

Lemon’s product runs this screening on every supported account as part of its Overview: each asset is compared window over window with the floors and gates above, and flagged assets surface as findings ranked by money at stake, each with its daily rate series attached as evidence. Findings about data health, such as a stale network connection or a not-yet-mature outcome window, always rank above every performance finding, so a fatigue flag can never outrank the news that its underlying data is incomplete.

Use [Creative Analytics](https://lemon-ai.com/creative-analytics) to see the screening and the per-asset review surface on your own accounts. For the diagnosis and next-test layer, read the [creative fatigue analysis guide](https://lemon-ai.com/resources/creative-fatigue-analysis). Before acting on any flagged asset’s ROAS, run the [asset-level creative ROAS audit](https://lemon-ai.com/resources/asset-level-creative-roas), and for the wider measurement discipline, start with the [mobile app creative analytics guide](https://lemon-ai.com/resources/mobile-app-creative-analytics).

## Primary sources

- [Analytics at Meta: creative fatigue and repeated exposures](https://medium.com/@AnalyticsAtMeta/creative-fatigue-how-advertisers-can-improve-performance-by-managing-repeated-exposures-e76a0ea1084d)
- [A Path Signature Framework for Detecting Creative Fatigue in Digital Advertising](https://arxiv.org/abs/2509.09758)
- [AppLovin Asset Reporting API](https://support.applovin.com/en/growth/promoting-your-apps/api/asset-reporting-api)

On this page

- [Fatigue is real. Universal thresholds are not.](https://lemon-ai.com/resources/creative-fatigue-measurement#fatigue-is-real-universal-thresholds-are-not)
- [Protocol v1.0, step by step](https://lemon-ai.com/resources/creative-fatigue-measurement#protocol-v10-step-by-step)
- [A worked example with the arithmetic visible](https://lemon-ai.com/resources/creative-fatigue-measurement#a-worked-example-with-the-arithmetic-visible)
- [Rule out the look-alikes before acting](https://lemon-ai.com/resources/creative-fatigue-measurement#rule-out-the-look-alikes-before-acting)
- [Default parameters and how to tune them](https://lemon-ai.com/resources/creative-fatigue-measurement#default-parameters-and-how-to-tune-them)
- [What this protocol cannot tell you](https://lemon-ai.com/resources/creative-fatigue-measurement#what-this-protocol-cannot-tell-you)
- [How Lemon runs this protocol continuously](https://lemon-ai.com/resources/creative-fatigue-measurement#how-lemon-runs-this-protocol-continuously)

---

Related product

- [Creative Analytics](https://lemon-ai.com/creative-analytics)
- [Attribute Analysis](https://lemon-ai.com/attribute-analysis)

## Structured data

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://lemon-ai.com/#organization","@type":"Organization","name":"Lemon AI","url":"https://lemon-ai.com/","logo":{"@type":"ImageObject","@id":"https://lemon-ai.com/#logo","url":"https://lemon-ai.com/brand/lemon-ai-mark-512.png","contentUrl":"https://lemon-ai.com/brand/lemon-ai-mark-512.png","width":512,"height":512,"caption":"Lemon AI"},"email":"hi@lemon-ai.com","sameAs":["https://cy.linkedin.com/company/lemon-ai","https://x.com/lemon_ai_adtech","https://www.g2.com/products/lemon-ai/reviews"]},{"@id":"https://lemon-ai.com/#website","@type":"WebSite","name":"Lemon AI","url":"https://lemon-ai.com/","publisher":{"@id":"https://lemon-ai.com/#organization"},"inLanguage":"en"},{"@id":"https://lemon-ai.com/resources/creative-fatigue-measurement#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Lemon AI","item":"https://lemon-ai.com/"},{"@type":"ListItem","position":2,"name":"Resources","item":"https://lemon-ai.com/resources"},{"@type":"ListItem","position":3,"name":"How to Measure Creative Fatigue from Performance Data","item":"https://lemon-ai.com/resources/creative-fatigue-measurement"}]},{"@id":"https://lemon-ai.com/resources/creative-fatigue-measurement#webpage","@type":"WebPage","url":"https://lemon-ai.com/resources/creative-fatigue-measurement","name":"How to Measure Creative Fatigue from Performance Data","description":"A versioned protocol for measuring creative fatigue: guarded window comparisons, volume floors, a decay rule, and false-positive checks for mobile UA teams.","isPartOf":{"@id":"https://lemon-ai.com/#website"},"publisher":{"@id":"https://lemon-ai.com/#organization"},"inLanguage":"en","datePublished":"2026-08-14","dateModified":"2026-08-14","about":{"@id":"https://lemon-ai.com/#software"},"breadcrumb":{"@id":"https://lemon-ai.com/resources/creative-fatigue-measurement#breadcrumb"}},{"@id":"https://lemon-ai.com/#software","@type":"WebApplication","name":"Lemon AI","url":"https://lemon-ai.com/","description":"Creative intelligence and cohort-revenue forecasting for mobile app and game user-acquisition teams.","applicationCategory":"BusinessApplication","operatingSystem":"Web","browserRequirements":"Requires a modern web browser","provider":{"@id":"https://lemon-ai.com/#organization"},"featureList":["Creative-level spend, installs, purchases, revenue, and ROAS","Creative attribute analysis","Evidence-led creative generation","Cohort revenue and ROAS forecasting through D365","Read-only reporting API and MCP access"],"offers":[{"@type":"Offer","name":"Creative Intelligence annual billing","price":"209","priceCurrency":"USD","url":"https://lemon-ai.com/#pricing","description":"Effective monthly price per app when billed annually.","availability":"https://schema.org/OnlineOnly"},{"@type":"Offer","name":"Cohort Prediction monthly subscription","price":"679","priceCurrency":"USD","url":"https://lemon-ai.com/#pricing","description":"Monthly price per app after a $1,399 one-time account setup.","availability":"https://schema.org/OnlineOnly"}]},{"@id":"https://lemon-ai.com/authors/gregory-potemkin#person","@type":"Person","name":"Gregory Potemkin","jobTitle":"Founder & CEO","url":"https://lemon-ai.com/authors/gregory-potemkin","image":"https://lemon-ai.com/images/join-us/gregory.webp","sameAs":["https://www.linkedin.com/in/gregory-potemkin/"],"worksFor":{"@id":"https://lemon-ai.com/#organization"}},{"@id":"https://lemon-ai.com/resources/creative-fatigue-measurement#article","@type":"Article","headline":"How to Measure Creative Fatigue from Performance Data","description":"A versioned protocol for measuring creative fatigue: guarded window comparisons, volume floors, a decay rule, and false-positive checks for mobile UA teams.","image":"https://lemon-ai.com/og/resource-creative-fatigue-measurement.png","datePublished":"2026-08-14","dateModified":"2026-08-14","articleSection":"Fatigue measurement protocol","mainEntityOfPage":{"@id":"https://lemon-ai.com/resources/creative-fatigue-measurement#webpage"},"author":{"@id":"https://lemon-ai.com/authors/gregory-potemkin#person"},"publisher":{"@id":"https://lemon-ai.com/#organization"},"inLanguage":"en"}]}
```
