All articles
Automation5 min read

When to kill a Facebook ad (and how not to kill a winner)

When to kill a Facebook ad: the spend and day thresholds I use, why significance testing fails at kill-decision sample sizes, and four safeguards against mis-kills.

Tuesday, 9 a.m., Ads Manager. The new ad set is on day two: €41 spent, zero purchases, and your target CPA is €25. Your finger is on the toggle. Switch it off now and you stop the bleeding. Switch it off now and you may also be deleting the one creative that needed one more day.

I have toggled too early more times than I want to admit. The damage never shows up in a report, because the ad you killed never gets the chance to prove you wrong.

The takeaways

  • No kill before day 5 or €200 of spend, whichever comes later. Before that line, the numbers are mostly learning-phase noise and attribution lag, and Meta's documentation says learning-phase exit needs roughly 50 optimization events in 7 days.
  • A kill decision cannot be significance-tested. At €41 and zero conversions there is no statistical test that means anything. The honest protection is a written rule plus safeguards against the rule itself.
  • Every kill should stay reversible for 24 hours. The second-worst outcome after wasted spend is deleting a winner with no way back.

How long should a Facebook ad run before you kill it?

Five days or €200 of spend, whichever comes later. Before that floor I do not allow a kill at all, however ugly the dashboard looks. Two mechanics force the wait. First, Meta's documentation puts learning-phase exit at around 50 optimization events within a seven-day window, and an ad set still in learning is being shown to audiences the delivery system is experimenting with, so its cost per result runs noisier and usually worse than what it settles into. Second, conversion reporting lags: purchases attributed to Tuesday's clicks keep trickling in on Wednesday and Thursday. The "zero conversions" on your screen may simply not have arrived yet. Most of the regret kills I have made happened inside that window, on data that was incomplete in a way the interface never warns you about.

Why can't you just run a statistical test on the kill?

Because the sample is not there, and it never will be at kill time. A defensible test of "this ad performs below my target CPA" wants dozens of conversions per ad. When you are deciding whether to cut a loser, you typically have between zero and five. Any p-value computed on that is theater. Statistics earns its keep elsewhere in a buyer's workflow: when you are ranking twenty tested creatives and need to know which winner is real, the samples are big enough to do it properly. I wrote up that side of the problem in won, or just lucky?. The kill decision is a different animal. It is a budget-protection move made under uncertainty, so the right tool is a rule you wrote in advance, with guardrails that limit how badly the rule can misfire.

What safeguards stop a rule from killing a winner?

I built four into Adscalr, because each one corresponds to a mis-kill I have personally made:

  1. Learning lockout. No kill while an ad is under 5 days old or under €200 of spend. The rule simply refuses to evaluate, for the learning-phase and lag reasons above.
  2. ROAS floor. Any ad at 1.5× ROAS or better can be paused at most; a kill is off the table. A profitable ad with one bad morning should sit out the day, then come back.
  3. CBO safeguard. In a budget-optimized campaign, a rule never leaves fewer than 3 active ads. Kill down to one ad and Meta has nowhere to shift budget, so you have quietly broken the campaign's delivery.
  4. Frequency auto-kill at 3.5×. The one trigger that fires without hesitation. When the same people have seen a creative 3.5 times on average, performance rarely recovers, and waiting just buys more expensive impressions.

These are rules with seatbelts, not statistical proofs. I want to be precise about that, because plenty of tools imply their kill logic is "tested". Mine is logged: every evaluation, fired or not, is written down so I can audit why an ad died.

Which metrics should trigger a pause or a kill?

In my setup, rules can fire on 8 metrics: CPI, CTR, hook rate, hold rate, ROAS, spend, frequency, and CPM. The actions are only pause or kill, and the distinction matters. A pause says "this ad might come back": ROAS dipped on a weekend, CPM spiked during a sale event, the market had a bad day. A kill says "this creative is done". My bias is to pause on the volatile metrics (ROAS, CPM, spend pace) and reserve kills for the ones that describe the creative itself: a hook rate that never cleared 20%, a frequency past 3.5×, a CTR that has slid for days. Volatility belongs to the market. Fatigue belongs to the ad.

Make every kill reversible for 24 hours

Whatever rules you run, give yourself an undo window. In Adscalr, kills stay reversible for 24 hours, and full automation is opt-in: the default mode only recommends, with a one-tap Telegram control that executes the pause (or the undo) through the Meta API when I agree. That last design choice is the whole philosophy in miniature. The rules exist so I never bleed €400 overnight on an obvious loser, and the safeguards plus the undo exist because rules are blunt and winners are rare. If you want the longer version of how those kill and pause rules fit together with alerts and the morning brief, the automation pillar walks through the full setup.

This is the thinking behind Adscalr.

See the product