Get the file
Join Discord and open #freebies. The flow file and setup help are there.
This workflow looks at ads that spent recently, checks whether the click rate fell off that ad's own pace, and sends the ranked list to Slack. It does not pause ads and it does not change budgets. It is free. There is no form on this page. You import it into your own n8n and run it there.
The flow file and setup help are in #freebies on our Discord.

The schedule node is named Every day at 10:00. The cron in the file is 0 10 * * *, so it fires at 10:00 on the clock of your n8n instance. Change that expression if you want a different hour.
The Config node holds the knobs. Defaults in the file:
v21.0.last_14d. Insights are daily rows across that window.Fetch + Detect Fatigue uses $env.META_ACCESS_TOKEN. If $env.META_AD_ACCOUNT_IDS is set (comma-separated ids), it scans that list. If it is empty, it walks active ad accounts the token can see. It pages through ad-level daily insights so a long account is not cut at the first 500 rows.
An ad is in scope when its latest day spent at least minSpend. The drop is that latest click rate against the average of earlier days that cleared the impression and spend floors. The node labels rows and ranks the biggest drops.
Slack: Fatigue Report posts to $env.SLACK_WEBHOOK_URL. That is an incoming webhook, not a bot token in the file.
META_ACCESS_TOKEN with ads read access. Optional META_AD_ACCOUNT_IDS if you do not want every active account on the token.SLACK_WEBHOOK_URL.This file reads secrets with $env. n8n 2.x blocks that by default. If a node stops with an env access error, use the n8n env access fix.
Four steps. The file in #freebies is rup-creative-fatigue-monitor.json.
Join Discord and open #freebies. The flow file and setup help are there.
In n8n, use Import from File and pick the JSON from #freebies.
Set META_ACCESS_TOKEN and SLACK_WEBHOOK_URL. Add account ids if you want a fixed list. Adjust Config if the defaults are too loud.
Run Every day at 10:00 once. Slack should get a ranked note, or a quiet report if nothing fell far enough. Turn the workflow on when the daily cron should keep going.
No. It sends a Slack report. Pausing, swapping creative, or moving budget stays with you.
Each ad's latest-day click rate against that same ad's average on earlier days in the window that actually delivered. It is not a comparison with a different ad.
META_AD_ACCOUNT_IDS if you set it. Otherwise every active ad account the token can list.
Goat O Mate is a community of builders shipping marketing and AI automations together.
Join Discord