Feature

The 11 actions an AdOps rule can execute

Updated 20 August 2026

An AdOps rule task carries exactly one action, chosen from the 11 the engine can execute: notify, start, pause, delete and duplicate a campaign, increase, decrease or set its daily budget, and add to, remove from or replace text in its name. Five of those accept a cooldown.

Eleven executable actions across lifecycle, budget and naming, each with its own parameters and an optional cooldown.

In numbers

The figures behind this feature

Executable actions
11 5 General, 3 Budget, 3 Name and text
Budget value types
3 fixed amount, percentage, custom metric
Dynamic name tokens
6 date, time, metric with period, campaign field, custom metric by id
Name placement modes
3 TEXT, APPEND, OVERWRITE
Action frequency options
11 15 minutes through once in a lifetime
Actions accepting a frequency
5 Notify, Duplicate, Increase budget, Decrease budget, Set budget
The AdOps action picker: eleven actions grouped under General, Budget and Name/Text, with Increase budget selected and its parameters — increase value, amount, unit and a maximum budget cap — beside an open action-frequency list. Sample data
Eleven actions across three groups, each with its own parameters and its own cooldown, so a rule cannot run away with a budget. Read the details

AdOps can execute 11 actions on the campaigns a rule matches, grouped in the action picker as General, Budget, and Name or text. Every action is written to Meta through one instrumented wrapper, and budget and name actions record the value before and the value after on the result row for that campaign.

What are the 11 actions?

GroupActionKeyWhat it does
GeneralNotifynotifyMarks the condition as met on this campaign
GeneralStartstart_campaignWrites status ACTIVE
GeneralPausepause_campaignWrites status PAUSED
GeneralDeletedelete_campaignWrites status DELETED
GeneralDuplicateduplicate_campaignSubmits a deep copy of the campaign
BudgetIncrease budgetincrease_budget_campaignRaises the daily budget, capped at a maximum
BudgetDecrease budgetdecrease_budget_campaignLowers the daily budget, floored at a minimum
BudgetSet budgetset_budget_campaignWrites an absolute daily budget
Name and textAdd to nameadd_name_campaignAppends a rendered template to the name
Name and textRemove from nameremove_name_campaignStrips a substring from the name
Name and textReplace text in namereplace_name_campaignSwaps one substring for another

Duplicate is worth a line of its own. It posts an async batch to Meta asking for a deep copy of the campaign under a generated job name, so Meta clones the whole structure rather than AdOps rebuilding it field by field.

How do budget changes work?

A budget action carries an amount, a cap, and a value type. The value type is value for a fixed amount, percent for a percentage of the current daily budget, or custom_metric to pull the number from a Google Sheets custom metric.

Two details make this safe enough to leave running. First, AdOps re-reads daily_budget from Meta immediately before a budget action executes, so a change made in Ads Manager five minutes earlier cannot cause a write based on a stale figure. Second, the projected budget is floored to an integer and clamped: when an increase would exceed the maximum cap, AdOps writes exactly the cap, and when a decrease would fall under the minimum, it writes exactly the minimum.

Set budget skips the arithmetic and writes the absolute figure you supplied.

What can go into a campaign name?

Name actions also re-read the live campaign name from Meta before writing. Add to name then builds its new text from a multi-line template where each brace-wrapped line is expanded at execution time.

TokenExpands to
{date}The execution date
{time}The execution time
{metric|<metric_key>|<date_preset>}A live Insights value for that metric and period
{metric|<campaign_field>}A field read straight off the campaign object
{metric|custom_metric|<id>}A computed custom metric
{custom_metric|<id>}A computed custom metric

Parts are joined with a separator you supply, and the result is placed by one of three modes. TEXT appends the rendered string as-is. APPEND adds it after the bot separator, a marker AdOps writes so its own section of the name stays distinct from the part a human wrote. OVERWRITE replaces everything after that marker, which is what keeps a nightly performance tag from stacking up forever.

Remove from name and Replace text in name are the cleanup pair: one strips a substring, the other swaps it, and both record the old and new name.

How do action cooldowns stop a rule thrashing?

Each task can carry an action frequency, which is a cooldown on that action for that campaign, entirely separate from how often the rule is evaluated. A rule can be checked every 15 minutes and still raise a given campaign’s budget only once every 2 hours.

Eleven options are available: 15 minutes, 30 minutes, 1 hour, 2 hours, 3 hours, 6 hours, 12 hours, once a day, once in 2 days, once in 3 days, and once in a lifetime. Day-based cooldowns snap to midnight, and once in a lifetime sets the next permitted execution to the year 2100, which is how a tag-once or duplicate-once rule is expressed.

Five of the 11 actions accept a frequency: Notify, Duplicate, Increase budget, Decrease budget and Set budget.

When a cooldown blocks an action, AdOps does not stay silent. It writes an explicit skipped result carrying the reason next_execute_not_reached, the time the cooldown expires, and a step recording that the evaluation was skipped. The log answers why nothing happened instead of leaving a gap.

What is recorded when an action runs?

Every one of the 11 writes to Meta goes through a single wrapper that logs the request URL, the request body and Meta’s response. A failure pushes the function name, the message, the stack, the exact request body and Meta’s error response into a deduplicated error log, so a recurring API fault appears once with an occurrence count rather than as thousands of identical lines.

