Use case

Scaling e-commerce campaigns without runaway spend

AdOps scales e-commerce campaigns by evaluating every active campaign on a fixed interval between 15 minutes and 72 hours, raising the budget of a campaign that clears its ROAS and purchase thresholds in bounded percentage steps, and pausing one that misses them — with the before and after value written to a log.

Budget-scaling rules for a D2C advertiser who needs winners to grow and losers to stop on the same schedule.

Updated

Situation

What changes when AdOps runs the checks?

The problem this playbook was written against, and what the account looks like once the rules are live.

Before

A winner that deserved a budget raise on Tuesday morning gets it on Thursday afternoon, and the campaign that stopped converting keeps buying impressions through two nights because nobody opened Ads Manager.

After

Every active campaign is evaluated on a fixed interval between 15 minutes and 72 hours, budgets move in bounded percentage steps with a cooldown between them, and each change is written to a log with the value before and after.

Playbook

Which rules does this playbook actually use?

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.

  1. Scale the proven winner

    Live
    Applies to
    Campaigns

    When

    • Purchase ROAS Last 7 days > 2.5
    • AND Purchases Last 7 days > 20
    • AND Spend Today > Rp 1,000,000

    Then

    • Increase budget by 20 percent Once every 6 hours

    Why this rule

    Seven days of data separates a real winner from one good Tuesday, and the 6-hour cooldown caps the campaign at 4 raises in 24 hours.

  2. Trim a bad day without ending a good week

    Live
    Applies to
    Campaigns

    When

    • Purchase ROAS Today < 1.5
    • AND Purchase ROAS Last 7 days > 2.0

    Then

    • Decrease budget by 15 percent Once every 12 hours

    Why this rule

    A weak day inside a strong week is noise, so cutting 15 percent at most twice a day is a smaller bet than pausing a campaign that is still profitable.

  3. Pause the campaign that stopped paying

    Live
    Applies to
    Campaigns

    When

    • Purchase ROAS Last 3 days < 1.2
    • AND Spend Last 3 days > Rp 2,000,000

    Then

    • Pause campaign
    • Add to name Append mode · [LOW-ROAS {date}]

    Why this rule

    The tag stays visible in Ads Manager, so the next person to open the account sees which campaigns the rule stopped and on which date.

  4. End the audition for a new campaign

    Live
    Applies to
    Campaigns

    When

    • Hours since creation < 72
    • AND Spend Today > Rp 750,000
    • AND Purchases Today = 0

    Then

    • Pause campaign

    Why this rule

    A campaign that spends Rp 750,000 in a day with zero purchases inside its first 72 hours is not warming up.

  5. Put the number on the name

    Live
    Applies to
    Campaigns

    When

    • Spend Last 7 days > Rp 1,000,000

    Then

    • Add to name Append mode · [ROAS {metric|purchase_roas.omni_purchase|last_7d}]

    Why this rule

    The campaign list in Ads Manager becomes a scoreboard, so a weekly review does not need a second tab open on the dashboard.

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. Sample data
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. Read the details

Key facts

What are the numbers behind this playbook?

Metrics available in a condition
45, across 6 categories conversion 16, cost efficiency 15, engagement 7, time-based 3, core performance 2, custom 2
Reporting periods per condition
11, from Today to Lifetime
Check interval choices
10 values, 15 minutes to 72 hours
Action cooldowns
11 values, 15 minutes to once in a lifetime Available on Increase budget, Decrease budget, Set budget, Duplicate and Notify
Budget change types
Fixed amount, percentage, or custom metric Percentage applies to Increase budget and Decrease budget
Ad platforms connected
Meta Ads only TikTok Ads, Google Ads and Snapchat Ads are listed as coming soon

AdOps scales a Meta Ads e-commerce account by rule rather than by hand. You write a condition on a live metric such as Purchase ROAS over the last 7 days, attach an action such as Increase budget by 20 percent, and AdOps evaluates that condition on an interval you set, anywhere from 15 minutes to 72 hours.

Why does manual scaling leak money?

A D2C account rarely fails because nobody knows what to do. It fails because the decision arrives late. The winner that deserved a 20 percent raise on Tuesday morning gets it on Thursday afternoon, and the campaign that stopped converting keeps buying impressions through two nights and a weekend.

Rules close that gap by making the decision in advance. The threshold, the action and the cooldown are written once, and the engine applies them at the same minute every day whether or not anyone has opened Ads Manager.

How does AdOps decide a campaign has earned more budget?

