Why Is My Facebook Ad Not Delivering? 9 Real Causes

If your Facebook ad isn't delivering, check the Delivery column in Ads Manager before you change anything: Meta names the reason there, and in most accounts it is one of nine causes. The most common by far are a schedule that hasn't started, a payment method Meta is holding, an audience too small to fill, or an ad set that lost the auction to another ad set in your own account. Almost none of it is a mystery, and almost none of it is fixed by duplicating the ad set.
That last habit is worth naming early. Duplicating a non-delivering ad set is the reflex of every new buyer and it usually makes delivery worse, because now two of your ad sets are bidding against each other for the same people.
Here is the checklist in the order I actually run it.
What does the Delivery column tell me?
Open Ads Manager, look at the campaign, ad set and ad rows, and read the Delivery status on each. The status is the fastest diagnosis you have.
- Active with impressions: it is delivering, you just want more of it. Different problem.
- Active with zero impressions: it cleared review and is eligible, but something else is blocking spend. Causes 1 to 5 below.
- In review: Meta hasn't finished checking it. Normal for a few hours.
- Rejected: policy. That's a different fix, covered in why your Facebook ad won't publish.
- Not delivering: the ad set or campaign is off, scheduled for later, or out of budget.
- Scheduled: the start date is in the future. This is the single most common false alarm.
- Learning limited: it is delivering but Meta doesn't have enough conversions to optimise. Covered separately in the Meta learning phase explained.
- Off: someone toggled it. Check every level, because an active ad inside a paused ad set delivers nothing.
Hovering the status gives you a plain-language explanation and often the exact fix. Read it before doing anything else.
Cause 1: the schedule hasn't started (or already ended)
Check the start date and time on the ad set, and check the time zone. Ad account time zone is set once at account creation and never changes, so if your account is on US Pacific and you're in London, an ad scheduled for "9am" starts at 5pm your time.
End dates cause the mirror-image problem: an ad set with an end date that passed shows Active at the ad level and delivers nothing.
Cause 2: a payment or billing hold
Meta stops delivery instantly when a payment fails, when you hit your billing threshold and the charge is declined, or when the account is under a payment review. This is invisible unless you look: go to Billing and payments in Ads Manager and check for an outstanding balance or a red notice.
New accounts also start with a low billing threshold, which means Meta charges you often and any card issue halts everything. If the card is fine but the charge failed, contact your bank before you touch the campaign; card issuers block Meta charges on new cards more often than people expect.
Cause 3: the audience is too small or impossible
Meta will accept an ad set targeting almost nobody and then quietly fail to deliver it. Watch for:
- Multiple narrowing layers stacked with AND conditions until the estimated size collapses.
- A custom audience that hasn't populated yet, or a customer list with a low match rate.
- Exclusions that remove the audience you just built. Excluding all purchasers and all site visitors from a retargeting ad set is a real and common mistake.
- A location plus language plus age combination that leaves a few thousand people.
The audience size estimate in the ad set is unreliable in absolute terms but useful as a relative signal. If it reads "audience defined" in the red zone, that's your answer.
Cause 4: your ad sets are competing with each other
This is the cause people miss, and it's the reason duplicating makes things worse.
Meta runs one auction per impression. If three of your ad sets target overlapping people, they enter the same auction and Meta deliberately suppresses all but one, so you don't bid up your own costs. The result looks like one ad set eating everything while its siblings sit at zero spend.
The fix is consolidation, not more ad sets: fewer, broader ad sets with more budget in each. If you genuinely need separate ad sets, make the audiences mutually exclusive with exclusions. Ads Manager has an audience overlap tool under Audiences that shows exactly how much two audiences share.
Cause 5: the budget is too low for the optimisation event
An ad set optimising for purchases needs enough budget to buy roughly one conversion, and ideally several, per day at your realistic cost per result. If your cost per purchase is £30 and the daily budget is £5, Meta has no path to the outcome you asked for and delivery becomes erratic or stops.
Two workable fixes: raise the budget to a multiple of your expected cost per result, or optimise for an event that happens more often, such as add to cart or landing page view, while you gather data. The reasoning behind this is the same reasoning behind the learning phase.
Cause 6: the bid cap or cost cap is set below the market
If you set a manual bid cap, cost cap or ROAS goal that the auction won't clear, delivery stops rather than overspending. This is the control working as designed, and it is a silent failure.
Check the bid strategy on the ad set. If it isn't "Highest volume" (the automatic option), that's a strong candidate. Raise the cap or switch to automatic bidding to confirm the diagnosis, then decide whether the cap was realistic. What clears the auction changes with season and competition, so a cap that worked in March can stop working in November. How the Meta ad auction works explains why.
Cause 7: creative or format problems
Some of these show as rejections, some just don't run:
- Placement mismatch. A 1:1 static in a Reels-only ad set is not eligible for that placement, so it delivers nothing. Check the placement preview: any placement showing an error means that surface will not serve.
- Broken destination. A landing page returning an error or blocking Meta's crawler suppresses delivery.
- Missing pixel event. Optimising for a conversion event the pixel has never fired means Meta is optimising toward something it cannot find.
- Video still processing. Large uploads take time before the ad becomes eligible.
Cause 8: the account or Page is restricted
Account-level restrictions kill everything at once. If every campaign stopped simultaneously, it is not a campaign problem. Check Account Quality in Business Manager for account restrictions, Page restrictions, or a failed business verification. Advertising in special categories (credit, employment, housing, social issues, elections) without declaring the category also blocks delivery.
Cause 9: you edited it, and reset it
Significant edits — audience, budget, optimisation event, creative — restart the learning phase and pause delivery briefly while Meta re-approves and re-learns. Editing repeatedly keeps an ad set in permanent reset. Make a change, then leave it alone for at least 24 hours.
What if it's approved and still delivering nothing?
Work down this order and stop at the first thing that's true:
- Is everything toggled on at campaign, ad set and ad level?
- Has the schedule started, in the account's time zone?
- Is there a billing hold or failed payment?
- Is the audience genuinely reachable, after exclusions?
- Is another of your ad sets targeting the same people?
- Is the budget a sensible multiple of your cost per result?
- Is there a bid or cost cap set?
- Do all selected placements pass the preview?
- Is Account Quality clean?
If all nine pass and it's been under 24 hours, the answer is patience. Genuinely new ad sets often take several hours to find their footing.
Where competitor research fits
When delivery is fine but results aren't, the bottleneck is usually creative rather than settings, and the fastest way to fix creative is to look at what is already working in your category. Every active ad on Facebook and Instagram is public in the Meta Ad Library, including each ad's start date, and ads that have been running for months are the ones paying for themselves.
The library has no download button and no memory — ads disappear when advertisers stop them — so I save the ones worth studying as I go. Our free extension, Klipio's Meta Ad Library Downloader, adds a download button to every ad and can pack a whole search into one ZIP with a searchable index and a CSV (disclosure: Klipio is ours; the extension is free, no account needed, and runs in your browser). The workflow is written up in downloading Facebook Ad Library videos.
FAQ
Why is my Facebook ad approved but not delivering?
Approval only means it passed policy review. Delivery still depends on the schedule having started, the payment method working, the audience being reachable after exclusions, the budget being adequate for the optimisation event, and no bid cap sitting below the market. Check the Delivery column tooltip, which usually names the specific cause.
How long does it take for a Facebook ad to start delivering?
Most ads clear review within a few hours, though it can take up to 24 hours and longer in sensitive categories. After approval, a new ad set often takes several more hours to build momentum. If nothing has spent after a full day, treat it as a real problem rather than a delay.
Why is my ad set spending nothing while others spend?
Usually audience overlap. Meta runs one auction per impression and suppresses your own competing ad sets so you don't bid against yourself, which concentrates spend in whichever ad set is winning. Consolidate into fewer, broader ad sets, or make the audiences mutually exclusive with exclusions.
Does a small budget stop delivery?
It can. An ad set optimising for purchases needs enough daily budget to realistically buy at least one conversion, ideally several. If your cost per purchase is far above the daily budget, delivery becomes erratic or stops. Raise the budget or optimise for a more frequent event while you gather data.
What does "Learning limited" mean for delivery?
It means the ad set is delivering but hasn't accumulated enough optimisation events for Meta's model to stabilise, so performance stays volatile. It is not a block on delivery. Fixes are consolidating ad sets, raising budget, broadening the audience, or optimising for an event that happens more often.
The Klipio extension adds a download button to every ad in the Meta Ad Library: one click per ad, or bulk-save a whole search as a ZIP with a searchable swipe file inside. Free, no sign-up.
Get the free extension