Budget and name actions additionally stamp a before value and an after value onto the campaign’s result row, which is what the Value Changes block in the log detail renders as Before and After.

Capabilities

What this feature does, item by item.

Each line is a behaviour you can reproduce in the product today.

Three lifecycle actions
Start, Pause and Delete write a status of ACTIVE, PAUSED or DELETED straight to the Meta campaign object. Duplicate submits a deep copy so the whole structure is cloned by Meta.
Budget changes in three shapes
Increase, Decrease and Set budget accept a fixed amount, a percentage of the current daily budget, or a number resolved from a Google Sheets custom metric.
Caps that clamp instead of overshooting
Increase budget takes a maximum cap and Decrease budget takes a minimum. When a change would cross the boundary, AdOps writes exactly the cap rather than the projected figure.
Names that carry live numbers
Add to name expands 6 brace tokens into the campaign name, including a live metric for a chosen period and a custom metric, joined by a separator you choose.
Per-action cooldowns
Five actions accept an action frequency from 15 minutes to once in a lifetime, set per task and independent of how often the rule itself is evaluated.
Rules rewrite names too — a tag when a campaign wins, a prefix when it stops. Both changes land back in Meta. No sound. 5 sec No sound

Questions

Asked about this feature.

Direct answers, with the numbers attached.

What actions can AdOps take on a Meta campaign?

AdOps executes 11 actions. The General group holds Notify, Start, Pause, Delete and Duplicate. The Budget group holds Increase budget, Decrease budget and Set budget. The Name and text group holds Add to name, Remove from name and Replace text in name.

Can AdOps raise a budget by a percentage?

Yes. Increase and Decrease budget each take a value type of fixed amount, percentage or custom metric. In percentage mode AdOps computes the delta against the campaign's current daily budget, which it re-reads from Meta immediately before the write.

What stops an AdOps rule from scaling a budget without limit?

Increase budget carries a maximum budget cap and Decrease budget carries a minimum. When the projected budget would cross that boundary, AdOps writes exactly the cap value instead. A per-task action frequency limits how often the action may fire at all.

How does the Add to name action work?

Add to name builds a string from a multi-line template in which brace-wrapped lines are expanded at execution time, joined by a separator you supply. Placement is TEXT for a raw append, APPEND to add after the bot separator, or OVERWRITE to replace everything after it.

Does the Notify action send an email?

Notify is one of the 11 actions in the General group and can carry an action frequency. Treat the rule log as the authoritative record of what a rule matched and what it did, because every evaluated campaign writes a result row whether or not an action ran.

Write this rule against your own account.

Every feature on this page is available on every plan. Connect one ad account, copy a template, and read the log after the first run.

Contact us See pricing

14 days free · no card · billed in Rupiah

Inside the product

What the screens actually look like

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.

  • The AdOps Performance Dashboard showing a Purchase ROAS card at 2.380x and an Aggregated ROAS card at 2.088x, both badged Profitable, a Monthly Budget card at Rp 155jt, and a Spend Breakdown ranking the top five ad accounts against a budget utilisation bar at 45.5 per cent.
    Performance Dashboard. Two ROAS figures to three decimals, a budget meter, and spend ranked by ad account — over Today, Last 7 days, Last 30 days or This month.
  • The AdOps rule list showing twelve automation rules, each with an on/off toggle, the ad accounts it manages, and when it last triggered — some minutes ago, others on a dated timestamp.
    Rule List. Every rule, what it manages and when it last fired. The toggle is the only thing between draft and live.
  • The AdOps condition builder showing a task with time-of-day conditions across seven day tags, a nested AND group holding a lifetime spend condition under 400,000, and a second task with four stacked metric conditions.
    Conditions. Metric, period, operator, value — joined with AND or OR, and nestable, so a rule can say something a dropdown cannot.
  • The AdOps metric picker open over a condition row: a panel with Meta Ads and Custom metrics tabs, a search box, and a scrolling list of metrics with Spend selected.
    Metric picker. Forty-five Meta metrics and your own sheet columns in the same list, each carrying a reporting period and any of six operators.
  • The AdOps dayparting timetable: a grid of hours against the seven days of the week, with the daytime hours filled navy for every day and the night hours and weekend evenings left empty.
    Dayparting grid. Or draw the hours instead. Anything outside the shape you fill in simply does not run.
  • An AdOps execution log detail: one campaign, two action panels badged Not Executed, each listing the action parameters and every condition evaluated with its actual value, its expected value and a Pass or Fail badge.
    Rule Log detail. Why a rule did nothing is recorded as carefully as why it did something — actual against expected, condition by condition.
  • The AdOps activity log listing budget increases and campaign renames, each row naming the affected campaign by id, the rule that caused it and how long ago it happened.
    Activity Log. One row per change AdOps made in your account, naming the campaign and the rule responsible.
  • The AdOps ad account list: eighteen Meta ad accounts with on/off toggles, account ids, Active or Inactive badges and this month’s spend in rupiah.
    Ad Accounts. Accounts discovered from Meta arrive switched off. Nothing is read, and nothing is changed, until you turn one on.
  • The AdOps custom metric editor mapping a Google Spreadsheet: a spreadsheet id, a sheet name, a column to match campaigns on and a column holding the values.
    Custom metric. Point AdOps at a sheet, name the matching column and the value column, and your own number joins the metric list.

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