Cost per lead vs cost per acquisition: which one to optimize for
Cost per lead is what Meta charges to fill your form, cost per acquisition is what a customer actually costs, and the share of leads that close is what separates the two. Optimize for the deepest event your account can produce about fifty times a week, which is Meta's own learning benchmark, and judge every campaign on cost per acquisition no matter which event it optimizes for.
Two campaigns can spend the same money and end up with different economics. One buys leads at $12 that never become customers. The other buys leads at $40 and pays for itself. Cost per lead cannot tell those two apart, because it stops counting at the form. Here is the arithmetic that can.
What sits between cost per lead and cost per acquisition
Cost per lead is spend divided by leads. Cost per acquisition is spend divided by customers. One ratio separates them: the share of leads that turn into sales. Write that ratio down and each number converts into the other.
Cost per acquisition equals cost per lead divided by your close rate. At an 8% close rate, a $12 lead is a $150 customer. At a 35% close rate, a $40 lead is a $114 customer. The cheaper lead is the more expensive customer, and nothing inside the ad account will tell you so.
| Cost per lead | Close rate | Cost per acquisition |
|---|---|---|
| $12 | 5% | $240 |
| $12 | 15% | $80 |
| $40 | 20% | $200 |
| $40 | 35% | $114 |
| $65 | 60% | $108 |
The table is arithmetic. The only thing worth arguing about is which close rate belongs next to which campaign, and that is worth measuring rather than assuming: a broad audience with a one-field form and a narrower audience with a qualifying question rarely land at the same point, and only your own numbers say how far apart they are.
Close rate is the one input Meta never sees. It lives in your CRM, your inbox or your calendar. Until someone writes it down, cost per lead is the only number you have, and it is the wrong one to steer by.
Lead quality is a number, not a feeling
"The leads were bad" is the usual verdict when a campaign disappoints. It becomes useful the moment it has a denominator. Lead quality is the share of leads that survive each step of your funnel, and every step already has a count sitting somewhere.
- –Reachable: they answered the call, the email or the message.
- –Qualified: they are in your service area, in your price range, and want what you actually sell.
- –Booked: they took the appointment, the demo or the estimate.
- –Closed: they paid.
Count those four numbers per campaign, not per account, over thirty days. The account average blends the campaign that brings buyers with the one that brings people who clicked because the ad looked like a giveaway, and the blend reads as acceptable while half of it loses money.
The shape of the drop tells you where to work. If leads answer but almost none qualify, the targeting or the offer is pulling in the wrong person. If they qualify but do not book, the problem has moved past the ad and into your follow-up, and no bid change will fix it.
Where the payback threshold comes from
The ceiling on what a customer may cost is not a preference, it comes out of your margin. Start with gross margin per sale rather than revenue, because revenue still has to pay for the product.
Break-even cost per acquisition equals gross margin per sale: spend more than that and the campaign buys customers at a loss. Target cost per acquisition equals that margin divided by the return you want on ad spend, counted in margin rather than revenue. Multiply the target by your close rate and you get the cost per lead that matches it.
| Input | Example | Where the number comes from |
|---|---|---|
| Average order value | $420 | Paid orders, last 90 days |
| Cost to deliver that order | $170 | Product, labor, payment fees |
| Gross margin per sale | $250 | Order value minus cost |
| Break-even cost per acquisition | $250 | Equal to the margin |
| Target cost per acquisition at 3x | $83 | Margin divided by 3 |
| Matching cost per lead at a 20% close rate | $16.60 | Target CPA times close rate |
That last row is the one worth pinning above the desk. "A good cost per lead" means nothing on its own. In this example $16.60 means something, because it is the point where the campaign pays for itself at the return you chose.
Repeat purchases usually get left out of this math, and then the ceiling feels impossibly low. If a typical customer comes back, the margin you can spend against is the margin across their orders, not the first one. Use a figure you can defend from your own records.
When to switch the campaign to purchases
Optimizing for purchases is not automatically better. It is better only when the algorithm receives enough purchase events to learn from. The benchmark Meta gives is about fifty optimization events per ad set per week, and a purchase campaign starved below that spends the budget exploring instead of converting. So the practical question is not which event is deeper, it is which deep event your account can feed.
- –Purchases nowhere near fifty a week: optimize for leads. There is not enough purchase data for anything else. Cost per acquisition is still your report card here, it is just not your bid target.
- –Purchases climbing toward fifty but not reliably there: optimize for a middle event, a qualified lead or a booked appointment, and send that event back to Meta. It fires often enough to learn from and tracks a sale more closely than a raw form fill does.
- –Purchases steadily above fifty per ad set: optimize for purchases, and pass the order value so the algorithm can chase value instead of count.
The middle step is the easiest one to skip. A qualified lead is a different event from a lead, and the difference between them is exactly the noise you would otherwise leave the algorithm to sort out.
Meta can only optimize for events it can see
All of this depends on the sale getting back to the ad account, and often it does not. The pixel fires in the customer's browser, and browsers have spent years closing that door: iOS asks permission to track, Safari shortens how long the data survives, ad blockers strip the tag out. The events that matter most often happen where no browser is present at all: a phone call, a text thread, or your CRM three days later.
Sending events from your server instead of the browser is what Meta's Conversions API is for. Your system reports what happened, using identifiers the customer already gave you, hashed before they leave.
- –The qualified lead, at the moment your team marks it qualified
- –The booked appointment or the accepted estimate
- –The purchase, with its value and currency
- –An event ID that matches the pixel event, so one conversion is not counted twice
Two things change once those events arrive. The gap between what the ad account reports and what your own records show gets smaller, and the algorithm has buyers to learn from instead of form fills. The second one is the reason to do it even if you never open a report. In Aevin the CRM stage is the trigger: when a lead moves to a stage flagged qualified or won, the event goes to Meta from the server, with the deal value attached on a sale.
How to switch without wasting the first two weeks
Changing the optimization event is a significant edit. The campaign drops back into the learning phase, and cost per lead swings while it does. That is expected, and it is why the switch is worth planning rather than doing on a Friday afternoon.
- 1.Check that the new event is already firing and has history. Switching to an event Meta has never received is a cold start stacked on a cold start.
- 2.Change one thing. Switch the event and leave budget, audience and creatives alone, so the next two weeks have a single explanation.
- 3.Wait out the learning window. If the budget moved by more than a fifth at the same time, treat the next several days as data without conclusions.
- 4.Compare on cost per acquisition, not cost per lead. Cost per lead usually rises after the switch, and that is not the failure: more per lead and less per customer is the trade you are buying.
If cost per acquisition has not improved after two clean weeks, switch back. The deeper event costs volume, and there are accounts where volume is worth more than precision. That decision stays reversible only while you are still measuring it.
Should I optimize for leads or purchases on Meta?
Optimize for the deepest event your account can produce about fifty times a week per ad set, which is Meta's own benchmark for getting through the learning phase. If purchases are rarer than that, optimize for leads or for a qualified lead event, and still judge the campaign on cost per acquisition.
Why is my cost per lead low but my cost per acquisition high?
Because cost per lead stops counting at the form. A broad audience and a low-friction form produce cheap leads, and how many of them qualify is a separate question that only your CRM answers. Divide cost per lead by your close rate to get cost per acquisition: at an 8% close rate, a $12 lead is a $150 customer.
How do I calculate the maximum I can pay for a customer?
Start from gross margin per sale, which is average order value minus what it costs to deliver. That margin is your break-even cost per acquisition. Divide it by the return you want on ad spend to get a target, then multiply the target by your close rate to get the cost per lead that matches it.
Do I need the Conversions API to optimize for purchases?
You need Meta to receive the purchase event reliably, and the browser pixel loses a share of them to tracking limits and ad blockers. Sales that close on a call, in a message thread or in your CRM never touch a browser at all, so sending from the server is the only way they reach the ad account.
- How to read Facebook Ads Manager: seven numbers that matter, three that misleadWhich Facebook Ads Manager columns carry signal: spend, reach, frequency, link CTR, CPM and cost per result, plus three columns that mislead when read alone.
- Why your cost per lead keeps rising on Meta, and what to do about itFive reasons cost per lead rises on Meta Ads: creative fatigue, a narrow audience, broken tracking, seasonality and competition. How to tell them apart.
- How much budget you need for Meta ads to get your first leadsHow to calculate a starting Meta Ads budget from cost per lead and the learning threshold. The formula, a worked example and common launch mistakes.
