
Facebook Ads Not Spending? Check Delivery Before Your CBO
Meta ads · Ecommerce
Facebook Ads Not Spending? Check Delivery Before Your CBO
Check eligibility, schedules and budget controls, then distinguish an underfunded ad from a creative with a measured loss.
When Facebook ads are not spending, first establish where delivery stops. An entire campaign spending nothing needs a different check from one ad receiving little budget while its siblings deliver. Look at eligibility, schedule, account limits and bid controls before interpreting the allocation.
Check status before you read a single spend number
Open the delivery status at campaign, ad set and ad level. A campaign marked active does not prove every ad beneath it can run. Read the explanation attached to a limited or blocked status, then check recent impressions and spend for the period you are investigating.
Meta's status labels mean specific things. Error means the entity cannot run. Pending means it is not running yet. Inactive means it is not running. Warning means delivery is limited. Preparing can show up after significant edits. Learning means delivery is still being optimized and results can swing around while it settles.
Use activity history to check who changed budgets, schedules, bids or statuses. It can explain a delivery change without requiring you to guess which person or setting caused it.
The decision tree
Resolve a blocking status before drawing conclusions from spend. Then identify whether the restriction affects the campaign, an ad set or a single ad.
The decision tree
Stage 1: status. Campaign, ad set, ad. Check all three.
Ad status?
- Rejected or Error
- Read the cause, correct it and verify eligibility.
- Paused or Inactive
- Check activity history and confirm whether it should resume.
- Learning
- Allow for instability while keeping the agreed loss limit.
- Active and clean
- Look one level up.
Ad set or campaign status?
- Paused, blocked, or scheduled off
- Check whether the setting is intentional before changing it.
- Spending limit hit or billing issue
- Confirm the account limit or billing restriction with the owner.
- Active and clean
- Go to Stage 2.
Stage 2: the spend path. Only when every status above is clean.
The whole campaign is barely spending?
- Budget changed? Compare its timing with delivery and the planned review window.
- Review cost and ROAS goals against delivery and the business loss allowance.
- Check whether audience restrictions are required for the offer or market.
- Review ad set spend limits and the reason each one was set.
The campaign spends, but one ad set gets almost nothing?
- Check that ad set for its own spend limits and bid controls first.
- If it is eligible, inspect allocation and evidence before judging its performance.
The ad set spends, siblings are spending, one ad gets nothing?
- The ad may lack enough delivery for a conversion judgment.
- Decide whether the concept deserves further testing or replacement.
A blocking status explains why an ad cannot deliver now. Check when it began: an ad rejected after earlier delivery can still have historical spend and purchases to assess.
When the whole campaign underspends
A CBO puts one budget at the campaign level and moves it across the ad sets in real time. When the entire campaign slows down, look at the inputs that shape that distribution.
Check the budget and schedule, then account spending limits and billing restrictions. Review bid controls: an ambitious cost or ROAS goal can restrict delivery, and a cost goal is not a guarantee that each purchase will stay below it. Check audience restrictions and ad set spend limits as well. Change a control only after establishing why it was set and what the change permits the campaign to spend.
The ad is clean, its siblings are spending, and it still gets nothing
If the ad is eligible and its siblings are spending, delivery preference may explain the difference. Meta is choosing among available opportunities. That does not establish how the underfunded ad would convert with more delivery. Record it as insufficiently tested rather than assigning it a measured loss.
The next step depends on the decision. If you are optimizing current campaign output, you may choose to replace an underfunded candidate with another idea. If the business needs evidence about that specific concept, plan a separate comparison with an explicit budget and outcome. Even allocation alone does not make a test randomized.
When an ad receives substantial spend at an acceptable return, review whether more budget still fits the margin and loss limit. Duplication is an allocation option, not a promise that returns will transfer. The CBO testing guide covers batch size and concept selection.
An illustrative review at $300 a day
Say you launched six ads in one CBO at $300 a day. It is day three. Two ads took 85% of the spend at a cost per purchase you can live with. Three took crumbs. One took nothing at all.
In this example, first confirm the ads were eligible for the full period. Read the two spenders against the agreed cost per purchase and allow for conversion lag. Their results provide more evidence than the four ads that received little or no delivery.
For the other four, decide whether the unanswered creative questions justify further testing. Replacing them may be sensible if the next ideas have a stronger rationale, but the report should preserve the distinction between a replacement decision and demonstrated poor conversion.
Use a written spend limit for ads that do receive enough delivery to incur a meaningful loss. The pause guide shows how to connect that limit to margin.
Should I just switch to ABO?
Ad set budgets can be useful when the business needs deliberate allocation between ad sets. They do not guarantee equal delivery among ads or remove audience differences. Choose the budget setup around the comparison or business constraint, then check the broader account structure before moving campaigns.
Meta's own references for the mechanics above: delivery statuses in Ads Manager and viewing your ads activity history.