Use case

Defending cost per lead with automated rules

AdOps defends a cost-per-lead target by checking spend and lead volume in the same reporting window, then pausing and tagging any campaign that breaks the agreed ratio. A second rule can start a paused campaign again once its lead volume recovers, so a temporary dip does not end the campaign permanently.

Rules that hold a cost-per-lead target by comparing spend and lead volume in the same window, then pausing or resizing the campaigns that miss it.

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

Cost per lead drifts past target for six hours before anyone notices, and a broken form or a dead pixel can burn a full day of budget while the campaign still reports healthy click volume.

After

Spend and lead volume are checked together on the same interval, campaigns that break the ratio are paused and tagged in the campaign name, and campaigns that recover can be started again by a second rule.

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. Stop paying above the target cost per lead

    Live
    Applies to
    Campaigns

    When

    • Spend Today > Rp 1,500,000
    • AND Leads Today < 10

    Then

    • Pause campaign
    • Add to name Append mode · [CPL-OVER {date}]

    Why this rule

    Rp 1,500,000 spread over fewer than 10 leads is a cost per lead above Rp 150,000, so the rule reads exactly the arithmetic the buyer does.

  2. Catch the broken form before it costs a day

    Live
    Applies to
    Campaigns

    When

    • Link clicks Today > 300
    • AND Leads Today = 0

    Then

    • Pause campaign
    • Add to name Append mode · [CHECK-FORM {time}]

    Why this rule

    300 link clicks with zero leads is usually a landing page or pixel problem, and the timestamp in the name says when delivery stopped converting.

  3. End the audition for a new campaign

    Live
    Applies to
    Campaigns

    When

    • Hours since creation < 48
    • AND Spend Lifetime > Rp 1,000,000
    • AND Leads Lifetime < 5

    Then

    • Pause campaign

    Why this rule

    Rp 1,000,000 for fewer than 5 leads in the first 48 hours is a result, not a warm-up period.

  4. Feed the campaign that is beating target

    Live
    Applies to
    Campaigns

    When

    • Leads Last 7 days > 50
    • AND Spend Last 7 days < Rp 5,000,000

    Then

    • Increase budget by 15 percent Once every 12 hours

    Why this rule

    Under Rp 100,000 per lead across a full week is a campaign worth more money, and the 12-hour cooldown caps it at 2 raises a day.

  5. Re-open what recovered

    Live
    Applies to
    Campaigns
    Scope
    Campaign Status is PAUSED

    When

    • Leads Last 7 days > 20
    • AND Spend Last 7 days < Rp 2,000,000

    Then

    • Start campaign
    • Remove from name [CPL-OVER]

    Why this rule

    A campaign paused on one bad day should not stay off all week, and removing the tag keeps the campaign list honest.

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. Sample data
Forty-five Meta metrics and your own sheet columns in the same list, each carrying a reporting period and any of six operators. Read the details

Key facts

What are the numbers behind this playbook?

Comparison operators
6 greater than, less than, greater than or equal, less than or equal, equal, not equal
Executable actions
11, in 3 groups General, Budget, and Name or text
Reporting periods per condition
11, from Today to Lifetime
Pre-filter fields
3 Campaign ID, Campaign Name, Campaign Status with values ACTIVE and PAUSED
Shortest check interval
15 minutes Up to 96 evaluations per rule per day
Rule levels
2, Campaigns and Ad sets

AdOps defends a cost-per-lead target on Meta Ads by writing the target as a rule instead of a reminder. A rule pairs a Spend condition with a Leads condition over the same reporting period, and when the pair breaks, AdOps pauses the campaign and appends a tag to its name on the interval you set, as often as every 15 minutes.

Why is cost per lead so easy to lose?

Lead volume and spend move at different speeds. Spend is continuous and lead delivery is lumpy, so a campaign can look fine at 10:00 and be 40 percent over target by 16:00 without a single alarming number appearing on any one screen. The gap is not knowledge, it is attention.

The second failure is quieter. A form that stops submitting, a pixel that stops firing, or a landing page that returns an error will not slow Meta down. Delivery continues, clicks keep arriving, and the only visible symptom is that leads stopped.

How do you express a cost-per-lead ceiling in AdOps?

