Meta ads not delivering is 2 different problems wearing the same clothes, and the fix depends entirely on which one you have. Either nothing is spending at all, or money is leaving the account and nothing is coming back.
They have almost no causes in common, so the first thing to do is decide which one you are looking at. Open Ads Manager and check the Amount Spent column. Zero is 1 problem. Not zero is a different one.
Nothing Is Spending: Check the Boring Things First
Almost every zero-delivery case is administrative, and people skip these checks because they feel too obvious to be the answer.
- Is the payment method working? A declined card or an expired one stops everything silently. Pakistani cards fail on international billing more often than people expect, so check the billing section rather than assuming.
- Is the ad still in review? Most decisions land within 24 hours, and some take longer. A campaign sitting in review is not broken.
- Was it rejected? Rejections appear at ad level, not campaign level, so a campaign can look active while every ad under it is off.
- Is the start date in the future? A schedule set for next Monday behaves exactly like a broken campaign today.
- Has the account spending limit been hit? If one is set and reached, delivery stops account-wide and nothing in the campaign explains why.
- Is the ad set actually on? Campaign, ad set and ad each have a toggle. All 3 must be on.
That list solves the majority of zero-spend cases. If you get through all 6 and still have nothing, the usual remaining cause is an audience so narrow that the auction has almost nobody to show the ad to.
Is Your Audience Too Small?
Beginners narrow aggressively because it feels precise, and narrowing is the fastest way to stop delivery.
Stacking 4 interests, 3 behaviours, a tight age band and 2 cities does not find better people. It finds fewer people, and then the auction has to serve a tiny pool repeatedly. Frequency climbs, costs climb, and eventually delivery stalls because there is nowhere left to go.
Check the estimated audience size on the ad set. If it is measured in tens of thousands rather than hundreds of thousands, loosen it. Remove the layer you are least confident about, which is usually the behaviour stack, and see what happens over the next 3 days.
This runs against instinct, and it is one of the things that separates people who have spent real money from people who have read about it. Meta’s delivery system is better at finding buyers inside a broad pool than most advertisers are at defining one in advance.
Money Is Spending, Nothing Is Coming Back
Now the diagnosis is different, and there is 1 check that comes before all others.
Open Events Manager and confirm your optimisation event is actually firing. Not the Pixel, the event. A Pixel can be installed correctly and still never record a Purchase or a Lead, because the event was never placed on the right action or never fires on the thank-you page.
If the event does not register, Meta has nothing to optimise toward. It will still spend the full budget, because spending is its job, and it will spend on whoever is cheapest to reach. That is the exact profile of a campaign burning money with a beautiful CPM and no results.
Use the browser extension to test the event on your own site, complete the action yourself, and confirm it appears. This takes 15 minutes and it is the check that most often ends the investigation.
Are You Stuck in the Learning Phase?
Meta needs data before delivery stabilises, and the threshold is roughly 50 optimisation events per ad set per week.
Meta explains the learning phase and the rest of the delivery system in its own Blueprint training material, which is free and worth reading once rather than guessing at.
Below that, the ad set sits in learning, or shows as Learning Limited, and performance stays erratic. Results swing day to day, costs look unpredictable, and the instinct is to change something. Changing something is usually the wrong move.
| Symptom | Likely cause | What to do |
|---|---|---|
| Learning Limited, low spend | Budget too small for the event cost | Raise budget or consolidate ad sets |
| Learning Limited, tiny audience | Audience cannot supply 50 events | Broaden targeting |
| Learning restarts repeatedly | Significant edits during learning | Stop editing for at least a week |
| Learning never ends, many ad sets | Budget split across too many ad sets | Consolidate into 1 or 2 |
| Expensive event chosen | Optimising for Purchase on low volume | Optimise for an earlier funnel event |
The last row is the one worth understanding. If your product sells a handful of units a week, optimising for Purchase cannot reach 50 events, so the ad set never exits learning. Optimising for an earlier event that happens 10 times more often gives the system enough signal to work with, and you judge the campaign on purchases anyway.
Are You Splitting the Budget Too Thin?
This is the most common self-inflicted delivery problem, and it comes from good intentions.
Someone builds 6 ad sets to test 6 audiences properly. The budget divides 6 ways. No single ad set gets near 50 weekly events, so all 6 sit in learning permanently, and the test produces 6 unreliable readings instead of 1 reliable one.
Consolidate. Two ad sets with meaningful budget each will teach you more than 6 starved ones, because at least they exit learning and produce numbers you can trust. Test creative inside the ad set rather than building a new ad set per idea.
The rule of thumb: if you cannot fund an ad set to roughly 50 optimisation events a week at your realistic cost per event, you do not have room for that ad set yet.
Are You Editing Too Often?
Significant edits restart the learning phase, and a campaign edited every day never leaves it.
Budget changes, audience changes, creative swaps and optimisation event changes all count. Checking results is free. Acting on 2 days of data is not, because 2 days of learning-phase data is noise presented as a number.
Set a review rhythm and hold it. Look daily if you want, change nothing until you have several days of post-learning data, and when you do change something, change 1 thing so you know what caused what. Most accounts improve simply by their owner doing less.
The exception is a clear disaster: an ad rejected, a broken landing page, a wildly wrong audience. Fix those immediately. Stability applies to optimisation decisions, not to genuine mistakes.
Is It Actually the Creative?
Once setup, tracking, audience and budget are sound, creative is where the remaining performance lives.
Delivery problems and performance problems feel identical from inside Ads Manager, but they read differently in the numbers. If impressions are healthy and click-through is poor, the ad is being shown and ignored. That is a creative and offer problem, and no amount of targeting work will fix it.
If clicks are healthy and conversions are not, the ad is working and the landing page is not. Check load speed, check that the page delivers what the ad promised, and check the form actually submits on a phone. A surprising share of no-conversion cases are a form that fails on mobile.
Work outward from the numbers rather than changing whatever is easiest to change.
A Diagnostic Order That Works
- Spend is zero? Payment, review status, rejections, schedule, spending limit, toggles.
- Still zero? Audience size.
- Spending, no results? Verify the optimisation event fires in Events Manager.
- Event fires? Check learning phase status and weekly event count.
- Stuck in learning? Consolidate ad sets, raise budget, or optimise for an earlier event.
- Out of learning, still poor? Split it: impressions and click-through point at creative, clicks without conversions point at the landing page.
The order matters more than any individual step. Almost everyone starts at step 6, rewriting ads, when the answer was at step 3.
Common Mistakes to Avoid
- Rewriting the ad before confirming the conversion event actually fires.
- Narrowing the audience when delivery stalls, which makes it worse.
- Building 6 ad sets on a budget that can only support 1.
- Editing daily and resetting the learning phase every time.
- Judging a campaign on 2 days of learning-phase data.
- Optimising for Purchase on a product that sells 5 units a week.
- Ignoring the landing page because it sits outside Ads Manager.
Final Thoughts
Delivery problems are rarely mysterious. They are payment, review, audience size, event tracking, or a budget spread too thin to escape the learning phase, and they turn up in roughly that order of frequency.
Check the boring things first, verify the event before touching the creative, and consolidate before you expand. Most accounts do not need a new strategy. They need 1 correct diagnosis and then 2 weeks of being left alone.
If you would rather learn this properly than troubleshoot it live, our Digital Marketing and Meta Ads Mastery course teaches tracking and campaign structure before creative for exactly this reason, and this guide on choosing a course covers what to check in any provider. Current batches are on the apply page.
Frequently asked questions
Why are my Meta ads not delivering at all?
Work through it in order: account or payment holds, ad review status, a scheduled start date in the future, an account spending limit already reached, then audience size and budget. Most zero-delivery cases are administrative rather than strategic, and people skip those checks because they feel too simple.
Why is my ad set spending but getting no results?
Usually the optimisation event is not firing, or the ad set is stuck in the learning phase because it cannot reach roughly 50 optimisation events a week. Check the Events Manager first. If the event does not register, Meta has nothing to optimise toward and will spend on whoever is cheapest to show an ad to.
What is Learning Limited?
It means the ad set is not generating enough optimisation events for Meta to exit the learning phase, generally around 50 a week. It is almost always a budget, audience size or event choice problem, and the fix is consolidation rather than more ad sets.
How long should I wait before changing something?
Give a new ad set several days before judging it, and avoid editing during the learning phase because significant edits reset it. The most common self-inflicted problem is a campaign edited daily that never gets past learning.
Does a small budget stop delivery?
It can. If your daily budget is smaller than the realistic cost of a single optimisation event, the ad set cannot produce results consistently. Either raise the budget, or optimise for an earlier and cheaper event in the funnel.
Why did delivery stop after I edited the ad?
Significant edits send the ad back through review and can restart the learning phase. Delivery usually resumes within hours, but the performance you had built up does not carry over cleanly.