The two numbers, and why one of them lies
Cost per lead (CPL) is simple: total spend on a channel divided by the number of leads it produced. Spend $2,000, get 40 leads, that is a $50 CPL. Marketplaces and agencies quote you this number because it is small and it makes the invoice look reasonable. It tells you almost nothing about whether you made money.
Cost per job (CPJ) is the honest version: total spend divided by the jobs that spend actually put on the calendar. Same $2,000, and if those 40 leads booked 5 jobs, your cost per job is $400. Change the close rate and the whole picture changes while the CPL sits there looking identical. That is the trap. Two channels can both quote a $50 lead and one of them can quietly cost you three times as much per booked job.
Here is why the gap opens up. A cheap lead is usually a shared lead: the marketplace sold that same homeowner to three or four other contractors at the same time. You are racing to call first, quoting against people who low-ball, and half the numbers are tire-kickers who were never going to sign. The lead was cheap because it was worth less. You do not find that out on the CPL line. You find it out three weeks later when your booked-job count comes in low and you cannot figure out why the month was slow.
There is a second reason owners default to CPL: it is the number the seller controls and shows you. A marketplace can flood you with leads and keep the per-lead price low, and that looks like a win on the dashboard they built. What that dashboard rarely shows is jobs booked, because jobs booked is your number, not theirs, and it is the one that exposes whether the channel earned its keep. Anyone selling you leads has a reason to keep your eyes on the cheap number.
The fix is not complicated. Stop grading channels on the price of a lead. Grade them on what a booked job cost, because that is the number that touches your bank account. Everything else in this guide is just how to calculate that number, anchor it to a real ceiling, and use it to decide where the next marketing dollar goes.
How to actually calculate your cost per job
You need three numbers per channel: what you spent, how many leads came in, and how many of those leads turned into a signed job. Most contractors have the first two and guess at the third. The third is the one that matters, so track it even if you have to write it on a clipboard.
The math is one line: total channel spend divided by jobs booked from that channel. That is it. You can also get there through close rate: CPL divided by your close rate equals CPJ. A $60 lead closed at 25% is a $240 job. A $60 lead closed at 10% is a $600 job. Same lead price, wildly different truth.
| Channel | Spend | Leads | CPL | Close rate | Jobs | Cost per job |
|---|---|---|---|---|---|---|
| Shared marketplace | $2,000 | 40 | $50 | 8% | 3 | $667 |
| Exclusive lead flow | $2,000 | 16 | $125 | 30% | 5 | $400 |
Read that table twice. The expensive lead won. The marketplace fed you more than double the leads and booked fewer jobs, because most of those cheap leads were shared, stale, or shopping four bids. The exclusive channel handed you fewer inquiries that were yours alone and were ready to talk. Fewer leads, more jobs, lower cost per job. That is the whole argument in one row.
One rule keeps this honest: count a job when it signs, not when it gets quoted. Plenty of channels look great until you separate the estimates you gave from the contracts you closed. Tie each booked job back to the lead that started it, and tie that lead back to the channel it came from. If you run a CRM or even a shared spreadsheet, add a single column for lead source and a checkbox for signed. That is enough to compute real cost per job for every channel you buy.
Do this per channel, every month. The moment you can see cost per job side by side, you stop cutting the wrong spend. Most owners kill the channel with the scary-looking lead price and keep the one quietly bleeding them, then wonder why more spend did not mean more jobs. The dollars did not disappear; they went to booking jobs at two or three times what the other channel charged.
Anchor the number to job value, not to a budget
A cost per job means nothing in a vacuum. $400 to book a job is a steal for a roof and a disaster for a $180 drain snake. The only way to know if your CPJ is healthy is to hang it next to two things: your average ticket and your gross margin.
Run it as a percentage of the job. If your average job is $9,000 and it costs $400 to book, marketing is eating about 4.4% of the ticket. That is comfortable for most trades. If your average job is $600 and it costs $400 to book, marketing is eating two-thirds of the ticket and you are working for the marketplace, not for yourself.
Different trades live at different ratios, and that is normal. Rough anchors from what we see across trades:
- Roofing, HVAC replacement, remodels: big tickets, so a higher cost per job still lands at a small share of revenue. A few hundred dollars a booked job is often fine.
- Plumbing and electrical service calls: smaller tickets and repeat customers, so cost per job has to stay tight or the first job runs at a loss you only recover on the second visit.
- Recurring or lower-ticket trades: lawn care, pest, cleaning, where you almost never win on the first job and have to price the lead against lifetime value, not the first invoice.
Watch the margin, not just the ticket, because a big number can hide a thin job. A $20,000 remodel with 15% gross margin has $3,000 to cover overhead and profit. If you spent $1,200 to book it, marketing ate 40% of your margin even though it looks tiny against the ticket. Two owners with the same average job can afford very different cost per job depending on what they actually keep. Do the percentage against margin when you can; against ticket when that is all you have handy.
The point is not the exact percentage. The point is that you decide the ceiling before you buy anything. Pick the share of an average job you are willing to spend to book it, work backward to a target cost per job, and then only keep channels that come in under it. Now you have a rule instead of a gut feeling, and you can say no to a channel with numbers instead of vibes. When a marketplace rep pushes you to buy more volume, you have an answer: show me the cost per job under my ceiling, or we are done.
Why cheap shared leads inflate your real cost
Shared leads look cheap on the invoice and expensive on the job board, and it is worth naming exactly where the money leaks so you can see it coming.
First, the same lead went to three or four contractors. You are one of several phones ringing on that homeowner's screen. Even if you are fast and good, you win a fraction of them, so your close rate craters and your cost per job climbs. Second, price-shoppers cluster on marketplaces because comparison is the whole point of the platform, which drags your quotes down and squeezes the margin on the jobs you do win. Third, a chunk of shared leads are stale, mis-typed, or never serious, and you burn labor chasing them. That chase is real cost even though it never shows up as a line item.
Add it up and the picture flips. Watch how a cheap lead becomes an expensive job:
| What you see | What it actually costs you |
|---|---|
| $45 lead price | Fine on paper |
| Sold to 4 contractors | Close rate drops to ~7% |
| Homeowner collecting bids | You cut price to win |
| ~7% close on $45 leads | ~$640 cost per booked job |
There is a fourth leak nobody prices: the margin you give up to win a shared lead. When a homeowner is holding four quotes, the way you win is often to shave the number. So even the jobs you book off cheap leads come in at a thinner margin than the jobs you book off a lead that came to you directly and never shopped anyone else. Now the channel is expensive twice: high cost per job and low margin on the jobs it does produce. That double hit is why the CPL number is so misleading, and why so many owners feel busy and broke at the same time.
None of that leak is visible if you only look at the $45. It is fully visible the second you divide spend by booked jobs. This is the core reason the exclusive-lead argument holds up: a lead that is yours alone, from someone actively searching for your trade, closes at a rate that makes even a higher lead price cheaper per job, and closes at a healthier margin because you are not in a four-way price fight. Fewer, better, owned by you. That is a lead economics decision, and it is the one this whole silo is built around.
Close rate is the lever most owners ignore
Cost per job has two inputs: what a lead costs and how often you close it. Owners obsess over the first and treat the second like it is fixed. It is not fixed, and it is the cheaper lever to move. Doubling your close rate cuts your cost per job in half without spending another dollar on leads.
The biggest close-rate killer in the trades is speed. A lead that gets a call back in five minutes closes at a dramatically higher rate than the same lead called back in an hour, and by the next day it is mostly dead, especially on shared leads where three other contractors already called. If your leads sit in a voicemail while your crew is on a roof, you are paying full price for leads and closing them at a discount. That is speed-to-lead, and it belongs in this conversation because it directly sets your cost per job.
Practical moves that pull cost per job down without touching your ad spend:
- Answer or call back inside five minutes. A booking system, a real answering setup, or a text-back beats a missed call every time.
- Text, do not just call. Homeowners screen calls; a text often gets a reply when a call goes to voicemail.
- Track close rate by channel. The channel with the best close rate usually has the lowest cost per job even when its lead price looks high.
- Stop quoting the shoppers. If a lead is comparing four bids, price it accordingly or pass. Chasing them tanks your close rate and your average ticket.
Quoting discipline is the other half. Every lead you chase that was never going to sign drags your close rate down and pushes your cost per job up, because that wasted time is real cost. Get better at spotting the serious buyer early, ask the qualifying questions before you drive out, and let the pure shoppers go. A slightly lower lead volume with a much higher close rate almost always beats the reverse. You are not trying to talk to everyone; you are trying to book jobs at a cost per job you can live with.
You will move cost per job further by fixing how fast you respond than by hunting for a lead five dollars cheaper. The lead price is set by the market. The close rate is set by you. That is the good news buried in this whole comparison: the number that matters most is the one input you fully control.
What a healthy cost per job looks like month to month
Once you are tracking cost per job by channel, the job stops being calculation and starts being management. You are looking for three things every month.
One: is any channel above your ceiling? You set a target cost per job from your average ticket and margin. Any channel over that line is a candidate to cut or fix. Do not cut on lead price. Cut on cost per job.
Two: is close rate drifting? If cost per job is climbing but lead prices held steady, the problem is not the channel, it is your response speed or your quoting. Fix the intake before you blame the leads.
Three: which channel would you feed more? The one with the lowest cost per job that can give you more volume is where the next marketing dollar goes. That is usually not the cheapest lead. It is usually the exclusive one you own outright.
A word on time frames, because contractors get burned here. Some channels bill you today and book you today, like buying shared leads. Others cost less per job over time but take months to turn on, like ranking for your trade in your city or showing up when someone asks an AI assistant who to call. Those owned channels usually settle at the lowest cost per job you will ever see, because once you rank you are not paying per lead at all, but the meaningful terms take 4 to 9 months to move. Judge fast channels on this month's cost per job and slow channels on where they are heading, not on week one. We have run this math for local service businesses since 2008, and the owners who win are the ones who stopped grading marketing on the price of a phone call and started grading it on the price of a booked job.