It's Friday at noon. You turned on a new campaign at 8 this morning so it would catch the weekend. Four hours later: 0 impressions, $0.00 spent, and a delivery status that says something vague. Your shop is ready, the offer is good, and nobody is seeing it. A case of Meta ads not delivering almost always has a specific reason, and Ads Manager usually tells you if you know where to look. This guide gives you a calm, ordered checklist: what the status means, the ten usual causes, what to check in the first hour, how to fix each one and how to avoid it next time.
In short: Read the delivery status at all three levels (campaign, ad set, ad) and hover over it for the reason. Then check, in order: something switched off, ads in review or rejected, schedule and end dates, billing and spending limits, account restrictions, audience size, budget, bid limits, ad quality and overlap between your own ad sets. Fix one thing, then give it a few hours.
What "not delivering" means
Delivery is Meta showing your ads to people. When a campaign isn't delivering, it isn't entering the auction at all, or it's entering and losing every time. Ads Manager shows the state in the Delivery column, and Meta's help page on viewing delivery status lists every status. The ones you'll meet most:
| Status | What it means | What to do |
|---|---|---|
| Active | Running normally | Nothing; check results after a few days |
| Learning | New or recently edited; results still settling | Avoid edits for now |
| Learning limited | Not getting enough results to finish learning | Wider audience, bigger budget or an earlier optimization event |
| In review | Waiting for Meta's ad review | Wait; check it if it lasts more than a day |
| Rejected | Broke an advertising policy | Edit or request another review |
| Not delivering | On, but not running for a reason shown on hover | Read the reason; see the causes below |
| Off / Ad set off / Campaign off | Switched off at this or a higher level | Switch on the right level |
| Scheduled / Completed | Start date in the future, or end date passed | Fix the dates |
Two tips that save time: look at the status on every level (a campaign can be "on" while its only ad set is off), and hover over the status text, where Ads Manager often shows the exact reason.

The 10 usual causes, in the order to check them
1. Something is switched off
The most common cause, and the fastest fix. A campaign on, an ad set off; an ad set on, every ad off. Switch on each level you meant to run.
2. Ads in review or rejected
New and edited ads go through review. Most are reviewed within a day; until then, nothing delivers. If an ad is rejected, see our checklist for when a Meta ad is rejected.
3. Schedule and end dates
A start date set for next week, an end date that already passed, or a lifetime budget already spent. Open the ad set's budget and schedule section and check the dates and time zone.
4. Billing problems
A failed payment, an amount due or a missing payment method pauses delivery for the whole ad account. Look in Billing & payments. If you see a failed charge, follow what to do when a Meta ads payment fails.
5. Spending limits
An account spending limit you set months ago and forgot, or a campaign spending limit, stops ads the moment it's reached. In Billing & payments you can see the account spending limit and how much is left; raise it, remove it or reset it.
6. A restricted account, Page or profile
If the ad account, the Page or your own profile is restricted from advertising, nothing runs. A banner usually says so. See Meta ad account restricted.
7. Audience too small
A retargeting audience of a few hundred people, a narrow interest in a small city, or too many exclusions can leave too few people to show ads to. Ads Manager shows an estimated audience size in the ad set; if it's tiny, widen the location, age or interests, or let Meta expand the audience. Our guide to Meta ads audience targeting helps you find the balance.
8. Budget too low for what you ask
A $3 daily budget optimizing for purchases of a $300 product will barely move. If the budget can't buy enough results for the system to learn, delivery stays slow and often shows Learning limited. Meta's page about learning limited lists the usual fixes. Our guide on how much to spend on Meta ads shows how to size a budget.
9. Bid or cost limits set too low
If you set a bid cap or a cost per result goal below what the auction asks, your ads lose most auctions and barely spend. Raise the limit, or switch to the default strategy (highest volume) while you learn what results really cost.
10. Weak ads or ad sets competing with each other
Ads that people scroll past or hide get shown less. And several of your own ad sets targeting the same people can compete in the same auctions, so some barely deliver. Combine similar ad sets and refresh weak creative.
The first hour: a quick sequence
- Read the status on all three levels and hover for the reason. Write it down.
- Billing & payments: amount due, failed payment, account spending limit.
- Account status: any restriction banner in Ads Manager or Business Support Home.
- Review: any ad in review for more than a day, or rejected.
- Ad set settings: schedule, budget, optimization event, bid strategy, audience size.
- Make one change, the one that matches the reason. Then wait a few hours before the next one: every edit can send the ad set back into review or learning.
If everything looks right and it still shows zero after a day, duplicate nothing yet. Check Meta's guide to troubleshooting ad delivery, then consider whether the budget, audience and goal are realistic together.

