Facebook Ads Not Delivering? The Complete Diagnostic and Fix Guide
Facebook ads not delivering? Follow this triage-first diagnostic: delivery statuses, learning phase, audience issues, creative rejections, bid floors, and iOS attribution gaps.

Sections
You open Ads Manager and see the delivery column showing zero impressions. Or it says "Active" but you've spent €12 of your €200 daily budget by 6 PM. Or it says "Learning Limited" and has said that for nine days straight.
All of these are Facebook ads not delivering — but they have different causes and different fixes. The mistake most advertisers make is treating "not delivering" as one problem. It's a category. And the fix depends entirely on which specific delivery failure you're looking at.
TL;DR: Facebook ads not delivering usually traces to one of six root causes: bid or budget too low to win auctions, audience too narrow for the algorithm to serve, campaign stuck in the learning phase without enough conversion events, creative rejected or flagged during review, iOS attribution reducing optimization signal, or campaign objective mismatched to your actual goal. This guide gives you a triage sequence to identify which one applies, and the specific fix for each.
This guide is structured as a diagnostic, not a list. Work through it in order. Most delivery problems resolve at step two or three — you rarely need to reach the end.
What the Delivery Status Columns Actually Tell You
Before diagnosing, you need to read the right signals. Ads Manager shows three separate status levels: campaign, ad set, and ad. A campaign can be active while an ad set is paused. An ad can be approved while its ad set is in Learning Limited. These statuses don't cascade — they're independent.
The key campaign objective column statuses to know:
- Active: The campaign, ad set, or ad is eligible to run and is competing in auctions. "Active" does not guarantee spend — it means there are no administrative blocks.
- Learning: The ad set is in the learning phase, accumulating the ~50 optimization events per week needed to stabilize delivery. Expect erratic CPMs and inconsistent spend during this period.
- Learning Limited: The ad set entered the learning phase but cannot accumulate enough events to exit it. This is a warning, not a pause — the ad set continues to run but will never reach stable delivery at its current configuration.
- Scheduled: The campaign or ad set is set to start in the future, or has dayparting rules that prevent delivery at the current time.
- In Review / Pending Review: The ad is waiting for Meta's automated and human review system. Most reviews complete within 24 hours, though complex creative (financial services, health claims) can take 48-72 hours.
- Rejected / Disapproved: The creative, copy, or landing page violated one of Meta's Advertising Policies. Check the specific policy code — it tells you exactly what triggered the rejection.
If you're seeing low delivery without a clear status problem, the issue is operational — bid, audience, or optimization event volume. We'll cover each of those in the sections below.
For a broader look at reading campaign data once delivery is restored, see Meta Ad Insights: How to Read Your Campaign Data and the Facebook Ads Management Guide for 2026.
The Learning Phase: What It Is and Why Campaigns Get Stuck There
The learning phase is the most commonly misunderstood delivery state in Meta advertising. Teams see it and assume something is wrong. The learning phase is normal — but Learning Limited is not, and the two look nearly identical in the interface.
When an ad set enters the learning phase, Meta's algorithm starts exploring the audience defined by your targeting to find the users most likely to take the optimization action (purchase, lead, add-to-cart, link click — whatever you set). During this exploration period, the system is gathering signal. CPMs will be higher than stable periods. Delivery will be inconsistent — some days spending 80% of budget, some days 40%. This is expected.
The algorithm needs approximately 50 optimization events within a 7-day window to exit the learning phase. The exact number varies by account history and conversion event type, but 50 is the operational benchmark that Meta's own Business Help documentation has cited consistently. Until you hit that threshold, the ad set stays in Learning.
Learning Limited means the ad set is running but the math doesn't work: the system cannot find 50 qualifying events per week at the current configuration. The three most common causes:
1. Budget too low relative to target CPA. If your target CPA is €50 and your daily budget is €30, you're mathematically unable to generate even one conversion per day on average. The rule of thumb: set your daily budget at 5x your target CPA minimum. For a €50 target CPA, that's €250/day minimum. Below that, you'll routinely hit Learning Limited.
2. Audience too narrow. An audience with estimated reach below 50,000 often can't generate enough qualified users to accumulate 50 events. The algorithm runs out of new people to test. Broaden your demographic targeting — drop age restrictions that aren't essential, remove interest stacking that's over-constraining the pool, or switch to broad targeting and let Meta's Advantage+ Audience find the converters.
3. Conversion event too rare. If you're optimizing for purchase on a new product with low conversion rates, you may never generate 50 purchases per week. Switch to a higher-frequency event: add-to-cart, initiate checkout, or view content — whichever event you can generate 50+ times weekly. Once the ad set learns on that signal, your purchase rate will improve as a downstream effect.
For a detailed breakdown of learning phase mechanics and how to exit it faster, see Mastering Meta Ads Learning Phase Optimization.
Audience Problems: When Targeting Is the Delivery Bottleneck
Audience configuration is the second most common cause of Facebook ads not delivering. Targeting that feels precise often translates to an audience the algorithm can't effectively serve.
Three audience-side problems cause most delivery failures:
Over-narrowed interest stacking. Adding five or six interest layers — "must match interest A AND interest B AND interest C" — can shrink estimated reach to the tens of thousands. At that size, the algorithm has too few users to test efficiently, and your CPMs spike as you compete for a tiny pool. The fix: use OR logic between interest groups (Detailed Targeting Expansion), not AND logic, and trust Meta's audience modeling to find the converters within a broader pool.
Audience overlap between ad sets. Multiple ad sets targeting overlapping audiences in the same campaign compete against each other in auctions. Meta's auction penalizes overlap — your own ad sets bid up their own CPMs. Use mutually exclusive audience definitions between ad sets, or use campaign budget optimization (CBO) and let Meta allocate across overlapping ad sets with internal de-duplication.
Custom audience expiration or small size. Website custom audiences depend on pixel traffic. If your pixel is receiving fewer than 1,000 events per week, the resulting custom audience may be too small for reliable delivery — particularly after iOS 14+ applied Apple's privacy framework to IDFA sharing. Check your audience size in Audiences Manager. If it's below 1,000 people, your delivery will be unreliable. Expand the lookback window or switch to a seed audience for Lookalike generation.
For contextual targeting approaches that reduce dependence on interest stacking, see Facebook Ads Workflow Efficiency and the post on structuring Facebook ad intelligence for creative testing.
Creative Rejections: The Rejection Codes That Actually Matter
Creative rejection stops delivery immediately. But not all rejections are equal — some are clear-cut policy violations, others are false positives from Meta's automated review system, and others are legitimate flags on landing page content rather than the ad itself.
The rejection codes that matter most:
Personal attributes violation. Meta's policy prohibits ad copy that implies knowledge of a user's personal attributes — health status, financial situation, relationship status, political beliefs. Copy like "Struggling with your finances?" triggers this even when no targeting based on those attributes is used. Reframe from second-person personal implication to third-person framing: "How businesses manage financial uncertainty" instead of "Are you struggling financially?"
Landing page policy violation. The ad is rejected because the destination URL violates policy — common with before/after images, health claims, or unsubstantiated performance guarantees. The rejection appears on the ad, but the problem is the URL. Edit the landing page, not the creative.
Text in image over 20%. Meta's 20% text rule was officially relaxed in 2019, but the automated review system still occasionally flags image-heavy text creative in financial services and supplement verticals. Test a clean version with no image text to isolate the variable.
Circumventing systems. This catch-all appears when Meta suspects cloaking, link masking, or unusual redirect chains. Verify your final destination URL is clearly visible and matches the ad content.
For first-level rejections, submit for manual review immediately. Meta's automated system has a meaningful false-positive rate — Meta's transparency data shows millions of appeals upheld annually. For recurring rejections, use Meta's Ad Account Quality dashboard to identify pattern-level flags before they escalate.
For ad creative strategy that avoids common policy flags structurally, see the post on Facebook Ads Creative Testing Bottleneck and Modern Facebook Ads Strategy: Creative-First Campaigns.
Budget and Bid Floor Issues: When the Auction Is the Problem
If your ad is approved, your audience is large enough, and your campaign has exited learning — but it's still not spending — the issue is almost always the bid or budget mechanics.
Facebook's auction sets a floor price for every impression based on audience quality, competition level, and advertiser demand in that segment. If your effective bid is below that floor, you simply don't win auctions. The system doesn't notify you with a clear error — it just stops spending or spends very slowly.
Two configurations cause this most often:
Bid cap set too low. Bid cap bidding tells Meta not to bid above a specified amount per click or result. If competitor demand has pushed the clearing price above your cap, you exit the auction. The symptom: your campaign shows "Active" status but spends less than 30% of daily budget. Fix: remove the bid cap temporarily and run on lowest-cost bidding for 3-5 days. Note what your actual average CPC or CPR is during that period — that's the market price for your audience. Set your bid cap at 20-30% above that number.
Daily budget too low for audience size. There's an effective minimum budget below which Meta's algorithm can't generate enough auction wins to create meaningful delivery. For audiences over 1 million, this is typically €10-15/day minimum. For highly competitive audiences (e-commerce, finance, health), the practical minimum for consistent delivery is higher — €30-50/day. Below these thresholds, the system runs intermittently and produces unreliable data.
You can model the relationship between your budget, target CPA, and expected impression volume using our Facebook Ads Cost Calculator and Ad Budget Planner. These tools help you set bid and budget parameters that are compatible with the current auction environment before you launch, rather than diagnosing underspend after the fact.
For campaign structure decisions that affect how budget flows through the account, see Automated Meta Ads Budget Allocation and the guide on how to deploy Facebook ad campaigns faster without breaking governance.
iOS Attribution and the Signal Gap It Creates
Since Apple's App Tracking Transparency framework rolled out with iOS 14.5 in 2021, a significant portion of conversion signal on Meta has been either lost or replaced with modeled estimates. By 2026, iOS accounts for approximately 27% of global mobile web traffic — and the majority of those users have not granted tracking permission to Meta.
For advertisers, this creates a specific delivery problem: the algorithm is optimizing for a conversion signal that's partially invisible to it. If 30% of your converters are iOS users whose conversions Meta can't see, your ad set may be generating 70 conversions per week in reality but only 49 that Meta's system observes. You appear stuck in Learning Limited when you're actually generating sufficient volume. The algorithm also concentrates delivery toward users whose behavior it can observe — which skews reach toward Android and desktop, narrowing your effective audience even when your targeting settings look broad.
The technical fixes are well-documented: verify your domain in Business Manager, configure the Conversions API (server-side events that don't rely on browser pixels), and prioritize the 8 conversion events Meta allows under Aggregated Event Measurement — purchase, add-to-cart, initiate checkout, lead, complete registration, search, view content, contact.
For a detailed breakdown of how iOS attribution affects campaign optimization signals and what to do about it, see Meta Ads Performance Dip: iOS Attribution Error Diagnosis and the post on Meta ad performance inconsistency.
Campaign Objective Mismatch: Optimizing for the Wrong Signal
Every campaign objective on Meta tells the algorithm what to optimize for. Traffic campaigns optimize for link clicks. Conversion campaigns optimize for your defined conversion event. Lead campaigns optimize for form completions.
The delivery problem from objective mismatch is subtle: the campaign delivers — but to the wrong people for the wrong outcome. You see traffic but no sales. Form fills but no qualified leads. The three most common mismatches:
Traffic objective for a conversion goal. Traffic campaigns find users likely to click links. Those users are not the same as users likely to purchase. Switch to a Conversions campaign with purchase as the event.
Conversions campaign with insufficient event volume. If you're optimizing for purchase but generating fewer than 50 purchases per week, the algorithm can't learn what a converter looks like. Switch temporarily to add-to-cart or initiate checkout to build signal density, then graduate back to purchase.
Reach or brand awareness objectives for direct response goals. Reach campaigns optimize for maximum unique exposure at minimum CPM — useful for awareness, useless for conversion. If your goal is leads or sales, reach campaigns will deliver impressions efficiently to users with no intent. The CPA will look catastrophic because the objective was never calibrated for it.
For creative strategy aligned to objective type, see the Building Data-Driven Creative Testing Hypotheses from Competitor Ad Research guide and the post on AI for Facebook Ads 2026.

The Triage Sequence: Work Through This in Order
Here's the practical diagnostic sequence. Work top-to-bottom. Most delivery problems resolve at step two or three.
Step 1: Check status at every level. Open the campaign, then the ad set, then the individual ad. Confirm none are paused, scheduled, or in review. If any are rejected, note the specific rejection code and address it.
Step 2: Check delivery sub-status. Is the ad set showing "Learning" or "Learning Limited"? Check Events Manager for conversion event volume. If you're below 50 events per week, consolidate ad sets, increase budget, or switch to a higher-frequency optimization event.
Step 3: Check audience size. Look at estimated reach in the ad set settings. Below 50,000 is too narrow for reliable delivery. Below 200,000 is borderline for budgets over €100/day. Remove interest stacking layers one at a time to find where reach drops.
Step 4: Remove bid constraints temporarily. If your campaign has a bid cap or cost cap, remove it and set bidding to Lowest Cost. Run for 48 hours and observe actual spend and CPR. If spend increases immediately, your bid cap was the binding constraint — you now know the market price. Reinstate the bid cap at 20-30% above the observed market CPR.
Step 5: Check landing page and pixel. Go to Events Manager and verify your pixel is firing on the conversion event you're optimizing for. Use Meta's Pixel Helper browser extension to confirm the event fires correctly. A misfiring pixel means the algorithm is optimizing on zero signal.
Step 6: Isolate iOS attribution impact. In Events Manager, check your event match quality score. A score below 6/10 indicates low signal confidence. Implement the Conversions API if you haven't already, and verify your domain — both are 48-hour fixes that don't require campaign pauses.
Step 7: Verify objective alignment. Confirm the campaign objective matches your actual business goal. If it's Traffic and you're measuring CPA, that's a structural mismatch. Create a new campaign with the correct objective — editing the objective on a running campaign resets everything.
For advanced creative testing methodologies that help you relaunch with higher-confidence creative after resolving delivery issues, see the Facebook Ads Creative Testing Bottleneck post and our guide on Facebook Ads Productivity.
Use our CPA Calculator to validate whether your current budget and target CPA are mathematically compatible before restarting a campaign.
Using Competitor Research to Relaunch Stronger
Delivery problems often surface underlying creative weakness. An ad that's technically approved — correct objective, sufficient audience, adequate budget — can still underdeliver if its creative research baseline is weak. Low CTR in the first 1,000 impressions tells Meta to serve the ad less. The algorithm prioritizes ads that earn engagement early.
When rebuilding after a delivery failure, starting from patterns already working in your category is faster than starting from a blank brief. Here's how to use AdLibrary's tools:
1. Find long-running competitor ads. Use Unified Ad Search to filter for ads running more than 30 days. Long-running ads are a proxy for performance — advertisers don't sustain spend on ads that aren't converting. Their hook structures, headline formulas, and visual treatments are your starting inputs.
2. Analyze timeline patterns. Use Ad Timeline Analysis to see which formats competitors test sequentially. If a competitor graduated from static images to video — that timeline tells you which format won. Start where they ended up.
3. Enrich with AI analysis. AdLibrary's AI Ad Enrichment extracts structured insights from competitor creatives — hook type, offer structure, CTA format, visual composition. Brief your team with concrete pattern inputs, not vague direction.
4. Save a relaunch swipe file. Use Saved Ads to curate the competitor ads whose patterns you want to test. Specific references beat abstract descriptions every time.
This workflow maps to the Ad Fatigue Diagnosis Workflow use case and the Creative Strategist Workflow — both built for the diagnosis → research → relaunch sequence. See also Clone Successful Facebook Ad Campaigns for a framework on structured creative borrowing.
Preventing Delivery Problems Before They Start
Most delivery problems are preventable. The teams that rarely deal with non-delivery share two practices:
Budget-to-CPA ratio discipline. They never launch a conversion campaign with a daily budget below 5x their target CPA. This single rule eliminates Learning Limited for the vast majority of campaigns. If you can't afford 5x CPA daily budget, run Traffic until the budget is there.
Audience size floors. They set a minimum estimated reach of 200,000 before launching any ad set. Interest-only targeting for niche categories often can't meet this threshold without broadening. They use Advantage+ Audience or broad targeting for prospecting, and reserve narrow targeting for retargeting where audience quality justifies the smaller pool.
For a structured pre-launch checklist, see the Facebook Ad Account Management guide and the post on how to deploy Facebook ad campaigns faster without breaking governance.
Model your pre-launch parameters using our Ad Spend Estimator to validate that your configuration supports stable delivery before you spend your first euro.
Frequently Asked Questions
Why are my Facebook ads not delivering even though they're approved?
Approved means Meta's review team cleared the creative — it does not guarantee delivery. Common causes: your bid or budget is too low to win auctions, your audience is too narrow (below ~50,000 estimated reach), or your campaign hasn't accumulated the 50 optimization events needed to exit the learning phase. Check the delivery sub-status — "Learning," "Learning Limited," or "Active" tell you which problem to address first.
What does 'Learning Limited' mean on Facebook ads?
"Learning Limited" means your ad set entered the learning phase but can't accumulate the ~50 optimization events per week needed to exit. Common causes: budget below 5x your target CPA per day, audience too narrow for the algorithm to find enough eligible users, or conversion event too rare. Fix by consolidating ad sets, switching to a higher-frequency conversion event (add-to-cart instead of purchase), or broadening targeting.
How does iOS 14+ affect Facebook ad delivery?
iOS 14+ (App Tracking Transparency) reduced the conversion signal volume Meta receives from iOS users. Meta compensates with modeled conversions, but modeled data has lower confidence scores — the algorithm underdelivers when it can't find likely converters with sufficient certainty. Mitigate by verifying your domain in Business Manager, implementing the Conversions API, and prioritizing the 8 conversion events Meta allows under Aggregated Event Measurement.
How do I fix Facebook ads not spending the full budget?
Underspend usually means your bid cap is too low to win auctions at current market prices, your audience is too small to absorb the budget (below ~200,000 estimated reach for budgets over €100/day), or your campaign is in learning phase and pacing conservatively. Diagnose by removing bid caps temporarily and running on Lowest Cost bidding. If spend increases, the bid cap was the constraint. If spend still stalls, broaden your audience.
Should I duplicate or edit an ad set that's not delivering?
Editing resets the learning phase for most changes — budget increases above 20%, audience changes, bid strategy changes. If your ad set has accumulated useful optimization history, make only incremental budget adjustments (under 20%) to preserve learning. If it's already in "Learning Limited" or has never properly delivered, resetting by editing is low-cost — you had no useful history to preserve. Duplicate only when testing a new audience or creative direction, not as a fix for a delivery problem.
Getting Your Campaigns Delivering — and Keeping Them That Way
Facebook ads not delivering is a tractable problem. Every cause in this guide has a specific fix. The teams that get stuck are the ones treating it as one undifferentiated problem — applying generic advice without diagnosing which failure mode they're actually dealing with.
The triage sequence solves that. Status check → learning phase → audience size → bid constraints → pixel → iOS attribution → objective alignment. Most causes surface within the first three steps.
Once delivery is restored, the next constraint is usually creative. An ad that delivers but earns low CTR in its first 1,000 impressions tells Meta to serve it less. The fastest path to better creative is competitor research: knowing what's working in your category before briefing the next iteration.
For that research layer, AdLibrary's Pro plan at €179/mo gives you 300 monthly credits — enough for a serious weekly creative brief cadence informed by what competitors are actually running. If you're managing multi-account operations or need API access to pull competitor data into automated briefing workflows, the Business plan at €329/mo includes full API access and 1,000+ credits per month.
Delivery is the floor. Creative quality is the ceiling. Fix the floor, then raise the ceiling.
Further Reading
Related Articles
Mastering the Meta Ads Learning Phase: Optimization Strategies and Reset Triggers
Stuck in Meta Learning Phase? Learn why it happens, how to calculate the right budget, and proven strategies to exit Learning Limited and stabilize campaigns.

Why Meta ad performance is inconsistent (and what actually fixes it)
Seven root causes of volatile Meta ROAS — each with a detection signal, measurement method, and specific fix. Includes a B2B SaaS worked example.

The Facebook Ads Creative Testing Bottleneck and How to Break It
Break the Facebook ads creative testing bottleneck by separating hypothesis quality from variant volume. Includes cadence rules, production tool stack, and a kill/scale decision tree for Meta campaigns.

AI for Facebook Ads: Targeting, Creative, and Optimization in 2026
Meta's AI systems now control audience discovery, creative delivery, and budget allocation. Here's how Advantage+, broad targeting, and AI creative tools actually work in 2026.

How to deploy Facebook ad campaigns faster without breaking governance
Cut Facebook ad campaign deploy time from hours to minutes with pre-flight checklists, template slots, approval gates, and rollback protocols — without skipping QA.

How to Clone Successful Facebook Ad Campaigns Without Burning Performance
Cloning a Facebook ad campaign kills performance when you copy the creative without the signal context. Learn the internal duplicate workflow, competitor angle extraction, and clone A/B measurement discipline.

Modern Facebook Ads Strategy: Creative-First Campaigns and Algorithmic Scaling
Learn the 2026 approach to Facebook Ads: creative-centric testing, simplified CBO structures, and data-driven scaling logic.