When a Facebook ad is not delivering, read the Delivery column in Ads Manager at campaign, ad set and ad level, then rule out the causes in a fixed order: ad review, payment and spending limits, audience size, bid caps, budget against the cost of a lead, Learning limited, auction overlap, schedule, and finally the Lead event itself.
The first causes stop delivery outright and take a minute to check; the later ones throttle it:
- Is the ad in review, rejected, or showing an error?
- Did a payment fail, or did the account hit a spending limit?
- Is the audience too narrow?
- Is a bid cap or cost per result goal below what leads cost?
- Is the budget too small for a lead?
- Is the ad set Learning limited?
- Are your own ad sets competing in the same auctions?
- Does the schedule or the end date block delivery?
- Is the Lead event reaching Meta?
What does “not delivering” mean on Facebook ads?
In Meta’s help center, “Not delivering” is the status of a campaign, ad set or ad that has been turned off or has finished its scheduled course of delivery, and Meta keeps it separate from a rejection. Most advertisers use the phrase for anything that isn’t spending, though, and the Delivery column is more specific.
Meta’s delivery status article groups statuses under five icons: Error (it can’t run at all), Warning (limited delivery), Pending (in review or scheduled), Active and Inactive. Statuses can differ by level: a campaign can look active while an ad inside it is In review after an edit. Check all three levels, and hover over any error or warning to read Meta’s explanation.
| Status | What Meta says it means | What to do |
|---|---|---|
| In review | the ad is being checked against Meta’s Advertising Standards | wait; cause 1 if it drags on |
| Processing | your edits are being applied, usually in minutes, sometimes up to 8 hours | wait |
| Preparing | the ad passed review and is being matched to bids and audiences before its first impression | wait up to 24 hours |
| Scheduled | the ad set starts at a future date | check the start date |
| Rejected | the ad doesn’t comply with Meta’s Advertising Standards | fix it or request another review (cause 1) |
| Update required | something the ad relies on is gone, such as a removed post, an expired offer or an unpublished Facebook Page | update the ad, then switch the ad set back on |
| Learning | the ad set is still exploring how to deliver; performance is less stable and CPAs are usually worse | don’t edit it |
| Learning limited | the ad set didn’t get enough results to exit the learning phase | cause 6 |
| Bid limited / Cost limited | your bid control or cost per result goal is holding back results | cause 4 |
| Creative fatigue | the ad set or ad may be suffering from creative fatigue | refresh the creative (creative fatigue in Meta ads) |
| No ads | the campaign or ad set has no published ad | publish one |
| Ad set off / Ads off | the campaign is on but the ad set or ad is off | switch it on; check automated rules |
| Completed | the scheduled end date has passed | extend the end date (cause 8) |
Update required comes from Meta’s article on that status; Bid limited, Cost limited and Creative fatigue from its guide to ads not getting enough results. The rest are in the delivery status article.
Facebook ad active but not delivering
“Active” on a campaign or ad set means it contains at least one ad running normally, not that every ad is spending. Meta’s delivery system predicts which ads will get the best results and says plainly that “sometimes this means that other ads in the same ad set or campaign won’t deliver”. It calls that okay and suggests an A/B test if you need ads to deliver equally.
So find the level that’s actually idle:
- One ad gets nothing, its siblings spend. Usually normal. For a fair read on that creative, test it in its own ad set or with an A/B test (the Meta ads creative testing framework covers both). Then run Meta’s ad-level checks: the ad is on, no automated rule turned it off, the activity history doesn’t show Meta pausing it, the creative suits the placements, and no country or age restriction on your Facebook Page excludes part of the audience.
- The whole ad set spends little or nothing. A Facebook ad not spending at ad set level is throttled further up, by causes 3 to 7.
- It’s brand new. Meta says you may need to wait up to 24 hours to see delivery, and an ad that passed review can sit in Preparing until its first impression.
Facebook ads not delivering today
Rule out normal variation first. With daily budgets, Meta may spend up to 75% over your daily budget on some days and less on others, and no more than 7 times the daily budget in a week. A quiet Tuesday after a busy Monday can be the same budget, averaged.
Real same-day stops usually come from billing or the daily spending limit (cause 2), a new review after an edit (cause 1), or a late change. Meta’s example of the last one: double a daily budget at 10pm and the system has two hours to spend it, so that day under-spends and the next catches up. The same article says frequent pauses during the day disrupt pacing too. Open the ad set’s activity history and find the last change before the drop.
Why is my Facebook ad not delivering? The causes in order
1. The ad is in review or was rejected
Meta reviews every ad when you create or edit it, and says most ads are reviewed within 24 hours, sometimes longer. The review can cover the images, video and text, the targeting and the ad destination, which for a website lead campaign is your landing page. Edits to targeting, creative (images, text, links or videos), optimization or billing event start a new review; changes to bid, budget or schedule don’t.
Confirm: In review or Rejected at ad level. A rejection comes with an email and a reason in Business Support Home.
Fix: edit the part that breaks the rule, often a claim on the landing page or in the copy, and the ad is resubmitted automatically. If the rejection looks wrong, request another review in Business Support Home; Meta aims to decide within 48 hours. Don’t delete the rejected ad first, or you may lose the ability to request a review. For credit, financial products, housing or employment offers, check the campaign declares the right Special Ad Category: Meta requires one for financial products and services when you’re based in or advertising to the US, and warns that ads may be rejected if an appropriate category is not chosen.
2. Payment problems and spending limits
Four ceilings can stop an account that looks healthy in Ads Manager:
- A failed payment. Meta pauses your ads and disables the ad account until you pay the amount due. On prepaid accounts, delivery is disrupted when available funds run short.
- The daily spending limit Meta sets, based on your advertising and payment history. When you reach it, ads pause until it resets at midnight in the ad account’s time zone. Meta says it typically rises on its own as you spend up to or near it.
- A campaign spending limit. Every ad set and ad in the campaign stops once it’s reached.
- The ad account spending limit. A lifetime cap across all campaigns, set by an admin and reset manually in Payment settings.
A lifetime budget is also a hard cap; a daily budget isn’t.
Confirm: Billing & payments for failed charges and the balance due; Payment settings for the limits; campaign settings for the campaign limit and lifetime budget.
Fix: pay the balance or add funds (Meta then resumes active and scheduled ads), raise or reset the limits, and for the daily spending limit, wait for the reset.
3. The audience is too narrow
Meta’s troubleshooting is blunt: “An audience that is too narrow may prevent your ads from being delivered.” Local lead gen hits this first: a 5 km radius, an age band and two stacked interests leave very few people to choose from. Special Ad Categories tighten it further: in the US, Canada and some European countries, Meta limits or removes options such as age, gender, postcode, exclusions and lookalike audiences.
Confirm: the estimated audience size in the ad set, and whether other ad sets target the same people (cause 7).
Fix: widen the radius or region, drop the interest layers you added out of habit, and test Advantage+ audience, which treats your targeting as a suggestion. Advantage+ leads campaigns explains what it changes.
4. A bid cap or cost per result goal is too low
Caps throttle quietly: nothing errors, the ad set just doesn’t win enough auctions. A bid cap is the most Meta may bid in an auction; a cost per result goal is the average cost you ask for. Set either below what leads actually cost and delivery shrinks to the auctions you can afford. Meta asks you to make sure the cap or goal is high enough to achieve your optimization event, and says the goal “should align with your average cost per result”.
Confirm: Bid limited or Cost limited in the Delivery column. Compare the cap with what a lead actually cost you over the last 30 days.
Fix: Meta’s advice is to switch to the Highest volume bid strategy or raise the cost per result goal. Set the goal from what leads cost now, not from the CPL you’d like; tighten it once the ad set delivers.
5. The budget is too small for a lead
A lead costs more than a click, and Meta sizes delivery around the cost of the event you optimize for. Its rule of thumb, from the same troubleshooting article: a daily budget of at least 10 times the average cost of your optimization event. Meta’s example is a $5 link click and a $50 daily budget. At a €25 CPL, that’s €250 a day per ad set.
There’s a second floor. Meta recommends an optimization event that happens about 50 times per week at a minimum, because its system needs that many to learn from. In lead gen that’s 50 × CPL a week: €1,250 at €25, about €179 a day.
Confirm: divide the daily budget by your average cost per lead. Under 10, you’re below Meta’s rule; under about 7, the ad set can’t reach 50 leads a week even at today’s CPL.
Fix: run fewer ad sets with more budget each. The Meta Ads budget calculator turns a target CPL into the daily budget per ad set and shows how many ad sets your budget can feed. Meta also suggests optimizing for an event higher up the funnel, such as landing page views. In lead gen that buys traffic instead of leads, so keep it for last.
A delivery problem shows up as missing leads before it shows up as a status. DropCPL counts leads on your own landing pages and syncs spend per ad from the Meta Ads API, so the creative × landing page pair that stopped producing sits next to the ones still working, with its real CPL. Start free →
6. The ad set is Learning limited
Learning limited means the ad set didn’t get enough results to exit the learning phase. It still delivers, and Meta says it isn’t a penalty: the setup just gives the delivery system too few optimization events to work with. Most of the reasons Meta lists are on this page already: small audiences, low budgets, low bid or cost controls, overlapping ad sets.
Confirm: the Delivery column, plus the Optimization events column to count results since the last significant edit.
Fix: consolidate ad sets, broaden the audience and budget towards 50 × CPL a week. The learning phase guide has Meta’s full list of causes and fixes, the edits that reset learning and the budget maths. Don’t switch off a Learning limited ad set that brings leads under your target CPL.
7. Your own ad sets overlap in the auction
When two or more of your ads enter the same auction, Meta puts forward only the one with the highest total value. That’s auction overlap. It stops you bidding against yourself, but a cluster of ad sets aimed at the same people can leave several unable to spend their budget or exit learning. Separate ad accounts don’t avoid it, Meta adds.
Confirm: opportunity score recommendations in Account Overview that mention overlap, or ad sets with similar audiences and the same optimization event where one spends and the rest stall.
Fix: combine similar ad sets, or turn off the overlapping ones that are Learning limited or have the fewest results and move their budget to the one you keep, as Meta suggests.
8. The schedule or the end date blocks delivery
In the ad set’s Budget & schedule section, look for a start date in the future (Scheduled), an end date already passed (Completed), a lifetime budget fully spent, or restricted hours. Meta’s troubleshooting suggests relaxing a restrictive schedule to give ads more time to deliver. Extending a schedule has a side effect: the system re-paces spend over the longer run, and Meta notes that delivery may slow down as a result.
9. The Lead event isn’t reaching Meta
This applies to website forms: an Instant Form lead is submitted inside Meta’s apps, not on your landing page. When you optimize for leads on a landing page, Meta can only count the Lead events it receives. Its conversion troubleshooting adds that only conversions inside your attribution setting count towards the 50 a week, and that Meta warns you before launch when it predicts an ad set will get zero conversions.
If the Lead event stops firing after a new form, a changed thank-you step or a blocked script, Meta sees fewer leads than you receive and optimizes on that smaller number.
Confirm: in Events Manager, compare the Lead events Meta received each day with the form submissions you received. Check the Diagnostics tab, where critical issues carry a red icon.
Fix: send the Lead event from your server through the Conversions API, deduplicated against the browser event with the same event_id. The Conversions API setup guide covers the payload and how to check it in Test events.
Facebook ad not delivering: symptom, cause, check, fix
| Symptom | Likely cause | Check | Fix |
|---|---|---|---|
| Brand-new ad, no impressions | review or Preparing | Delivery column at ad level | wait up to 24 hours |
| Rejected | policy issue in copy, targeting or landing page; missing Special Ad Category | reason in Business Support Home | edit the part at fault, or request another review |
| Every ad stopped at once | failed payment, daily spending limit, account spending limit | Billing & payments, Payment settings | pay or add funds; raise or reset the limit; wait for the reset |
| One campaign stopped mid-flight | campaign spending limit, lifetime budget, end date | campaign and ad set settings | raise the limit or budget; extend the end date |
| Ad set spends, one ad gets nothing | delivery system favours other ads | spend per ad | normal; test the ad on its own or with an A/B test |
| Bid limited or Cost limited | cap below what leads cost | bid strategy against your 30-day CPL | Highest volume, or raise the goal |
| Spends a fraction of the budget | narrow audience, budget too small for a lead, overlap | audience size, budget ÷ CPL, opportunity score | broaden, consolidate, budget per ad set |
| Learning limited | can’t reach about 50 results a week | Optimization events column | consolidate, broaden, raise budget |
| Delivers only at some hours | ad set schedule | Budget & schedule | relax the schedule |
| Spend drops on one day | normal daily flexibility, or a late edit | spend over the week; activity history | judge weekly; edit budgets early in the day |
| Spending, almost no leads reported | Lead event missing or broken | Events Manager count against your form submissions | send Lead through the Conversions API with event_id |
| Slowed right after an edit | new review, or a significant edit restarted learning | activity history | wait a week; batch edits in future |
When to recreate the ad or contact support
Meta’s advice: if an ad has been published for at least 48 hours and none of these checks fix it, delete and recreate it; if more than one ad in the campaign isn’t delivering, contact Meta support instead. Recreating restarts review and learning, so it’s the last step, not the first.
Once the ad set delivers again, judge it on the leads you received rather than on the status. Real CPL vs platform CPL explains why Meta’s count and yours rarely match.