← All posts

what to scale/kill

When to scale a Meta ad without breaking it: the 20% rule and what resets learning

Scale a proven winner in small steps so you buy more volume without knocking the ad set back into learning

By the AdBrain team5 min read

When to scale a Meta ad without breaking it: the 20% rule and what resets learning — AdBrain

Scale an ad only when it is a genuine winner against your target, not one that had a lucky day. Raise budget in steps of about 20% every 2 to 3 days, and only after backend and conversion data confirm it held up at the current spend. The failure mode is not moving too slowly. It is jumping the budget so hard that Meta throws the ad set back into learning, which crashes performance the moment you wanted more of it.

The real risk is a learning reset, not slow scaling

Most buyers think scaling is a courage problem. Find the winner, pour money in, ride it up. Then they double the budget overnight, watch cost per result spike for four days, and conclude the ad "died." It did not die. They reset it.

Every ad set has a learning phase where the delivery system is still working out who to show the ad to and at what price. During learning, results are noisy and cost per result is usually worse. A large budget change tells Meta the economics of the ad set have changed enough to re-optimize, and it drops back into learning. A common rule of thumb is that a change of more than about 20% is enough to trigger this. So the same aggressive move that feels like scaling actually buys you a fresh round of expensive, unstable delivery.

That is why the 20% step exists. It is not superstition. It is the largest nudge you can usually give an ad set without convincing the system that it is looking at a new problem.

What counts as confirmed stable before a step

Do not step up on a good day. Step up on a good trend. Before each increase, you want the ad holding steady at the current spend across a window long enough to trust, not a single strong afternoon.

Practical checks before you raise budget:

  • The ad set is out of learning and delivery has settled.
  • Cost per result has been at or under target across a few days, not one spike day.
  • The number of conversions is real volume, not two purchases that flatter the average.
  • Backend signals agree. Actual orders, not just the platform's reported results, are landing where they should.

If conversion data is thin or the numbers swing day to day, you are not stable yet. Hold the budget and let it prove itself. Scaling noise just makes the noise more expensive.

Before any of this, decide kill vs keep first. Scaling is a reward for an ad that has earned it. If you are not sure the ad is a keeper, that is a different question, and pushing budget into a maybe is how you burn spend.

Vertical vs horizontal: two different tools

Raising budget on the winner is vertical scaling. Duplicating that winner into new audiences, placements, or geographies is horizontal scaling. They solve different problems, and the mistake is treating them as interchangeable.

Vertical scaling asks the same audience to absorb more spend. That works until it doesn't, because any audience has an efficient ceiling. Horizontal scaling goes looking for fresh people, which protects you from squeezing one audience too hard, but each new ad set starts its own learning phase and needs its own volume to stabilize.

| | Vertical scaling | Horizontal scaling |

|---|---|---|

| What you do | Raise budget on the winning ad set | Duplicate the winner into new audiences or placements |

| Best when | Audience still has efficient room to grow | You are near the ceiling on the current audience |

| Main risk | Rising cost per result as you saturate | More ad sets in learning at once |

| Cadence | About 20% every 2 to 3 days | Launch, then let each new set exit learning |

| Watch | Frequency, cost per result creeping up | Overlap between duplicated audiences |

A simple way to sequence it: scale vertically in 20% steps while the audience keeps giving you efficient volume. When the cost per result starts creeping up step after step, that is the audience telling you it is close to full, and horizontal scaling becomes the better next move.

Signs you have scaled past the efficient ceiling

Every audience has a point where the next dollar is worse than the last. The signals are readable if you watch for them:

  • Cost per result climbs on each step and does not recover after delivery settles.
  • Frequency keeps rising while results per impression fall, which means you are paying to hit the same people again.
  • The 20% step that used to hold now pushes cost up every time.
  • Volume plateaus even though spend keeps going up.

When you see these together, stop feeding the same ad set. The answer is not a bigger budget on the winner. It is fresh audiences through horizontal scaling, or a new creative angle. This is where feed the winner with a testing framework pays off, because a full pipeline of tested creatives means you always have the next winner ready instead of flogging a tired one.

Make the decision boring and repeatable

Good scaling is dull on purpose. Confirm the ad is a real winner. Check that it held stable at the current spend on backend data, not one lucky day. Step budget up about 20%. Wait 2 to 3 days for delivery to settle and confirm again. Repeat while the audience stays efficient, and switch to horizontal moves when cost per result starts to climb.

The hard part is not the math. It is the patience to wait for confirmation before each step, and the honesty to read a rising cost per result as a ceiling rather than a reason to push harder. Reading day-wise account data to catch that turn, and getting a reason for every scale or hold call, is exactly the job AdBrain is built for. Do that and you buy more volume at a price you can live with, instead of resetting the one ad that was working.

Written by the AdBrain team from established Meta and Google media-buying practice, AI-assisted and reviewed for accuracy. We do not invent statistics, results, or case studies; figures are sourced to the platforms' own documentation where cited.