Rules

Scheduling a rule

The two scheduling modes, the ten check intervals, the weekly timetable grid, and how the dispatcher picks up due rules. 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.

Updated

Key facts

Scheduling modes
2 fixed check interval, or a weekly day-and-hour timetable
Check interval options
10 15 minutes to 4320 minutes (72 hours)
Timetable grid size
24 hour rows x 7 days plus a Week column that toggles an hour across all seven days
Dispatcher tick
every 10 seconds it selects ACTIVE rules whose next execution time has passed
Fallback interval
60 minutes applied when a rule has no usable check interval

The Schedule Configuration card offers exactly two modes. Run every <interval> evaluates the rule on a fixed cycle from 15 minutes to 72 hours. Run on spesific days and time evaluates it only in the hours you click on a weekly grid. An optional date range time-boxes the whole rule, and a saved rule reports its Next Scheduled Execution.

Which check intervals are available?

Ten, and they are fixed choices rather than a free-text field:

Stored value (minutes)Label
1515 minutes
3030 minutes
601 hour
1202 hours
1803 hours
3606 hours
72012 hours
144024 hours
216036 hours
432072 hours

If a rule ends up with no usable interval, AdOps falls back to 60 minutes.

How does the timetable work?

Choosing Run on spesific days and time replaces the interval dropdown with a grid: 24 hour rows across eight columns headed Week, Su, Mo, Tu, We, Th, Fr, Sa. Click a cell to activate that hour on that day. Click a cell in the Week column to toggle that hour across all seven days at once.

When AdOps needs the next execution time it looks for the next active slot later today, and if there is none it scans forward day by day, wrapping past Saturday into Sunday, up to a week ahead. An empty timetable gives the engine nothing to schedule, so activate at least one cell.

Adding a date range

Tick Run within a date range to reveal a date-range picker. It defaults to today through today plus 7 days and refuses a start date before today. Rules outside their window are skipped by the dispatcher, which makes this the right control for a sale, a launch or a seasonal push that should stop automating on its own.

How the dispatcher picks up your rule

AdOps runs a dispatch sweep every 10 seconds. Each sweep selects every rule whose status is ACTIVE and whose next execution time has already passed, and whose date window — if it has one — is currently open. For each due rule it pulls the matching campaigns from the Meta Graph API, following pagination 1000 entities at a time, and enqueues one job per ad account onto a Redis-backed queue. A worker then picks the job up, reads Insights, evaluates conditions and executes actions.

Two consequences worth internalising:

  • A sweep is never re-entered by the next tick, so a slow sweep delays the following one instead of running twice.
  • Due rules are processed one after another, and an ad-account fetch can add up to three seconds of retry backoff before it is skipped. Your interval is the earliest a rule can run again, not a guaranteed cadence.

Schedule versus action frequency

They are different controls and they compose.

{
  "schedule_action": "interval",
  "check_interval": "15",
  "tasks": [
    { "action": "increase_budget_campaign", "action_frequency": "2_hours" }
  ]
}

That rule is evaluated every 15 minutes, so conditions are checked with fresh numbers 96 times a day, but any single campaign is scaled at most once every 2 hours. The frequency is what stops a fast schedule from thrashing a campaign.

Choosing a cadence

Start slower than feels right. A 1-hour interval on a pause rule gives you twenty-four decision points a day and a readable log; a 15-minute interval on a budget rule with no action frequency gives you ninety-six chances to compound a mistake. Tighten the interval once the log has shown you the rule behaves.

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. Sample data
Or draw the hours instead. Anything outside the shape you fill in simply does not run. Read the details
Draw the hours a rule may run. Nights are off, weekend evenings are off, and nothing fires outside the shape. Six seconds, silent. 6 sec No sound

Questions about this page

If I set a 15-minute interval, does the rule fire exactly every 15 minutes?

Treat the interval as a floor, not a promise. The dispatcher checks for due work every 10 seconds and a sweep processes due rules one after another, so a run can start later than its nominal due time when many rules or many campaigns are in flight.

What is the difference between a schedule and an action frequency?

The schedule decides how often the whole rule is evaluated. An action frequency is a per-task cooldown that decides how often that one task may fire on the same campaign. A rule can be evaluated every 15 minutes while a task inside it scales a campaign at most once every 2 hours.

Should I use the timetable or a time condition for dayparting?

Use the timetable when the rule should not even be evaluated outside a window. Use Time greater than and Time less than conditions when the rule should run continuously but only act inside a window, which also records a Fail on the time condition so the log shows why nothing happened.

Can a rule stop on its own?

Yes. Tick "Run within a date range" and pick a start and end date. The picker defaults to today through today plus 7 days and will not accept a start date in the past.

Read it once, then write the rule.

Everything in this manual describes a screen you can open today. Start a trial and follow along in the product rather than on the page.

Start free trial Documentation

14 days free · no card required

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