Guide

How long to run a campaign before you can judge it

Every dashboard will compute a cost per result from one result. The number is arithmetically correct and worth nothing, and acting on it is how campaigns that were about to work get switched off. The question that comes first is not what is the number but has this campaign paid for enough to read a number at all. That has an answer in plain arithmetic: compare what was spent with what a result normally costs you.

The rule, in the order it applies

This is the rule our own engine uses for every verdict in the product, rendered here from the engine itself — so this page cannot drift from what the product does.

  • 1. One reference

    The average cost per result of your other paid channels over the window — or your cap, if it is lower

    Every verdict compares against a single number: what a result of the same kind cost on average across your other paid channels in the same window. Only paid media counts (organic, content and product-led results are left out), and the channel being judged is left out too, so a big channel cannot pull the reference toward itself. Channels that are themselves Wasteful are left out as well, so one bad neighbour cannot make the others look fine. If you set a cap and it is lower, the cap is the reference — a row over your cap is never called efficient. With neither, there is no verdict.

  • 2. A range, not a single number

    A 90% range for the true cost per result, from how many results came back

    Results arrive by chance, so a few of them can come in cheap or dear by luck. Treating them as random arrivals gives a range for the true cost per result; the verdict reads the range, never the single number. The fewer the results, the wider the range. Results from the last few days are not counted yet, because they are still arriving.

  • 3. Wasteful

    Even the cheap end of the range is 1.5× the reference or more — with no results, $89.87 at a $20 reference; with one, $142.32

    Only a clear miss is called Wasteful. With nothing back, that takes about four and a half results' worth of spend, because a run of zeros is common even when the true cost is fine.

  • 4. Efficient

    At least 5 results and the dear end of the range at 1.2× the reference or less

    A cheap streak on a couple of results is not Efficient. Budget is only added where the range itself says the cost is fine. With many results even an average channel clears this bar, so when the single number is 0.9× the reference or more it is called On par rather than cheaper.

  • 5. Middling or not enough data

    5 results or more but no clear call: Middling · fewer and not Wasteful: Not enough data

    Not enough data says how much more spend without results would make it Wasteful. If results come in before then, the range is read again with them.

  • 6. What we propose

    Wasteful at 3× the reference or more: pause · under 3×: cut the budget first

    A pause is only proposed when the full window and the last 28 days both say Wasteful. If the last 28 days are not clear yet, the budget is cut instead of paused; if they point the other way, the channel is watched and nothing is proposed. A raise needs both windows to say Efficient. On a channel with a holdout test running, changes are proposed and held until the readout.

Why spend, and not a count of results

A fixed count of results asks a campaign that is failing to produce results before it may be called a failure. The worse it does, the longer it runs. Measuring in money against the reference turns that around: a campaign that has paid for a couple of ordinary results and has little to show is already telling you something, whatever its count. It also stays the same bar on search and on social, where the same money buys delivery that differs by an order of magnitude, so an impression count says little about whether a campaign has had its chance.

Worked examples

Invented inputs, real engine. Each verdict below is produced by calling the same function the product calls, so the wording changes if the rule ever changes. Note that a cost per result is computable in most of these rows — being computable is not the same as being readable.

SituationWhat the window holdsVerdict
First days live, nothing back$25 spent · 0 results
paid average $20 · cap none set · no result to divide by
Not enough data
$25 spent, 1.25× the paid average ($20), for 0 results. Too few to call — if $64.88 more brings no further results, it is Wasteful.
A cheap early streak$30 spent · 4 results
paid average $20 · cap none set · reads $7.50 per result
Not enough data
$30 spent, 1.50× the paid average ($20), for 4 results. Too few to call — if $244.61 more brings no further results, it is Wasteful.
One result, still waiting$50 spent · 1 result
paid average $20 · cap none set · reads $50 per result
Not enough data
$50 spent, 2.50× the paid average ($20), for 1 result. Too few to call — if $92.32 more brings no further results, it is Wasteful.
Nothing back after a while$100 spent · 0 results
paid average $20 · cap none set · no result to divide by
Wasteful
$100 spent, 5.00× the paid average ($20), for 0 results — even allowing for chance, at least 1.67× it. Pause.
Cheaper than the average$300 spent · 25 results
paid average $20 · cap none set · reads $12 per result
Efficient
Cost per result is 0.60× the paid average ($20), range 0.43×–0.86× — clearly at or under it.
Right at the average, many results$5,000 spent · 250 results
paid average $20 · cap none set · reads $20 per result
On par
Cost per result is 1.00× the paid average ($20), range 0.90×–1.11× — on par with it.
A bit dearer than the average$150 spent · 6 results
paid average $20 · cap none set · reads $25 per result
Middling
Cost per result is 1.25× the paid average ($20), range 0.63×–2.87× — no clear call either way.
Results, but at a steep price$240 spent · 2 results
paid average $20 · cap none set · reads $120 per result
Wasteful
Cost per result is 6.00× the paid average ($20), range 1.91×–33.77× — clearly above it. Pause.
Steadily dearer, many results$1,000 spent · 20 results
paid average $20 · cap none set · reads $50 per result
Wasteful
Cost per result is 2.50× the paid average ($20), range 1.72×–3.77× — clearly above it. Cut the budget first.
Your cap is below the average$300 spent · 10 results
paid average $40 · cap $25 · reads $30 per result
Middling
Cost per result is 1.20× the cap ($25), range 0.71×–2.21× — no clear call either way.
Nothing to compare against$120 spent · 0 results
paid average none · cap none set · no result to divide by
Not enough data
No paid average and no cap, so there is nothing to compare against — no verdict either way.

The cheap early streak is the row people find hardest to accept. Its cost per result looks excellent, yet there is no verdict — because a few results bought with little money are as likely to be luck as skill. Calling it efficient there is how budgets get raised on noise.

What this replaces

The usual rule of thumb is a time box: give it a week, give it two. Time is the wrong unit. A week at a small daily budget can hold less evidence than a day at a large one. What a decision needs is spend, counted in multiples of what one result usually costs.

The other common rule is a fixed spend threshold — stop it once it has burned some amount with nothing to show. The amount is the problem, not the idea: the same sum is a long run for a campaign whose results cost a little and barely a start for one whose results cost a lot. Tying the threshold to the reference keeps the idea and fixes the amount.

Check it against your own export

You can run the same verdicts on an Ads Manager export inside a workspace, without connecting an ad account: you paste or upload the file, it is sent to our servers and stored against your account, and the same function that produced the verdicts above reads it. If your export is missing a column the check needs, the import names it rather than producing a quiet wrong number.

Or run it on connected accounts instead of an export — start a free trial. No credit card to begin.