Cost per lead is not cost per acquisition. Here is the arithmetic
Two channels. One has a cost per lead half the other's. The expensive one is more profitable. This happens constantly and the arithmetic that reveals it takes four lines.
The four lines
Every acquisition decision reduces to this chain. Write it out per channel, for one month, using your own numbers.
- Cost per lead = spend ÷ leads
- Cost per contacted lead = cost per lead ÷ contact rate
- Cost per appointment held = cost per contacted lead ÷ (booking rate × show rate)
- Cost per acquisition = cost per appointment held ÷ close rate
Then the only line that decides anything:
Contribution per job = average job value × gross margin − cost per acquisition
Nothing above the last line is a decision. They are diagnostics.
Why the cheap channel loses
Work a purchased shared lead against an owned campaign lead and watch what compounds. The shared lead is cheaper at line 1 and worse at every line after it: lower contact rate because three competitors also called, lower booking rate because the conversation started on price, lower close rate for the same reason.
Four multiplications of a worse number. By line 4 the cheaper lead can easily cost more per signed job — and that is before the discount you gave to win it, which shows up in gross margin, not in cost per acquisition.
That last point is the one that hides losses. A channel that forces you to discount is expensive in a line most reporting never connects to the channel.
Three mistakes that break the calculation
Averaging across channels. A blended cost per acquisition tells you the business is fine while one channel quietly subsidises another. Compute per channel or do not bother.
Using revenue instead of margin. A $12,000 job at 22% margin contributes less than a $6,000 job at 55%. Cost per acquisition compared against revenue will have you scaling the wrong work.
Attributing to the last click. If a homeowner found you organically in March and clicked an ad in May, the ad did not acquire them. Last-click reporting systematically overstates paid and understates the asset you already own.
What to do with the answer
Once you have contribution per job per channel, the decisions get boring, which is the goal.
- Positive and stable? Scale it until it stops being positive. That point exists and you will find it.
- Positive but thin? Do not scale. Fix the worst line in the chain first — usually show rate or contact rate, which are the cheapest to improve.
- Negative? Turn it off, even if cost per lead is your best. Especially if cost per lead is your best.
We are not publishing target figures here, because a target that ignores your average job value and gross margin is astrology. Yours are the only ones that matter.