Stage rules
Stage rules (in Brand & data management) is the editable half of the creative Lifecycle board. It doesn’t decide what the board looks like - it sets the thresholds the board (and your AI agent, through the same MCP tools) use to classify every ad into a stage. The dashboard and your agents read exactly the same numbers, so they never disagree about whether an ad is a Winner or should be killed.
Configuration is one set of rules per brand per ad platform - use the Meta / TikTok switch at the top of the page to edit each independently. Only workspace owners and admins can change these; everyone with brand access can view them.
Precedence
Section titled “Precedence”Every delivering ad is checked against the five lifecycle stages in a fixed order, first match wins:
Kill > Fatiguing > Scaling > Winner > Testing
Testing is the residual stage - an ad lands there if nothing else matched, not because it explicitly qualifies for it.
Each ad is judged against its audience temperature’s efficiency bar: cold, warm, and retargeting each default to that cohort’s own blended ROAS over the classification window, and anything unclassified falls back to the account’s blended ROAS.
Fatigue alerts (independent of stage)
Section titled “Fatigue alerts (independent of stage)”Fatigue alerts are evaluated separately from the five stages above - an ad can trigger one regardless of its current lifecycle stage. An alert fires when an ad has met every minimum floor in both the last complete 7 days and the prior 7 days, and both a CPC rise and a hook-rate/ROAS decline condition are met, comparing those two windows:
| Setting | Default | |---|---| | Minimum spend per window | 50 | | Minimum impressions per window | 1,000 | | Minimum clicks per window | 20 | | Minimum delivery days per window | 3 | | CPC rise | 25% | | Hook rate / ROAS decline | 20% |
The five stages
Section titled “The five stages”Defaults shown below; ranges are enforced server-side (out-of-range values are rejected with a per-field message).
Testing - younger than 7 days (range 1-90), or spend below a seeded floor (0 and up). The floor seeds automatically to 25% of the brand’s median creative spend on that platform, materialized into a concrete number the first time you save. Clearing it re-seeds from current account data instead of pinning a stale one.
Scaling - once past Testing’s age and spend floor: spend up 10%+ (range 0-1000%) vs. the prior window, with ROAS at or above the bar. The comparison window is 7 days (range 2-14), shared with Fatiguing.
Winner - once past Testing’s age and spend floor: ROAS at or above the bar, not declining, with spend at least a seeded floor (same 25%-of-median seeding as Testing’s floor, seeded independently).
Fatiguing - was at or above the bar, and ROAS or CTR is now down 20%+ (range 0-100%) vs. the prior window; OR frequency is at or above 3.5 (range 0-50), or has risen 30%+ (range 0-1000%) over its launch baseline. On a platform that reports no reach at ad grain (TikTok), the frequency clauses never fire - the page shows a note explaining why, and only the ROAS/CTR clause is live there.
Kill - ROAS below 50% of the bar (range 0-100%), both recently and cumulatively, while the ad is still delivering.
Per-temperature efficiency bar
Section titled “Per-temperature efficiency bar”Leave a temperature’s bar target blank to use that cohort’s own blended ROAS over the classification window as the bar. Set an explicit number to pin a fixed target instead, overriding the cohort default for Cold, Warm, or Retargeting individually.
Soft warnings
Section titled “Soft warnings”The page surfaces (but never blocks on) a few combinations worth double-checking:
- Testing’s spend floor set above Winner’s minimum spend - ads in between can never reach Winner.
- Kill threshold at or above 100% of the bar - every ad below the bar becomes a Kill.
- Scaling’s spend-increase requirement set to 0% - any flat-spend efficient ad counts as Scaling.
Default vs. saved
Section titled “Default vs. saved”Until you save for the first time, the page shows live defaults computed from your account’s current data (a “Default config” badge). Saving materializes concrete numbers (“Saved config” badge) that stay fixed until you change them again - they stop tracking your account’s spend as it changes over time. If a stored configuration somehow becomes invalid, Kreel falls back to computed defaults and shows a notice rather than erroring.
Need help?
Section titled “Need help?”Email support@kreel.ai.