A condition compares one of 45 metrics against a number, using one of 6 operators, over one of 11 reporting periods. For scaling, the shape that holds up is a long window on the quality metric and a matching window on the volume metric: Purchase ROAS over the last 7 days is greater than 2.5, and Purchases over the last 7 days is greater than 20.

The window matters more than the threshold. A campaign can post a 4.0 ROAS on 3 purchases and mean nothing. Pairing the ratio with a count is what keeps a rule from scaling noise, and both conditions are answered by the same batched Insights read, so the second one costs no extra wait.

How do you keep a scaled campaign from running away?

Two mechanics do the work. The first is the action frequency, a per-action cooldown with 11 settings from 15 minutes to once in a lifetime, offered on Increase budget, Decrease budget, Set budget, Duplicate and Notify. A 6-hour cooldown allows at most 4 budget raises in 24 hours, however often the rule itself runs.

The second is a rule pointed the other way. Decrease budget by 15 percent when Purchase ROAS today is below 1.5 while Purchase ROAS over the last 7 days is still above 2.0 trims a bad day without ending a good week. Before any budget action writes, the engine re-reads the campaign’s live Daily Budget from Meta, so the percentage applies to the number Meta holds at that moment rather than a stale copy.

What should the campaign name carry?

Add to name writes text onto a campaign in one of three modes: Text, Append or Overwrite. The text can contain shortcodes resolved at execution time, including {date}, {time} and {metric|purchase_roas.omni_purchase|last_7d}.

Appending [LOW-ROAS {date}] when a rule pauses a campaign leaves the reason and the day in the place everyone on the account already looks. Appending the ROAS figure itself turns the campaign list into a scoreboard. The three name actions re-read the live campaign name from Meta before writing, so two rules tagging the same campaign do not erase each other.

How often should an e-commerce rule run?

A rule carries either a weekly timetable of days and times, or a plain check interval chosen from 10 values between 15 minutes and 72 hours. The dispatcher sweeps for due rules every 10 seconds and fans work out as one queued job per ad account.

RuleCheck intervalAction frequency
Scale the proven winner1 hour6 hours
Trim a bad day3 hours12 hours
Pause the campaign that stopped paying30 minutesnot available
End the audition for a new campaign15 minutesnot available

Pause, Start, Delete and the three name actions take no action frequency. They do not need one: adding a pre-filter of Campaign Status is ACTIVE keeps the rule from re-examining a campaign it has already paused.

What does a run leave behind?

Every pass writes a batch record plus one result per campaign per task. The Rule Log Detail screen shows an Executed, Not Executed or Skipped badge for each campaign, every condition marked Pass or Fail next to the value it read, the parameters the action used, the execution time in seconds, and the next scheduled execution. Budget and name changes additionally record the value before and after.

What AdOps will not do for an e-commerce account

A rule joins its conditions with one AND or one OR, so a policy needing both is split into two rules. Rules target Campaigns or Ad sets, and the actions the engine writes are campaign-shaped, so plan around campaign budgets rather than ad-level edits. Percentages apply to Increase budget and Decrease budget only; Set budget takes a fixed amount or a custom metric. AdOps connects to Meta Ads today, and lists TikTok Ads, Google Ads and Snapchat Ads as coming soon.

Questions

Common questions about this use case

Can AdOps raise a Meta campaign budget automatically?

Yes. AdOps ships three budget actions, Increase budget, Decrease budget and Set budget. Increase budget and Decrease budget accept either a fixed Rupiah amount or a percentage, and Set budget accepts a fixed amount or a value read from a custom metric.

How quickly does AdOps react after a campaign's ROAS drops?

AdOps evaluates a rule on the check interval set on that rule, which can be as short as 15 minutes, and the dispatcher sweeps for rules that are due every 10 seconds. A rule on a 15-minute interval is evaluated up to 96 times a day.

What stops a scaling rule from raising the same budget over and over?

Each budget action carries its own action frequency, a cooldown with 11 settings from 15 minutes to once in a lifetime. A 6-hour cooldown limits a campaign to 4 budget raises in 24 hours regardless of how often the rule itself runs.

Can one AdOps rule combine a ROAS condition and a spend condition?

Yes. A rule joins all of its conditions with a single AND or a single OR, using six comparison operators. Two-level condition groups are not available, so a policy that needs both AND and OR is written as two separate rules.

Which ROAS figure does an e-commerce rule read?

Purchase ROAS in the AdOps rule builder reads Meta's purchase_roas field for the omni_purchase action type, over whichever of the 11 reporting periods the condition selects. Website Purchases ROAS is a separate metric in the same list.

Rebuild this playbook in your own account.

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.

Contact us See pricing

14 days free · no card required · 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