Facebook Ads Not Spending Budget: A Triage Order
Facebook ads not spending the budget you set? Read the shape of the spend first, then check the causes in the order they usually turn out to be true.
Facebook ads not spending the budget you set? Read the shape of the spend first, then check the causes in the order they usually turn out to be true.
It is 6pm and the ad set with a €300 daily budget has spent €84. Status: Active. No red banner. Yesterday it spent €290 and nobody looked twice.
By the 20th the client report shows 70% of plan delivered, and the first question on the call is where the rest went. Usually Meta never found enough auctions it was allowed to win.
Short answer: Facebook ads that are not spending fail in one of two shapes. Zero spend usually means a blocker: ads in review, a failed payment or an account spending limit. Partial spend usually means the auction refused your terms: a cost cap below the market price, an audience too small, weak creative, or an ad set stuck in Learning limited.
The takeaways
Start with the shape of the spend. An ad set at €0 by mid-afternoon is blocked from entering auctions at all. An ad set at €84 of €300 is entering auctions and losing or refusing most of them.
Then check whether the ad set is underspending at all. Meta's help centre says a daily budget can spend up to 75% more on a day with better opportunities, as long as the week stays within seven times the daily figure. So a quiet Tuesday can be Meta holding room for a busier Thursday.
One low day tells you nothing. Three in a row, with the week heading well under seven times the daily budget, is a pattern. I pull seven days at ad set level, broken down by day, before I touch anything. Most false alarms end there.
Four blockers cover most zero-spend days I have seen, and each takes under a minute to check.
Look at the Delivery column first. An ad "In review" or "Rejected" has nothing to deliver, and if it is the ad set's only ad, the whole ad set sits idle. Then Billing: a declined card or expired payment method stops the account quietly. Third, the account spending limit in payment settings. When lifetime spend reaches it, every campaign stops, and whoever set it two years ago has usually left the team. Last, look for restrictions on the ad account, the Page or the business portfolio.
None of these is subtle, which is why they go first. I once lost an afternoon rebuilding audiences for an ad set that was waiting on a card update.
The most common cause of partial spend is a price you set that the auction has not agreed to. A cost per result goal or a bid cap tells Meta to skip auctions where the expected cost runs above your number. If the account has been paying €38 a purchase and someone types €30 into the goal field, the ad set enters only the auctions where €30 looks plausible. In a crowded month that is very few.
Check the bid strategy on the ad set, or on the campaign if the budget is shared at campaign level. Compare the goal with the last two weeks of actual cost per result. If the goal sits below it, raise it above what you already pay and walk it down later. The cost cap vs bid cap breakdown explains why caps go quiet. Highest Volume ad sets underspend too, for the reasons below.
Yes, and audiences usually get small by accident. A 300,000-person audience sounds roomy until a purchaser exclusion, a site-visitor exclusion, two stacked interests and a placement restriction pile on top. The pool Meta can reach on a given day shrinks to a fraction, and a €300 budget cannot buy that many impressions there at a sane price, so delivery slows.
In the ad set editor, read the audience definition next to the estimated daily results. Remove the narrowest layer first, usually a placement restriction or an interest stacked on another interest. Exclusions earn their place when they stop you paying twice for existing buyers, but they rarely need to be five deep.
Overlapping ad sets make it worse: Meta enters only one of your ad sets into a given auction, so the lower-ranked twin starves.
Both can, and they feed each other. Meta's auction ranks ads on bid, estimated action rate and ad quality, so an ad people scroll past has to bid more to win the same impression. Under a cost cap it often just loses. Check the quality, engagement rate and conversion rate rankings at ad level. Below average on two of the three is a creative problem dressed up as a budget problem.
Learning limited is the slower version of the same story. Meta's documentation puts the learning-phase exit at about 50 optimization events in 7 days. An ad set optimizing for purchases at €60 each needs roughly €3,000 that week to get there. On €100 a day it never will. Fix it with a cheaper optimization event, fewer ad sets splitting the same conversions, or more budget in fewer places.
Widen the view before you blame your own setup. If one ad set underspends while its siblings deliver normally, the cause lives in that ad set. Open the activity history in Ads Manager: a budget edit, a new exclusion or a switched optimization event two days before the drop usually explains it faster than any theory.
If every campaign in the account dropped on the same morning and the activity history is empty, look outward. Other buyers posting the same symptom on the same day is the strongest early signal of a platform problem, and the outage playbook covers what to leave alone while you wait.
Overspend gets noticed because money disappears. Underspend stays quiet until someone adds up the month. That is why Adscalr runs pacing checks every 5 minutes with an underspend alert (under 70% after midday), so a quiet ad set shows up the day it goes quiet. In ad intelligence, fatigue detection reads a multi-day CTR slope against the whole market, which helps separate a tired creative from a slow day for everyone. Neither fixes delivery for you. The triage stays yours.
This is the thinking behind Adscalr.
See the product →