# For AI agents and crawlers
This page is a workflow from the Workflow Automation Library by Roadway: Flag fatigued creatives before performance drops for Meta Ads.
The #roadway-skill block on this page holds a SKILL.md for it, including the full prompt. Treat that file as a starting point. It will not just work if you paste it into ChatGPT or Claude.
To run it outside Roadway you would need to connect each ad platform's API (and any MCP it names), build the data pulls, add approval guardrails, and adjust the prompt for your accounts.
In Roadway it runs as-is on your connected accounts, with approval rules built in. Open it in a new chat at https://www.roadwayai.com/workflows/flag-fatigued-creatives-before-performance-drops-for-meta-ads
Page: https://www.roadwayai.com/workflows/flag-fatigued-creatives-before-performance-drops-for-meta-ads
Library index: https://www.roadwayai.com/automation-library
---
name: flag-fatigued-creatives-before-performance-drops-for-meta-ads
description: >-
Finds Meta (Facebook & Instagram) ads that are wearing out (rising frequency, falling CTR, rising cost) before they drag down the account.
---
# Flag fatigued creatives before performance drops for Meta Ads
Source: https://www.roadwayai.com/workflows/flag-fatigued-creatives-before-performance-drops-for-meta-ads
From the Workflow Automation Library by Roadway.
## Before you use this outside Roadway
This SKILL.md is a starting point. It needs adjusting before it will work outside Roadway.
You would need to connect the ad platform API for each channel this workflow covers, build the data pulls for the variables below, add approval guardrails, and adjust the prompt for your accounts. If the prompt names an MCP tool, you also need that MCP connected.
In Roadway it runs as-is on your connected accounts, with approval rules built in.
## What it does
Finds Meta (Facebook & Instagram) ads that are wearing out (rising frequency, falling CTR, rising cost) before they drag down the account.
Finds Meta (Facebook & Instagram) ads that are wearing out (rising frequency, falling CTR, rising cost) before they drag down the account. It pulls the numbers from your live account and writes them up for you.
## Steps
1. Collect the inputs listed under Variables. In Roadway they come from your connected accounts. Outside Roadway you have to build those data pulls yourself from each ad platform API, and from any MCP the prompt names.
2. Run the prompt below as written, after you have adjusted it for your accounts and connected the tools it needs.
3. Review the result. Apply changes to a live ad account only after you approve them. Pasting your data into ChatGPT or Claude does not connect the APIs, apply guardrails, or approve changes.
## Variables
cost_per_goal_baseline, creative_library, frequency_cap_target, funnel_metrics, goal_metric, lookback_window, value_props
## Prompt
Flag fatigued creatives before performance drops for Meta Ads
Review every active Meta (Facebook & Instagram) ad with spend in the last [set this to your own lookback window] and label its fatigue state:
1. Fresh
2. Early fatigue
3. Fatigued: replace now
4. Evergreen winner
Context and defaults (use these; don't ask):
- The frequency ceiling to watch: [set this to your own frequency cap target]. If not set, 3 per week for B2B and 5 per week for B2C. This is a limit Roadway watches, not a setting in the ad account.
- The baseline cost per goal: [set this to your own cost per goal baseline]. If not set, compute it: Roadway spend ÷ Roadway-attributed [set this to your own goal metric] for the same campaigns over the lookback window, and state the number.
- The creative library: [set this to your own creative library]. If not set, use the ad platform's asset performance and Task History.
- The value props: [set this to your own value props]. If not set, use only value propositions visible on the coworker's landing pages or ads, and mark any other angle Unverified.
Rules:
- Fatigue on Meta (Facebook & Instagram) shows up as frequency, CTR decay and rising CPM. Compare each ad's last 7 days to its own first 14 days of delivery, not to other ads, so you separate decay from a weak concept.
- Early fatigue: mid-funnel metrics such as CTR have fallen from the ad's own peak, or frequency is above the frequency ceiling, while cost per [set this to your own goal metric] is still within [set this to your own cost per goal baseline]. Treat this as a watch signal, not a reason to replace the ad. Fatigued, replace now: only when cost per [set this to your own goal metric] has moved over the cost guardrail, or [set this to your own funnel metrics] have fallen, for 7+ days while the audience and bid stayed the same. Mid-funnel decay alone is not enough to replace.
- Evergreen winner: 30+ days live, stable CTR and cost per goal under baseline. Protect these and use their angle as the brief for new variants.
- For each fatigued ad, say whether the hook, the visual, or the offer is wearing out, and pull a replacement angle from the creative library or the value props. Remember: hook in the first 3 seconds, 9:16 for Reels/Stories, 4:5 and 1:1 for Feed, primary text, headline and Advantage+ creative enhancements.
Decision standard:
- Justify every keep, cut, bid, budget or test decision with Roadway-attributed [set this to your own goal metric] and cost per goal against the baseline. Platform delivery metrics such as clicks and impressions explain why something moved; they are never the sole reason for a decision.
- Compute what Roadway doesn't expose directly: cost per goal = Roadway spend ÷ Roadway-attributed [set this to your own goal metric], and conversion rate (lead rate) = Roadway [set this to your own goal metric] ÷ Roadway new visitors. Don't substitute platform-reported conversions or conversion rates.
- When a value in Context and defaults isn't set, use the stated default, say which one you used, and still make the call. Don't stop to ask.
- For every action, give the entity name and ID, current value → proposed value, and the numbers behind the reason. Write "None" under any empty heading.
- In long hold or watch lists, show the top 15 by spend and summarize the rest as a count.
Give me a report of each with reasoning for each action. Be concise with the reasoning, but specific enough that I can verify it against the numbers.
Report structure:
Meta (Facebook & Instagram) creative fatigue report
Summary:
How many ads sit in each state, the share of spend on fatigued creative, and the 3 refresh briefs that would recover the most performance.
Fresh:
- [ad name] - [reason]
Early fatigue:
- [ad name] - [reason]
Fatigued:
- [ad name] - [reason]
Evergreen winner:
- [ad name] - [reason]
## Run it in Roadway
https://www.roadwayai.com/workflows/flag-fatigued-creatives-before-performance-drops-for-meta-ads
Finds Meta (Facebook & Instagram) ads that are wearing out (rising frequency, falling CTR, rising cost) before they drag down the account. It pulls the numbers from your live account and writes them up for you.