Worked example: a small bakery
Say a bakery runs a campaign to sell holiday cake pre-orders at $45, with a $5 daily budget, a 3 km radius around the shop, ages 35-44, and an audience of people who visited the website in the last 30 days. The ad set is optimized for purchases with a cost per result goal of $4. Two days later: 47 impressions, $0.31 spent.
What's wrong: the audience is tiny (website visitors × 3 km × one age band), the $5 budget can't buy enough purchases to learn, and the $4 cost goal is far below what a $45 order realistically costs. The fixes, one by one:
- Widen to 10 km and ages 25-65, and drop the website-visitor filter for a prospecting ad set.
- Remove the cost per result goal for now and use the default bidding.
- Raise the budget to an amount the bakery can afford for a week, and accept that early results will be uneven.
(Numbers are hypothetical. Results depend on the product, the offer and the area.)
Prevent "not delivering" next time
- Before launch, check the four basics: everything switched on, dates right, payment method valid, spending limit high enough for the campaign.
- Keep a backup payment method on the ad account.
- Size the audience before you narrow it: start broader and let results tell you where to focus.
- Match budget to goal: the more expensive the result, the larger the budget it needs.
- Avoid bid caps until you know your real cost per result.
- Launch early, a day or two before the date that matters, so review and learning don't eat your sale.
- Check delivery every day during launches, and every week otherwise.

How Meta Ads Copilot Max helps
Meta Ads Copilot Max is a Chrome add-on (a Tampermonkey script plus a web app at adscopilotmax.com) that reads your campaigns and flags delivery problems in plain words. Its Budget is not spending alert fires when a campaign spent far less than its budget over 7 days, with the advice to check for ads in review, an audience that is too small or a billing issue. In review by Meta tells you when an ad has been waiting, and Ad rejected when one was refused. If you connect the Spend tab with a read-only Meta token, it also shows your account spending limit and how much is left, alerts you when the limit is almost reached, and reads the ad account's status, so a failed payment or a restriction doesn't go unnoticed.
To apply a fix, tick the alert and press Fix with Claude: Copilot writes the steps and the Claude in Chrome extension (required) does the clicking in your browser. It asks before anything is published or spends money, and it never touches billing, payment methods or passwords. Start your free 7-day trial.
Frequently asked questions
Why are my Meta ads active but not spending?
Usually because the audience is too small, a bid or cost limit is too low, a spending limit was reached, or the ads are still in review. Hover over the delivery status at the ad set and ad level to see the exact reason, then check billing and the ad set's settings.
How long does it take for a new Meta ad to start delivering?
Once it passes review, delivery often starts within minutes to a few hours. Review itself usually takes less than a day. If an ad has been approved and switched on for a day with no impressions, something in the checklist above is blocking it.
What does "Learning limited" mean?
The ad set isn't getting enough results to finish the learning phase, usually because of a small audience, a low budget, a low bid limit or an optimization event that happens rarely. It still delivers, but less efficiently. See our guide to the Meta ads learning phase.
Does a low budget stop Meta ads from delivering?
A very low budget rarely stops delivery completely, but it can make it slow and uneven, especially when you optimize for purchases. If the budget can't buy enough results for the system to learn, consider a larger budget or an earlier step in the funnel.
Should I duplicate an ad set that isn't delivering?
Not as a first step. Duplicating doesn't fix a billing problem, a tiny audience or a low bid limit, and it can create ad sets that compete with each other. Find the reason first, fix it, and duplicate only if you have a clear reason to start fresh.



