Rules
Anatomy of a rule
The four cards of the rule builder and the fields each one writes — name, accounts, filters, tasks and schedule. This page of the AdOps documentation sits in the Rules section, last updated 20 August 2026. AdOps runs rules — conditions plus actions — against your Meta Ads campaigns on the schedule you set.
Key facts
- Cards in the rule builder
- 4 Basic Information, Filter Configuration, Tasks & Conditions, Schedule Configuration
- Actions per task
- exactly 1 a rule holds as many tasks as you need, each with its own conditions
- Rule levels
- Campaigns or Ad sets the level sets the Insights read level; actions are executed against campaigns
- Pre-filter fields
- 3 Campaign ID, Campaign Name and Campaign Status
- Rule statuses
- DRAFT and ACTIVE only ACTIVE rules are picked up by the execution engine
An AdOps rule is one document with five moving parts: a name and the ad accounts it covers, pre-filters that narrow which campaigns are in scope, a level, a list of tasks that each pair a condition set with one action, and a schedule. The builder writes all five from a single page under the header Create Rule.
Card 1 — Basic Information
Three fields.
Rule Name carries the hint “Choose a descriptive name for your automation rule” and the placeholder “e.g., Pause underperforming campaigns”. Name rules after what they do; the name is what the Rule Logs sidebar, the Activity Log and the bulk bar all show you.
Ad Accounts is a set of removable chips plus a + button, hinted “Select up to 5 ad accounts you want to manage”.
Notifications carries the hint “Get alerts about triggered actions via email” and holds an Email Address, a Recipient Name (placeholder “e.g., Marketing Team”) and a Channel Type of Email.
Card 2 — Filter Configuration
This card decides which campaigns the rule even looks at, before any metric is read.
A level button toggles between Campaigns and Ad sets. Beside it, a + button adds a filter chip on one of three fields:
| Field | Operators | Values |
|---|---|---|
| Campaign ID | equal, not equal | a campaign id |
| Campaign Name | contains, does not contain | free text |
| Campaign Status | is, is not | ACTIVE or PAUSED |
Each chip renders as <Field> <operator> <value> and opens an inline editor when clicked. Underneath, a live readout shows Estimated match: N Campaigns, recalculated 500 milliseconds after any change, with a per-ad-account breakdown in its tooltip. Before you attach accounts it reads “Select ad accounts to see affected items”.
Use it. It is the only place in the product that tells you the blast radius before you save.
Card 3 — Tasks & Conditions
The toolbar holds Templates, Add Task and Generate with AI.
Each task card shows the action icon, the action name with the word “campaign” swapped for your chosen level, a one-line summary such as “Increase budget for all campaigns”, copy and trash buttons, an AND/OR pill, and a table of conditions. Every condition row is four pickers and an input: metric, period, operator, value — plus a Compare With cog and a remove button.
The stored shape is plain JSON:
{
"level": "campaign",
"status": "ACTIVE",
"tasks": [
{
"action": "increase_budget_campaign",
"action_frequency": "2_hours",
"action_value": { "value_1": 100000, "value_2": 1000000, "value_3": "value" },
"condition": {
"operator": "AND",
"conditions": [
{ "metric_key": "purchase_roas.omni_purchase", "period": "today", "operator": "GREATER_THAN", "value": "3", "compare": "value" },
{ "metric_key": "spend", "period": "today", "operator": "GREATER_THAN", "value": "0", "compare": "value" }
]
}
}
]
}
For every campaign in scope, the engine walks the tasks in order and evaluates each task’s own conditions before running that task’s own action. One rule can therefore encode a whole playbook — scale on good ROAS, pause on bad ROAS, tag either way — and each task is logged separately with its own task_id.
Card 4 — Schedule Configuration
Either Run every <interval> or Run on spesific days and time, optionally bounded by Run within a date range. On a saved rule an info alert reports the Next Scheduled Execution. See Scheduling a rule for the full detail.
Draft or live
The header has two buttons: Save as Draft stores the rule with status DRAFT, and Set Live stores it as ACTIVE. Only ACTIVE rules are selected by the execution engine, so a draft is a safe place to leave work in progress. Editing an existing live rule turns the primary button into Update Rule.
Sample data Questions about this page
What is the difference between a rule and a task?
A rule is the container that holds the ad accounts, filters, schedule and status. A task is one action plus the condition set that must pass before that action runs, and a rule can hold several tasks that are evaluated in order for every campaign.
Can one rule both scale winners and pause losers?
Yes. Add two tasks to the same rule — one with an Increase budget action and a high-ROAS condition set, one with a Pause action and a low-ROAS condition set. Each task is evaluated and recorded separately for every campaign.
What does the Ad sets level change?
It changes the level the Meta Insights read is issued at, and it is stored on every rule result. Actions are executed against campaigns, so do not plan on ad-level writes.
How do I copy a rule to another ad account?
Use Duplicate from the rule's three-dot menu. AdOps opens the builder pre-filled with the whole rule, with " (Copy)" appended to the name, as a new unsaved rule you can point at different accounts.