Zero-conversion spend on Meta usually traces to three causes in order: the ad set is stuck in learning (50 optimization events per 7 days), frequency has passed 3.0, or attribution lag is hiding results. Open Events Manager first. A broken event beats every other explanation.
Three to seven days of spend with nothing in the conversions column is the most common panic email in media buying, and it is almost never a single failure. It is a chain. The learning phase masks real performance, saturation kills the results the learning phase was waiting for, and attribution lag means the dashboard is showing you yesterday's truth. Diagnose in that order because each fix costs money. Rebuilding an audience when your pixel event stopped firing on 11 September burns another week of budget for nothing.
The number that catches people out is 50. An ad set leaves the learning phase after 50 optimization events inside a 7-day window, and if it collects fewer, it does not graduate slowly. It sits in learning indefinitely, and Meta labels it Learning Limited. A $2,000 monthly budget with a $40 cost per purchase assumption needs roughly 50 purchases a week to exit. Most small accounts never get there, which is why switching the optimization event from Purchase to Add to Cart or a qualified lead is often the honest move.
Zero conversions after three full days of spend is different. That is not learning. That is a broken event, a wrong conversion domain, or a goal set to something Meta cannot see. Install the Pixel Helper extension, fire a test purchase, and watch Events Manager. If nothing lands, stop the campaign before you spend another dollar diagnosing the wrong layer.
- Learning phase rule: An ad set exits learning after 50 optimization events in a 7-day window; below that it stays in learning and gets flagged Learning Limited.
- Zero after 3 days: No conversions in 72 hours with active spend points to a broken pixel or Conversions API event, not to normal learning.
- Saturation threshold: Frequency above 3.0 in a 7-day window signals audience fatigue; expect CPMs to climb and CTR to fall from there.
- Attribution lag: Meta's default window is 7-day click and 1-day view, and Ads Manager backfills click data in 1-4 hours and view-through data in up to 24 hours.
- Debug tool: The Meta Pixel Helper Chrome extension logs fired events on your own site, which is the fastest way to confirm the Purchase event is actually reaching Meta.
Is your campaign actually broken, or are you just in the learning phase?
Meta's learning phase is mechanical, not mystical. An ad set needs 50 optimization events inside a rolling 7-day window before the delivery system stops experimenting and starts spending against a stable prediction. Until it clears that bar, Meta is deliberately showing your ad to a wider, messier slice of your audience to figure out who converts. If you set your optimization event to Purchase and you are getting two purchases a week, you will never exit. The ad set just keeps testing, and your CPMs keep paying for that test. Open Meta Ads Manager, go to the Ad Sets tab, and add the Delivery column. You will see one of three states: Learning, Learning Limited, or Active. Learning Limited is Meta's polite way of saying the ad set received fewer than 50 events in the past week; that label appears in Ads Manager and it will not resolve on its own no matter how long you wait.
Here is where small budgets get trapped. On a $1,000 monthly spend, a $30 daily ad set optimizing for Purchase needs a conversion rate near 4% just to generate the 50 events. Most ecommerce accounts sit between 1% and 2.5%. The math simply does not close. Switch the optimization event to Add to Cart or Initiate Checkout, which typically run 3-6x the volume of Purchase, and the ad set can exit learning in two or three days. You are teaching Meta something slightly upstream of revenue, and that is a reasonable trade when the alternative is never learning anything at all. The image quality of your creative is irrelevant if the ad set is stuck in a permanent experiment.
The diagnostic that separates "still learning" from "broken"
Zero events after 72 hours with a working budget is not learning. It is a broken signal. Pull up Events Manager and check the last received timestamp on your Meta Pixel; if it is older than a few hours on a live site, the pixel is not firing. Then check whether the event you are optimizing for actually matches what the pixel sends. A common failure: the ad set optimizes for Purchase, but the pixel only fires AddToCart because the developer never added the purchase event to the thank-you page. Events Manager will show the traffic, so nothing looks wrong until you notice the event name mismatch. Meta Pixel Helper in Chrome catches this in about ninety seconds. If you have a Conversions API (CAPI) integration through Facebook Business Manager, verify it separately, because a stalled server-side feed can drop events even while the browser pixel reports fine.
One more thing worth checking before you blame the algorithm: the attribution window. The default is 7-day click and 1-day view, and view-through conversions can take up to 24 hours to appear in Ads Manager. Click conversions refresh every 1-4 hours. If you launched yesterday and checked the report this morning, you may be looking at a campaign that has already converted and simply has not been credited yet. That is not a fix, it is patience. But it is a real cause of the panic that leads people to duplicate ad sets, reset the learning phase, and spend another $200 proving nothing.
How to check if your Meta Pixel and Conversions API are firing correctly
Run this before you touch audiences, budgets or creatives. It applies to any ad set that has spent real money for three or more consecutive days and logged zero conversions in Events Manager, and it takes about twenty minutes. You need admin access to the pixel in Facebook Business Manager, a Chrome or Edge desktop browser, and the ability to load your own checkout or thank-you page without firing a live transaction—use a test product, a coupon, or a staging URL.
- Open Events Manager and look at the Overview tab before anything else. Select the correct pixel (business owners often have two after an agency change) and set the date range to the last 7 days. You are looking for three things: the green "Active" dot, a non-zero "Browser" column, and a non-zero "Server" column beside your purchase or lead event. If you see Browser events but the Server column is flat zero, your Conversions API is not connected. That alone can halve your reported conversions. This step takes two minutes.
- Install the Meta Pixel Helper Chrome extension and load your site. Walk the exact path a buyer takes: landing page, product page, add to cart, checkout, confirmation. The extension's icon shows a number when events fire; click it to see each event name and its parameters. Two failures show up here constantly. The Purchase event fires on page load rather than on the confirmation page, so it counts every abandoned cart as a sale—or it never fires at all because the confirmation URL changed when you updated your store last month.
- Check that your key event is the one Meta is actually optimizing for. In Ads Manager, open the ad set and read the Optimization Event field. A surprising number of zero-conversion accounts are optimizing for "Landing Page Views" while the owner expects purchases. That is not broken tracking, it is the wrong objective, and no amount of waiting will fix it. Change the event and publish—this resets the learning phase, which is why you confirm it now and not after another week of spend.
- Use the Test Events tool inside Events Manager. It gives you a live URL; open that URL in a second tab, then complete your test conversion. Events appear in the Test Events feed within seconds, tagged as browser or server, with the parameters Meta received. This is the only way to see an event arrive in real time rather than waiting on the 1-4 hour Ads Manager refresh for click conversions. Budget ten minutes. If a purchase does not appear here, it is not appearing for Meta at all, and your entire campaign is flying on engagement signals.
- Confirm your Conversions API is sending the same events as the pixel. In Events Manager, open Settings, then Conversions API, and check that the connection status reads active and that the event names on the server side match your browser events exactly—capitalization included, since "Purchase" and "purchase" deduplicate differently than you would expect. Meta's preferred setup is a redundant pair: browser pixel plus server-side CAPI, deduplicated by event ID. If you are running the pixel alone, you are losing an estimated 15-30% of conversions to ad blockers, iOS Safari restrictions and cookie-consent refusals.
- Read the Event Match Quality score for your purchase event. It sits on a 1-to-10 scale in Events Manager, and anything below 6.0 means Meta is struggling to attach the conversion to a user. Send hashed email and phone number as parameters to push it up. This is also where you catch the silent killer: an event firing with no value or currency parameter, which Meta accepts and records, but which breaks value-based bidding and makes your ROAS column in Ads Reporting read as blank.
- Cross-check the numbers against your own backend. Pull yesterday's orders from Shopify, WooCommerce or Stripe and compare the count against Events Manager for the same day. A gap of a few percent is normal and expected. A gap of 40% or more means events are genuinely missing, and the usual culprit is a checkout on a subdomain that never inherited the pixel, or a third-party payment processor that redirects off-site and returns the buyer to a page with no tracking code.
- Allow one full day before you judge the fix. Click-based conversions refresh in Ads Manager every 1-4 hours, but view-through conversions under the default 7-day click and 1-day view attribution window can take up to 24 hours to appear. If you changed the optimization event, the ad set restarts the learning phase and needs 50 optimization events within 7 days to exit it. Do not change anything else during that window.
The failure mode is subtler than a dead pixel. Most accounts that reach this point have some events firing—enough to keep the ad set active and enough to look plausible at a glance—while the one event that matters is either missing its parameters, attributed to the wrong event name, or blocked on the mobile checkout path where 70% of your traffic actually converts. Meta's algorithm cannot optimize for an event it never receives, and it will happily spend your full daily budget learning nothing. That is why the learning phase is not a valid excuse for zero conversions after 3 days. Fifty events in 7 days is the threshold for exiting learning; zero events in 3 days is not a slow start, it is a broken pipe. Fix the event, let it run 24 hours, and only then start asking whether the audience or the creative is the problem.
What does audience saturation look like in your metrics?
Saturation is the second cause in the sequence, and you only get to look for it after the pixel check has passed. Like the learning phase, it has a signature: the same people see your ad over and over, they stop clicking, and Meta charges you more for each impression because the auction for that shrinking pool gets competitive. In Ads Manager, open Ads Reporting and add three columns — Frequency, CPM, and CTR (all links) — then set the date range to 7 days and break it down by ad set. Pull the same three columns for the prior 7 days so you have something to compare against.
The numbers below are illustrative but the thresholds are not: they come from Meta's own guidance and from the WordStream (2022) and AdEspresso (2021) frequency studies.
| 7-day frequency | CPM (USD) | CTR (all) | Spend (7 days) | Conversions | Status |
|---|---|---|---|---|---|
| 1.4 | $11.20 | 1.80% | $420 | 9 | Healthy — room to scale |
| 2.1 | $13.80 | 1.55% | $680 | 6 | Still working, watch |
| 3.4 | $18.90 | 0.95% | $950 | 2 | Saturating — act |
| 4.2 | $24.50 | 0.70% | $1,240 | 0 | Saturated |
| 6.8 | $31.00 | 0.35% | $1,780 | 0 | Burned out — pause and rebuild |
Row 3 is the decision point. At a frequency of 3.4 with CPM up roughly 55% over the 7-day baseline and CTR down roughly 47%, you are paying more to reach fewer new people, and the correct move depends on which constraint you can lift cheapest. If your audience is small — say a 2% lookalike or a tight interest stack under 500,000 people — widen it first: switch to a 1-3% lookalike from purchasers, or add a broad 18-65 targeting layer, and expect frequency to fall back under 2.0 within 3-5 days. If your audience is already broad, the cheaper fix is creative: swap in 3-5 new ad variants, because Meta's delivery system will rotate them for you and CTR usually recovers 20-30% in the first week. The one case where neither applies is when you have been running the same retargeting audience for months and almost everyone in it has already bought — then exclude past purchasers (Events Manager > Audiences > your purchaser event, 180-day window) and the remaining pool will be small enough that you should expect a higher CPA, not a lower one.
Attribution lag: why your conversions might show up tomorrow
Meta does not report conversions in the moment they happen. The default attribution window is 7-day click and 1-day view, which means a purchase is credited to your ad up to seven days after someone clicks it and up to a day after someone merely sees it. If your campaign has been running three or four days, a real chunk of its conversions have not been assigned yet. Ads Manager refreshes click-based conversions roughly every 1–4 hours, so a click conversion from this morning usually appears by mid-afternoon. View-through conversions are slower: Meta allows up to 24 hours before a 1-day view conversion lands in the reporting column.
To separate genuine zero from reporting zero, open Events Manager and look at the real-time event activity for your pixel and Conversions API integration, then compare it to what Ads Manager shows for the same action. If Events Manager is receiving 12 Purchase events since yesterday and Ads Manager reports 4, you have attribution lag, not a broken funnel. Check this before you touch budgets, audiences, or creative.
What lag does to your decisions
Lag is not a reason to wait forever. View-through conversions are capped at 24 hours, so anything a view produced should be visible by tomorrow morning. Click conversions attributed beyond three or four days are rare for most small accounts; if your 7-day click number for a campaign that launched last Tuesday is still exactly zero while Events Manager shows hundreds of Add to Cart and Initiate Checkout events, the problem is downstream of Meta. Something on your site is dropping the purchase event.
The honest trade-off: if you cut spend or pause the ad set today, you kill the clicks that would have been attributed tomorrow and the day after. For a $1,000–$10,000 monthly account, giving it 48 hours from the first real click to read the 7-day click column costs you perhaps $60–$300 in spend — cheaper than restarting the learning phase from scratch. That rule only holds when Events Manager shows the events arriving. If it does not, stop spending and go back to the pixel check.
The 3-step diagnostic order to isolate the real cause
The order matters more than the checks themselves. A broken Conversions API event and a genuinely saturated audience both produce the same headline symptom — money leaving the account, zero in the conversions column — and if you start by rebuilding audiences you will spend another week and another $400 learning nothing. Work down this list. Stop at the first step that fails.
- Open Events Manager and compare event counts to actual outcomes. Go to Events Manager, select your Meta Pixel, and check the "Overview" tab for the last 7 days. You want to see your purchase or lead event firing a plausible number of times — not zero, not a number wildly out of line with what your Shopify, Stripe or CRM dashboard shows. If the pixel shows 12 purchases and your back end shows 12, tracking is fine and you move on. If the pixel shows 0 while your shop shows 12, the problem is the pixel or CAPI, full stop, and no amount of audience work will fix it. Cross-check with the Meta Pixel Helper browser extension on your own checkout flow before you touch anything else.
- Confirm the event is the one your ad set is optimising for. A surprisingly common failure: the pixel fires Purchase correctly, but the ad set is optimised for Add to Cart or Initiate Checkout, and those events were never properly mapped. Ads Manager will show spend and delivery while the optimisation event count sits near zero. Fix the event mapping in the ad set before drawing any other conclusion.
- Check learning status and the 7-day event count together. In the ad set column view, look at the "Learning" column. Meta's stated threshold for exiting the learning phase is 50 optimisation events within 7 days of the ad set's last significant edit — not 50 clicks, not 50 sessions. "Learning Limited" appears when an ad set is getting fewer than 50 events per week and Meta has effectively given up on finding a stable delivery pattern. A $2,000/month budget on a $40 product usually cannot generate 50 purchases in 7 days; that is a structural problem, not a pixel bug, and the honest fix is a higher-value optimisation event or a larger budget.
- Read frequency before you read anything else in the delivery column. Add the Frequency metric to your Ads Reporting columns and set the date range to the last 7 days. Industry benchmarks flag saturation above roughly 3.0, and WordStream's 2022 analysis put CPM inflation at 20–50% once frequency passes that line. At 4.0, AdEspresso's 2021 data showed average CTR falling by about half. If you are at 3.5 with a $60 CPM and zero conversions, the creative has run out of people to talk to — that is an audience and creative problem, and rebuilding the pixel will not help.
- Check the attribution window before you panic. Meta's default is 7-day click and 1-day view, and view-through conversions can take up to 24 hours to appear in Ads Manager. Click conversions refresh every 1–4 hours, so a same-day sale may not show until the next morning. Change the Attribution Setting column to compare 1-day click against 7-day click. If 1-day click shows zero but 7-day click shows conversions, your buyers are simply slower than your reporting cadence, and your real problem is patience, not the campaign.
- Only now look at audience size and creative age. If the first five checks are clean — events firing, learning active or exited, frequency under 3, attribution window confirmed — then you are looking at an audience that is either too small, too broad, or too familiar. Check the estimated audience size in the ad set; anything under roughly 200,000 in a single-country targeting set will saturate fast at $1,000+ per month. Then check when the creative last changed. A static image or single video running for 30+ days without rotation is usually the last domino to fall, not the first.
The step people get wrong is step three, because they treat "learning phase" as an open-ended excuse. It is not. The learning phase is a real delivery state, but it has a ceiling: if a campaign has spent meaningfully for three days and produced zero optimisation events, the event setup is broken or the optimisation event is unreachable at your budget — and calling that "still learning" is how accounts burn $3,000 before anyone opens Events Manager. Fifty events in seven days is the number. Below it, you have a tracking or structural problem wearing a learning-phase costume.
Common mistakes that make you think your campaign is broken
The most expensive mistake is checking Ads Manager at hour nine and killing the ad set. Meta's delivery system needs 50 optimization events inside a 7-day window to exit the learning phase, and it spends the first day or two exploring who responds. A $2,000/month account running a $65 daily budget will often see zero purchases on day one and two purchases on day four, because the algorithm is still testing placements and audiences. If you restart the campaign every morning, you reset that clock to zero and pay for the exploration again. Give any new ad set three full days before you touch budget, creative, or targeting.
The second misdiagnosis is optimizing for an event that your account cannot generate enough of. Selecting "Purchase" as the optimization goal on an account that gets four sales a week means you will never reach 50 events, and Meta will stamp the ad set Learning Limited — fewer than 50 events per week — while still spending your budget on the broadest, cheapest impressions it can find. Switch the optimization event to something with real volume (Add to Cart, Initiate Checkout, or a qualified lead) and let the pixel feed purchase data back as a secondary signal. You can still report on purchases; you just stop asking the algorithm to optimize for a number it sees once a day.
Where the numbers you are staring at are lying to you
Attribution settings cause a third wave of false alarms. The default window is 7-day click and 1-day view, and view-through conversions can take up to 24 hours to appear in Ads Manager, while click conversions refresh every 1-4 hours. Someone who saw your ad on their phone at lunch and bought on a laptop that evening may not show up until tomorrow morning — or may be credited to a different channel entirely if your attribution window is set too tight. Before you blame the Meta Pixel, open Events Manager and check the attribution setting on the ad set, then cross-reference Ads Reporting against your actual Shopify or Stripe revenue for the same dates. If the money is in your bank account and not in Ads Manager, you have an attribution reporting gap, not a broken campaign.
Two more habits waste real budget. Killing creative before it has 1,000 impressions, then declaring the audience dead because CTR looks flat. And ignoring the Frequency metric until it drifts past 3.0, at which point CPM has already climbed 20-50% and CTR can fall by half — by then you have paid the saturation tax for a week. Check frequency every Monday, not every day.
When should you kill the campaign or scale it?
Once you know which of the three causes you are dealing with, the next move is mechanical. Broken tracking is the only case where you stop everything: pause the ad set, fix the Pixel or Conversions API in Events Manager, confirm with Meta Pixel Helper that the purchase or lead event fires on the thank-you page, then relaunch. Do not "let it run while you fix it." You are paying for data you cannot use, and on a $3,000 monthly budget that is roughly $100 a day buying nothing. Restart clean.
Learning Limited is a spend decision, not a patience decision. If Ads Manager shows Learning Limited and your ad set is pulling fewer than 50 optimization events a week, you have two levers and should pull both: consolidate 3-4 narrow ad sets into one broader ad set so the events pool toward the 50-in-7-days threshold, and switch the optimization event to something higher in the funnel — Initiate Checkout instead of Purchase, or Lead instead of a downstream qualified-lead event you invented. Fewer ad sets, easier event, faster exit. Scaling here is the wrong instinct; adding budget to an ad set that cannot clear 50 events just raises your CPM against the same small pool.
Saturation calls for the opposite response. If your 7-day frequency is above 3.0 and your CPM is climbing 20-50% while CTR has fallen by half, the audience is spent — more budget accelerates the decay. Refresh creative first (new hook, new first three seconds, new format), and only then widen the audience. On a $1,000-10,000 account, most saturation is a creative problem wearing an audience costume; test the new asset against the same targeting before you loosen it, or you will never know which one fixed it.
Attribution lag is the one case where the correct action is no action. With the default 7-day click and 1-day view window, view-through conversions can take up to 24 hours to land in Ads Manager, and click conversions refresh every 1-4 hours, so a campaign you checked at 9am can look dead and read fine by tomorrow. Give it 72 hours from your last meaningful change before you judge it. If the numbers have not moved at all in three days with real spend, it was never lag — go back to step one.
Frequently Asked Questions
Why is my Meta ads campaign spending money but getting no conversions?
Nine times out of ten it is one of four things: a broken or blocked pixel, an ad set still inside the learning phase, audience saturation, or attribution lag. Open Events Manager before you touch anything else. If events are firing, check frequency, then leave the campaign alone for 48 hours before judging it.
How long does the learning phase last on Facebook ads?
An ad set stays in the learning phase until it records 50 optimization events within a 7-day window. With adequate budget and a reasonably sized audience that usually takes 3 to 7 days. Below roughly 50 events per week it will not exit at all, and Meta will flag the ad set as Learning Limited instead.
What frequency is too high on Facebook ads?
A frequency above 3.0 in a 7-day window signals saturation: the same people are seeing your ad three or more times and have stopped responding. At that point, expand the audience or replace the creative. Frequency between 1.5 and 2.5 is normal for most cold prospecting campaigns.
Does Meta Ads Manager show conversions immediately?
No. Click-through conversions typically take 1 to 4 hours to appear in Ads Manager, and view-through conversions can take up to 24 hours because they are matched against the 1-day view attribution window. A campaign reporting zero conversions in its first few hours is often just waiting on attribution.
How do I know if my Meta Pixel is working?
Install the Meta Pixel Helper extension in Chrome and load your site: it shows each pixel found, the events fired, and any errors. In Events Manager, check that your events show recent activity and look at Event Match Quality. A score below 6.0 on a Purchase event usually means you are sending too few customer parameters.
Why does my Facebook ad set say 'Learning Limited'?
Learning Limited means the ad set is not generating enough optimization events to exit the learning phase — fewer than 50 per week. The usual causes are a daily budget too low to buy that many conversions, or an audience too narrow to serve them. Raise the budget, broaden the audience, or optimize for a higher-funnel event.