Write it as the arithmetic, not as the ratio. Spend today greater than Rp 1,500,000 combined with Leads today less than 10 is a cost per lead above Rp 150,000, and both halves are metrics the engine reads straight out of a batched Meta Insights call.

Writing it this way has a practical advantage: you choose the spend floor that makes the test meaningful. A campaign that has spent Rp 200,000 today has not earned a verdict yet, and the spend condition is what keeps the rule quiet until it has.

Which metrics belong in a lead-gen rule?

The AdOps rule builder exposes 45 metrics over 11 reporting periods. For lead generation the working set is small: Spend, Leads, Leads value, Link clicks, Clicks, CTR (link clicks), CPC (link), Landing page views, Impressions and Hours since creation.

Landing page views deserve a place. Comparing Link clicks against Landing page views over the same period tells you whether people are arriving at all, which is a different failure from arriving and not converting.

SymptomCondition pairAction
Cost per lead over targetSpend today, Leads todayPause campaign and tag the name
Form or pixel brokenLink clicks today, Leads todayPause campaign and tag the name
New campaign never startedHours since creation, Spend lifetime, Leads lifetimePause campaign
Beating target on volumeLeads last 7 days, Spend last 7 daysIncrease budget by 15 percent

How do you stop a rule from over-reacting?

Three controls. The check interval sets how often the rule is evaluated, chosen from 10 values between 15 minutes and 72 hours. The action frequency sets a cooldown on the action itself, with 11 values from 15 minutes to once in a lifetime, available on Increase budget, Decrease budget, Set budget, Duplicate and Notify. The pre-filter sets which campaigns the rule may touch at all, using Campaign ID, Campaign Name or Campaign Status.

Campaign Name as a pre-filter is the one lead-gen teams underuse. If every campaign for one offer carries a shared prefix, a rule pre-filtered to campaigns whose name contains that prefix inherits the offer’s own cost-per-lead target without anyone maintaining a list of campaign IDs.

What happens after a campaign is paused?

The pause is not the end of the workflow. A second rule, pre-filtered to Campaign Status is PAUSED, can look at Leads and Spend over the last 7 days and start the campaigns that came back, then use Remove from name to clear the tag the first rule wrote. The shipped template library includes a Re-enable Paused Winners recipe built on that pattern, alongside Pause + Tag Failed and Stop and Label Campaign.

Each pass leaves evidence. AdOps writes a batch record and a per-campaign, per-task result, and the Rule Log Detail screen shows the badge, the parameters the action used, the execution time in seconds and the next scheduled execution.

What this does not cover

AdOps evaluates what Meta reports. A lead that Meta counts but your CRM rejects is still a lead to the rule, so a rule can defend cost per lead but not lead quality. If your true target lives downstream, the custom metric feature can read a number you maintain in a Google Sheet and compare a live Meta metric against it. AdOps connects to Meta Ads only today.

Questions

Common questions about this use case

Can AdOps pause a Meta campaign when cost per lead goes above target?

Yes. The dependable way to write it in AdOps is a two-part condition joined with AND, such as Spend today greater than Rp 1,500,000 and Leads today less than 10, which is the same ratio expressed with two metrics the engine reads directly from Meta Insights.

How does AdOps know a lead form has stopped working?

A rule can compare traffic against outcomes in the same window, for example Link clicks today greater than 300 and Leads today equal to 0. That combination separates a delivery problem from a conversion problem, because the clicks prove Meta is still spending.

Can a paused campaign be started again automatically?

Yes. Start is one of the 11 executable actions, and a rule pre-filtered to Campaign Status is PAUSED can evaluate the last 7 days of results and start the campaigns that recovered. Remove from name clears the tag the pausing rule added.

How many conditions can one lead-generation rule hold?

A rule holds a single group of conditions joined by one AND or one OR, evaluated against a batched Meta Insights read. Nested two-level groups are not available in AdOps, so a policy that mixes AND and OR is written as two rules.

Does AdOps report which campaigns a lead rule touched?

Yes. Every run writes a batch record plus one result per campaign per task, and the Rule Log Detail screen shows an Executed, Not Executed or Skipped badge, each condition marked Pass or Fail with the value it read, and the execution time in seconds.

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