Check these first, in order
Ordered by how often each is the answer and how fast it is to rule out.
It's still in review
New ads typically clear within 24 hours but can take longer, and a review restarts after significant edits. The status column says so explicitly — check it before changing anything else.
Billing has failed
A declined card stops delivery across the whole account while everything still shows as active. It is the most embarrassing cause and worth ruling out in ten seconds.
The schedule hasn't started
Start dates are set in the ad account's timezone, which is not always yours. An ad scheduled to begin tomorrow will sit there looking active and spend nothing.
The audience is too small
Very tight targeting — a small radius plus several narrow interests — can leave an audience Meta considers too small to deliver against. The estimated audience size in the ad set will warn you.
The budget or bid is too low
With a bid cap set below what the auction is actually clearing at, you will simply never win. Remove the cap temporarily to test whether that is the constraint.
You're competing with yourself
Two ad sets targeting substantially the same people bid against each other. Meta usually suppresses one, which looks like a delivery failure and is really an overlap.
If it delivered before and stopped
A campaign that ran and then stopped points somewhere different from one that never started.
Check whether the audience is exhausted — reach plateauing while frequency climbs means there is nobody new left to show it to. Check whether a recent edit restarted the learning phase, since delivery is throttled while a new ad set explores. And check whether a competitor entered your auction, which shows up as a rising CPM on unchanged targeting.
Also check the date range you are looking at. More than one panicked investigation has ended with the realisation that the report was set to today and it is nine in the morning.
The one that isn't obvious
Ad set overlap is the cause people miss, because nothing in the interface flags it as an error. If you have built several ad sets around similar interests in the same location, they are entering the same auctions against each other.
The effect is that one gets suppressed and the others get more expensive. Consolidating them usually restores delivery and lowers cost at the same time, which is a rare combination.
This is also why 'create more ad sets to give it more chances' is bad advice. More units competing for the same people divides your conversions, keeps every ad set learning limited, and raises your own prices.
Questions
How long does Facebook ad review take?[+][-]
Usually under 24 hours, though it can be longer for sensitive categories. Significant edits send an already-approved ad back for another review.
Why did my ad stop delivering after a few days?[+][-]
Most often audience exhaustion or an edit that restarted the learning phase. Check whether reach has plateaued while frequency keeps climbing.
My ad is approved but has zero impressions. Why?[+][-]
Check billing, schedule and audience size in that order. Approved simply means the content passed review, not that the ad has entered the auction.
Can too small a budget stop delivery entirely?[+][-]
It can, particularly with a bid cap set below the clearing price. Without a cap, a small budget usually delivers slowly rather than not at all.
Keep reading
EXOD does this part for you.
It plans, writes and launches the campaigns, then watches these numbers every day and adjusts them — inside your own ad account.
Start free