PricingOpen the demo

Scaling without killing it: why average ROAS can’t answer “spend more?”

“Can I safely spend more on this?”

7 min readUpdated August 2026No signup required

A campaign at ROAS 3.0 tells you the average of every krone spent so far. It says nothing about the next one. Returns fall as spend rises — you exhaust the cheapest, most interested audience first — so the only number that answers “spend more?” is what the last increment earned.

Average versus marginal

Marginal ROAS

Δ revenue ÷ Δ spend, between two spend levels

Spend went from DKK 10,000 to DKK 14,000/day. Revenue went from DKK 30,000 to DKK 36,400. Marginal ROAS = 6,400 ÷ 4,000 = 1.6, while average ROAS still reads 2.6.

In that example the account looks healthy and the increment is close to the edge. At a 62% margin, break-even is 1.61 — so the last DKK 4,000 per day earned essentially nothing. Average ROAS would have encouraged you to keep going.

What average ROAS hides as you scale
BREAK-EVEN 1.61LOW SPENDHIGH SPEND
Average ROASMarginal ROAS

The average stays comfortably above break-even the whole way. The marginal return — what the next krone actually earns — crosses below it long before the account looks like it is in trouble.

Running the test properly

  1. 1Change one thing. Raise budget on a single campaign, leave the rest of the account alone.
  2. 2As a rule of thumb, move in increments of 20–30%. Smaller tends to be lost in noise; larger can reset the learning phase, so you measure the reset instead of the increase. There is no universal threshold — it depends on the account.
  3. 3Wait for a full conversion cycle plus the learning phase. For most stores that is 7–14 days, not 3.
  4. 4Compare like periods. Same days of the week, no payday, no campaign, no holiday in one side and not the other.
  5. 5Compute marginal ROAS on the increment, then compare it against break-even — not against your average.

Reading the result

Marginal ROAS vs break-evenInterpretationNext move
Well aboveYou are under-spending. The audience is not saturated.Increase again by the same increment and re-measure.
Slightly aboveYou are near the efficient frontier.Hold. Look for new audiences or creative rather than more budget.
At or belowThe increment paid for itself and nothing more.Roll back to the previous level. The extra spend is buying volume, not profit.
Negative revenue changeEither noise or a genuine delivery problem.Re-run once before concluding. Two consistent results, not one.

The saturation curve

Plot marginal ROAS against spend level over several tests and you get the shape that actually governs the channel: high and flat at low spend, bending down as you exhaust the responsive audience, crossing break-even at a point that is specific to your business. That crossing point is your ceiling for this campaign, this creative, this audience — and it moves when any of those change.

In short

  • Average ROAS describes the past; marginal ROAS answers the decision.
  • Move in 20–30% increments and wait a full cycle plus learning phase.
  • Compare the increment to break-even, never to the account average.
  • Every winner has a ceiling. Saturation is measurable before it is painful.

Where this method runs out

Everything above works in a spreadsheet. Keeping it current, and matching every order back to the ad that actually caused it, is the part that does not. That is what Kepra does — and the demo runs on sample data with no signup, so you can judge it before believing any of this.

Open the demo →

Read next