In 2026, more than 70 percent of Meta ad sets that advertisers report as 'spending nothing' are actually marked 'Active' — the problem is almost never a broken account but a single, findable delivery blocker sitting between the ad set and the auction. An 'Active' label only confirms the ad set passed review and is inside its schedule; it makes no promise about delivery, and treating the two as the same is what sends most buyers down the wrong path.
This guide works through seven delivery blockers — budget, cost cap, audience size, audience overlap, the learning phase, schedule and start date, and rejections or account holds — so you fix the cause instead of the symptom. To check your account against the most common delivery leaks automatically, run our free 5-axis ad account audit.
Updated 2026-05-09 with current Advantage+ audience, cost-cap and learning-phase delivery behavior observed across US, UK and European accounts.
- 'Active' is not 'delivering' — read the Delivery column first; it usually names the blocker. 2. Budget below a few events starves delivery — fund enough optimization events to learn. 3. A cost or bid cap under the auction price wins nothing — raise it or use Highest Volume. 4. Thin or self-overlapping audiences throttle spend — broaden, expand, or consolidate. 5. One rejected ad or an account hold can freeze everything — check review and billing together.
Why is your campaign 'Active' but not spending?
The first move is to stop trusting the on/off toggle and start reading delivery. An ad set can sit at 'Active' all day while spending nothing, because status and delivery are two different things on Meta.
Active versus delivering — 'Active' means the ad set passed review and is within its scheduled run dates. Delivering means it is actually winning auctions and serving impressions right now. The gap between the two is where every blocker in this guide lives.
The Delivery column — Before you theorize, open Ads Manager and read the Delivery column for the ad set. It frequently names the problem outright: 'Learning', 'Learning Limited', 'Rejected', or a cost-cap warning each point straight at the cause and save you an hour of guessing.
Work top-down — Blockers stack from the account level down to the single ad. A held account stops everything; a thin budget or tight cap throttles one ad set; a rejected creative freezes one ad. For the full beginner's framing of how Meta delivery fits together, see our complete Meta Ads beginner guide.
Is the budget or cost cap too tight for the auction?
Once you know the ad set is live but quiet, the most common throttle is money — either too little budget to learn, or a cap set below what the auction actually charges. Both look identical from the outside: high status, low spend.
Budget too low — Meta needs enough daily budget to buy your optimization event repeatedly at the current price. A 5 dollar daily budget chasing a 40 dollar purchase event cannot gather signal, so it spends slowly and erratically. Fund enough events to make delivery and learning possible, or optimize for a cheaper, earlier event such as Add to Cart while volume is thin.
Cost or bid cap too tight — A cost cap or bid cap is a ceiling on what Meta may pay. Set it below the real clearing price and the ad set wins no impressions at all. The tell is near-zero spend with a delivery note about the cap.
The fix — Raise the cap toward what competitors actually pay, or switch to Highest Volume bidding for a stretch so the ad set can deliver, gather data, and surface the true cost per result before you reintroduce a tighter, evidence-based cap. To pressure-test what each result is worth, our wasted ad spend calculator helps you set a defensible ceiling.
Is the audience too small or overlapping with itself?
With money ruled out, the next throttle is who you are reaching. Audience problems come in two flavors that look similar but need opposite fixes: too few people, or too many of your own ad sets fighting over the same people.
Audience too small — A pool of a few thousand gives Meta too few auctions to spend a real budget, so delivery sputters and frequency climbs fast as the same users see your ads again and again. Broaden interests, widen geography or age, or build a lookalike so the system has room to work.
Audience overlap — This one is subtle. When several of your own ad sets target overlapping people, they compete in the same auction, and Meta suppresses all but one to stop you bidding against yourself. The result is one ad set delivering and the rest starved. Use the Audience Overlap tool to spot it.
Consolidate or expand — Merge competing ad sets into one larger pool, or turn on Advantage+ audience expansion so Meta can find buyers beyond your manual definition. A single broad audience almost always out-delivers three thin, overlapping ones. Frequency and overlap problems often share a root cause with stalled learning, covered in our learning phase fix guide.
Is the ad set still stuck in the learning phase?
If delivery is slow and uneven but technically happening, the ad set may simply be learning. This is normal early behavior, but it becomes a real blocker when the ad set can never gather enough data to stabilize.
How learning works — Meta needs about 50 optimization events within roughly 7 days per ad set before delivery and cost settle. Until then, performance is volatile and spend can look slow, which is expected, not broken.
Learning Limited — When the Delivery column reads 'Learning Limited', the ad set is not reaching 50 events a week. The usual causes are a budget too small, an audience too narrow, or too many ad sets splitting the same conversions. Fix the upstream cause rather than waiting it out.
Do not reset learning — Any significant edit to budget, bid, audience, or creative restarts the learning phase and re-spends data you already paid for. Make one change, let it run a few days, and resist the urge to keep tinkering. If you must edit, batch your changes so learning resets once, not five times.
The discipline of one change at a time is what separates ad sets that exit learning from ones that never do.
Are schedule and start-date settings blocking delivery?
Sometimes the account, money, and audience are all healthy and the ad set still spends nothing because of a setting in the schedule. These are quick to confirm and quick to fix.
Future start date — An ad set with a start date set for tomorrow or next week reads 'Active' but cannot deliver until that date arrives. This is one of the most common false alarms, especially after duplicating an ad set. Confirm the start date is in the past.
Dayparting too narrow — If you scheduled ads to run only during a few hours, delivery pauses outside that window by design. A tight daypart on a small budget can make an ad set look dead for most of the day. Widen the schedule, or confirm the hours match when your buyers are actually active.
End date already passed — An ad set whose end date has quietly passed stops delivering while still showing as 'Active' in some views. Check that the run dates bracket today.
Schedule blockers are the least glamorous on this list but among the fastest to rule out, so confirm them before you tear apart your audience or creative.
Is a rejected ad or account hold stopping the ad set?
The last family of blockers comes from review and billing — and these are the ones that silently freeze spend while everything looks 'Active' at a glance. Check the ad and the account together.
A single rejected ad — If the only active ad in an ad set is rejected, the ad set has nothing to serve and spend falls to zero, even though the ad set itself still reads 'Active'. Open each ad's review status, not just the ad set. Our stuck-in-review and rejected ads guide walks the exact appeal path.
Pending review — A new or recently edited ad sitting in review will not deliver until it clears. Most reviews finish within 24 hours, so a brand-new ad set that just went quiet may simply be waiting.
Account-level holds — A failed payment method, an unpaid balance, or a policy restriction pauses delivery across every campaign at once, from above. The fix lives in Billing and Account Quality, not in the ad set. If delivery dropped account-wide, start with our disabled and restricted account recovery guide.
How Advantage+ expansion and budget consolidation restore delivery
Once you have ruled out holds, rejections, and schedule traps, the structural fix for chronic under-delivery is almost always the same: give Meta a bigger, cleaner pool of budget and audience to work with.
Work the diagnostic table below from top to bottom — it is ordered by how fast each blocker is to confirm and how often it is the real cause of a quiet, 'Active' ad set.
When delivery looks slow, the reflex is to tweak the budget, swap the creative, or narrow the audience — but on a learning ad set each of those edits restarts the learning phase and re-spends data you already paid for. An ad set that needs 50 events in 7 days can never stabilize if you reset it every other day. Confirm the blocker first, make one change, then give it 3 to 4 days before you judge or touch it again.
The pattern across almost every chronic case is fragmentation: too many thin ad sets, each with a small budget and a narrow audience, competing with one another and none reaching 50 events a week. Budget consolidation — collapsing several ad sets into one with a combined budget — gives Meta a single pool large enough to exit learning and deliver smoothly.
Advantage+ audience expansion does the same for targeting, letting the system reach buyers beyond your manual definition instead of grinding the same small pool to high frequency. Used together, consolidation and expansion resolve the majority of stubborn under-delivery. To put a number on what fragmented, stalled spend is costing you and to size the opportunity, run the SteerAds free 5-axis ad account audit and our wasted ad spend calculator.
Sources
Official sources consulted for this guide:
-
facebook.com — about ad delivery
-
facebook.com — about budgets
-
transparency.fb.com — Meta advertising standards
-
facebook.com — Meta Ads
FAQ
Why is my Meta ad set Active but not spending?
An 'Active' status only means the ad set passed review and is inside its schedule; it does not promise delivery. In 2026, roughly 8 of 10 under-delivering ad sets we see trace to one of seven blockers: a daily budget too small to win impressions, a cost or bid cap set below the real auction price, an audience too narrow or overlapping with your own ad sets, an unfinished learning phase, a future start date or restrictive dayparting, a single rejected ad freezing the whole ad set, or an account-level payment or policy hold. Check status and the delivery column together, then work down the list.
My Meta campaign spends almost nothing — what should I check first?
Open the ad set and read the Delivery column before anything else, because it usually names the blocker for you. If it says 'Learning' the ad set is gathering data; if it says 'Rejected' an ad is blocked; if it shows a cost-cap warning the bid is too low for the auction. Next confirm the budget is large enough to buy more than a handful of optimization events, and that the start date is in the past. These three checks resolve most no-spend cases in minutes, before you touch the audience or creative.
Does a low budget stop Meta ads from delivering?
Yes. Meta needs enough daily budget to find and buy your optimization event at the current auction price, and a budget below roughly the cost of a few of those events starves the system of room to learn. A 5 dollar daily budget chasing a 40 dollar purchase event will spend slowly and erratically, because Meta cannot gather the signal it needs. Raise the budget so the ad set can reasonably exit the learning phase, or move the optimization to a cheaper, earlier event such as Add to Cart while volume is thin.
Why does a cost cap or bid cap stop my ads spending?
A cost cap or bid cap tells Meta the most it may pay, and if that ceiling sits below the real auction clearing price the ad set simply will not win impressions. The tell is high status, low or zero spend, and a delivery note about the cap. Either raise the cap toward the price competitors are actually paying, or switch to Highest Volume bidding for a while so the ad set can deliver, gather data, and reveal the true cost per result before you reintroduce a more realistic cap.
Will a too-small or overlapping audience hurt delivery?
Both do. An audience of a few thousand people gives Meta too few auctions to spend a meaningful budget, so delivery sputters and frequency climbs fast. Audience overlap is subtler: when several of your own ad sets target the same people, they compete in the auction and Meta suppresses all but one to avoid bidding against yourself. Broaden the audience, turn on Advantage+ audience expansion, or consolidate competing ad sets so a single, larger pool drives delivery instead of three thin ones fighting each other.
How long does the Meta learning phase last?
The learning phase typically needs about 50 optimization events within roughly 7 days per ad set before delivery and cost stabilize. Until then performance is volatile and spend can look slow or uneven, which is normal, not broken. The trap is resetting learning: any significant edit to budget, bid, audience, or creative restarts the clock and re-spends the data you already paid for. If an ad set keeps showing 'Learning Limited', it is not getting 50 events a week — raise budget, broaden the audience, or consolidate before you keep editing.
Can one rejected ad stop a whole Meta ad set?
Yes, and it is a common surprise. If the only active ad in an ad set is rejected, the ad set has nothing to deliver and spend drops to zero even though the ad set itself reads 'Active'. Account-level holds work the same way from above: a failed payment method, an unpaid balance, or a policy restriction can pause delivery across every campaign at once. Always check the ad's review status and the account's billing and quality status together — a clean ad set above a held account still will not spend a cent.