Advertising
Stop a creative before the audience is sick of it
Frequency is the number you notice too late: the ad keeps spending while the same people see it for the ninth time. A cap written down once and checked every hour pauses the ad without anyone opening Ads Manager. How much that cap is worth is set by the way Meta reports frequency, not by the workflow.
- Triggers
- Two
- Runs
- Every hour
- Stack
- 3 tools
- Durable execution
- Not required
The flow
Two triggers and one decision. The top track reads what the platform reports; the bottom track holds the cap you set. They meet at the comparison.
Every hour
n8n schedule
Read frequency
Meta Ads Insights API
Append the frequency log
Sheets · Airtable
Cap set per campaign
Sheets · Airtable
Match each ad to its cap
n8n
Over the cap?
n8n IF
Pause the ad
Meta Marketing API
Leave it running
—
Step by step
- 01
Every hour
n8n scheduleHourly is as often as this is worth running. Meta refreshes insights every fifteen minutes, but frequency moves in days, not minutes.
- 02
Read frequency
Meta Ads Insights APIOne request per live ad, at ad level, over an explicit date range. Lifetime frequency and seven-day frequency are different numbers and lead to different decisions.
- 03
Append the frequency log
Sheets · AirtableOne row per ad per run. The log is what tells you afterwards how fast that creative burned, which is the input for the next cap.
- 04
Cap set per campaign
Sheets · AirtableThe operator writes the cap. A prospecting cap and a retargeting cap are not the same number. Editing the cell re-arms the check on the next run.
- 05
Match each ad to its cap
n8nAds with no cap are skipped rather than given a default. A default applied silently is how working creative gets killed.
- 06
Over the cap?
n8n IFCompared against your cap, not a published benchmark. There is no correct frequency — only the point where your cost per result stopped being acceptable.
- 07
Pause the ad
Meta Marketing APIPause the ad, not the ad set. Pausing the parent takes the creative that still works down with the tired one.
What the platform will not allow
How far this can be automated is set by the way Meta reports frequency. That boundary is the part most write-ups leave out.
Frequency is defined as the average number of times each person saw your ad, and the metric is marked as estimated. A cap is therefore a threshold on an estimate, not on a count.
Marketing API — Ad Account Insights referenceHourly breakdowns do not support reach or frequency — both fields return 0 when an hourly breakdown is in use. You can run the check hourly; you cannot ask for frequency broken out by hour.
Ads Insights API — BreakdownsMeta's own scheduled rules run on one of three intervals: daily at midnight in the ad account's timezone, hourly, or semi-hourly. Half an hour is the finest cadence the native rules engine offers.
Marketing API — Schedule-based ad rules
When this is not worth building
Three cases where the upkeep costs more than the wasted impressions.
Three or four creatives per campaign. At that count, which one to stop is a judgement you should be making yourself, and a pause leaves the campaign with less to spend on than it needs.
No replacement creative ready. A pause with nothing to put in its place moves the spend to whatever is left, which is usually the ad that was already losing.
Audiences large enough that frequency stays flat. If the cap has not fired in a month it is a workflow nobody is watching, and nobody will notice when the API call starts failing.