Scaling winning ads without breaking them: the part the 20% rule skips
Why winners sink when you raise the budget, what Meta's learning phase has to do with it, and how a holdout tells you whether scaling was the culprit.
Why winners sink when you raise the budget, what Meta's learning phase has to do with it, and how a holdout tells you whether scaling was the culprit.
Your ad has held a 2.9 ROAS for six straight days. Monday night you triple the budget, because why would you not. By Thursday it sits at 1.4, you quietly walk the budget back down, and the old performance never comes home.
Every buyer I know has a version of this story. Mine cost about four thousand euros before I changed how I scale. The strange part is that in almost every version, the budget jump gets all the blame, and the budget jump is rarely the whole crime.
The takeaways
Three things hit at once when you raise a budget hard, and only one of them is your fault. First, regression to the mean: an ad you picked for a hot early ROAS usually cools off on its own, because part of that ROAS was luck, and luck does not renew. Second, the auction: at triple the daily spend, Meta has to buy you impressions it previously skipped, so your marginal CPM rises and your marginal customer gets worse. Third, the learning phase: a large budget edit can push the ad set back into learning, where delivery is volatile by design.
Notice the order. The first one was already happening before you touched anything. Which is why the real work starts before the scale button, on the day you decide which ad deserves more money at all.
Meta's Help Center lists budget changes among the "significant edits" that can restart learning, and puts the exit bar at about 50 conversion events per ad set within 7 days. It never names a safe percentage. The 20%-every-few-days rule that every scaling guide repeats is buyer folklore, tested into shape by thousands of accounts, and I have no quarrel with it.
I treated it as a speed limit while running around €150k a month in app-install spend: steps of 20 to 30%, 48 to 72 hours apart, and never a step while the ad set was still in learning. Slow, boring, stable delivery.
One refinement the folklore leaves out: tie your step size to conversion volume, since the learning phase is measured in conversion events. An ad set doing 80 conversions a week absorbs a 30% raise far better than one doing 15.
The most expensive scaling mistakes happen on decision day. A creative that tops the dashboard after four days and 25 conversions is, more often than you would like, a coin that landed heads several times in a row. Scaling does not break that ad. It exposes it.
My bar before any vertical scale: a minimum conversion count fixed before the test started, at least 5 full days of delivery, and a score blended from several metrics so one jumpy ROAS day cannot decide the ranking. When I built this into Adscalr I added Bayesian shrinkage with format-specific priors: a new ad's wild early score gets pulled toward what its format usually does, so a lucky day cannot top the list in the first place. I unpacked that whole problem in how to read an ad test without kidding yourself.
When you scale a winner, leave a control behind. Two versions I use:
The holdout also protects you from the most common misdiagnosis in scaling: blaming the creative for a bad market week. CPMs spike for everyone sometimes. When I built fatigue detection for Adscalr, I made it read a multi-day CTR slope against the whole market first, precisely so an ad that "broke" during an expensive week does not get killed for the market's sins.
Everything above runs fine from a spreadsheet and a calendar reminder. I got tired of being the calendar reminder. The scoring half of it now lives in Adscalr's ad intelligence: a composite of six metrics (hook rate, CTR, CPI, ROAS, share rate, revenue per install), format-prior shrinkage so early luck never gets scaled, and fatigue checks that look at the market before blaming your ad. If you want your next scale decision to start from a number you can trust, that is the part of the product built for it.
This is the thinking behind Adscalr.
See the product →