Hard daily spend ceiling
When
- Spend Today > Rp 5,000,000
Then
- Pause campaign
- Add to name Append mode · [DAILY-CAP {date}]
Use case
AdOps bounds how much a Meta campaign can spend before a person looks at it again. Spend and Daily Budget are checked as often as every 15 minutes; a campaign past its ceiling is paused and tagged in its name, and a Daily Budget set too high is written back down to the agreed figure.
Spend ceilings, budget ceilings and step-down rules that bound how much a Meta campaign can spend before a person looks at it again.
Situation
The problem this playbook was written against, and what the account looks like once the rules are live.
A budget typed with one extra zero, a rule from another tool, or a campaign that suddenly starts delivering can spend several days of budget between one login and the next.
Spend and Daily Budget are checked as often as every 15 minutes, a campaign past its ceiling is paused and tagged, and an over-large budget is written back down to the agreed figure.
Playbook
Each card is one rule, printed the way the AdOps rule builder prints it: conditions on top, actions below the hairline.
Every threshold below is an example. Change the numbers to fit your account before you set a rule live.
When
Then
Why this rule
On a 15-minute check interval the campaign is evaluated up to 96 times a day, so the overshoot past the ceiling is bounded by one interval rather than by one night.
When
Then
Why this rule
This catches the extra zero and any change made outside AdOps, because the engine re-reads the live Daily Budget from Meta immediately before it writes.
When
Then
Why this rule
A 2-hour cooldown allows at most 12 reductions in 24 hours, which slows a losing campaign down in stages instead of ending the day in one move.
When
Then
Why this rule
Remaining budget is read directly from Meta for the campaign, so a lifetime-budget campaign stops on a number you set rather than on Meta running out.
When
Then
Why this rule
The This month reporting period is one of 11 available on a condition, so a monthly commitment can be enforced by the same engine that enforces the daily one.
Sample data Key facts
AdOps bounds Meta ad spend with two kinds of rule: one that watches Spend and pauses a campaign past a ceiling, and one that watches Daily Budget and writes an over-large budget back down. Both are evaluated as often as every 15 minutes, and every change is written to a per-campaign log with the value before and after.
Rarely a mystery. It is a budget typed with an extra zero, a lifetime budget that was meant to be a daily one, a campaign that finally exits a slow start and begins delivering at full pace, or a second tool with its own opinion about budgets. In every case the account is fine at 22:00 and wrong by 07:00.
The cost is not only the money. It is that the next morning is spent reconstructing what happened instead of working, which is the part a log fixes.
Spend is one of 45 metrics available in a condition, and it accepts all 11 reporting periods. Spend today greater than Rp 5,000,000 paired with Pause campaign is the whole rule. Adding Add to name in Append mode with [DAILY-CAP {date}] leaves the reason on the campaign so the morning review does not start from zero.
Be honest with yourself about precision. AdOps checks the condition on the rule’s interval, not continuously, and the shortest interval is 15 minutes. Spend that happens between two evaluations is not prevented, so set the ceiling below the figure you genuinely cannot exceed rather than exactly at it.
Because they fail differently. A spend rule reacts after the money is gone; a budget rule stops the money being available in the first place.
Daily Budget, Lifetime budget and Remaining budget are all metrics in the rule builder, and all three are point-in-time values that take no reporting period. A rule that reads Daily Budget greater than Rp 1,500,000 and responds with Set budget to Rp 1,500,000 as a fixed amount will pull back a manual edit, a change made by another tool, or an over-eager scaling rule of your own.
Set budget takes a fixed amount or a value resolved from a custom metric. It does not take a percentage, which suits a ceiling: the number should not drift with whatever the budget reached yesterday.
| Rule | Metric | Check interval | Action |
|---|---|---|---|
| Pull an edited budget back | Daily Budget | 15 minutes | Set budget to the ceiling |
| Step down before stopping | Spend today, Purchase ROAS today | 30 minutes | Decrease budget by 30 percent |
| Hard daily spend ceiling | Spend today | 15 minutes | Pause campaign and tag |
| Month-to-date ceiling | Spend this month | 1 hour | Pause campaign and tag |
| Stop before a lifetime budget runs out | Remaining budget | 30 minutes | Pause campaign and tag |
Put the budget ceiling on the shortest interval, because it prevents rather than reacts. Give the step-down rule a cooldown so it reduces in stages: an action frequency of once every 2 hours allows at most 12 reductions in 24 hours.
Every pass writes a batch record plus one result per campaign per task. The Rule Log Detail screen shows, for each campaign and each task, an Executed, Not Executed or Skipped badge, every condition marked Pass or Fail beside the value it read, the parameters the action used, the execution time in seconds, and the next scheduled execution. Budget and name changes also record the value before and after.
Skipped is the badge worth understanding. It appears when an action’s cooldown blocked execution, which is how you confirm that a step-down rule is pacing itself rather than failing.
AdOps cannot guarantee a spend figure is never exceeded. It evaluates on an interval, it depends on the numbers Meta’s Insights API reports at that moment, and Meta continues delivering between evaluations. Treat a rule as a bound on how long a mistake can run, not as a hard limit on the platform.
A rule also only covers ad accounts you have activated in AdOps, since every account discovered from Meta starts inactive. Actions are campaign-shaped, so budget protection is enforced at campaign level. AdOps connects to Meta Ads today, with TikTok Ads, Google Ads and Snapchat Ads listed as coming soon.
Questions
Yes. A rule with the condition Spend today greater than your ceiling and the action Pause campaign does exactly that, and on a 15-minute check interval the campaign is evaluated up to 96 times a day so the overshoot is bounded by one interval.
A rule with the condition Daily Budget greater than your ceiling and the action Set budget to that ceiling writes the budget back down. The AdOps engine re-reads the live Daily Budget from Meta immediately before executing any budget action, so it acts on the current figure.
AdOps enforces the cap at evaluation time, not continuously. The shortest check interval is 15 minutes and the dispatcher sweeps for due rules every 10 seconds, so spend between two evaluations is not prevented. Set the ceiling below the number you actually cannot exceed.
Yes. Decrease budget accepts a percentage, and an action frequency sets how often it may fire, from 15 minutes to once in a lifetime. A 30 percent reduction on a 2-hour cooldown allows at most 12 reductions in 24 hours.
Yes. Every run writes a batch record and one result per campaign per task, and the Rule Log Detail screen shows an Executed, Not Executed or Skipped badge, the parameters the action used, the execution time in seconds, the next scheduled execution, and for budget changes the value before and after.
AdOps acts through the Meta Graph API using the access token stored for your account, and it only touches ad accounts you have explicitly activated. Every account discovered from Meta starts inactive until someone turns it on.
Related
Every rule on this page is built from conditions and actions that ship in AdOps. Point them at one ad account and watch the log before you widen the scope.
Inside the product
Nine screens from the working dashboard — the rule builder, the metric picker, the dayparting grid and the log that records what happened. Scroll the strip.
Every figure is rebuilt from the product’s own interface and filled with invented data — no customer name, ad account or spend figure appears anywhere on this site. See how a run works