GUIDE · LEAD GENERATION

Cost Per Lead vs Cost Per Job: The Number You Should Actually Track

Cost per lead is the price on the marketplace invoice. Cost per job is what a booked job on the calendar actually cost you. Only one of them pays the bills, and it is not the cheap-looking one.

Be Seen, Contractors!9 min readUpdated 2026

The short answer

Track cost per job, not cost per lead. Cost per lead is what you pay to get a phone to ring. Cost per job is that same spend divided by the jobs you actually booked from it, and it is the only number that lines up against your average ticket and your margin. A $45 lead is worthless if it takes 20 of them to book one job; that is a $900 cost per job. A $110 lead that books one in four is $440 a job. The cheaper lead cost you more than double. Run the business on cost per job.

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.

ChannelSpendLeadsCPLClose rateJobsCost per job
Shared marketplace$2,00040$508%3$667
Exclusive lead flow$2,00016$12530%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 seeWhat it actually costs you
$45 lead priceFine on paper
Sold to 4 contractorsClose rate drops to ~7%
Homeowner collecting bidsYou 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:

  1. Answer or call back inside five minutes. A booking system, a real answering setup, or a text-back beats a missed call every time.
  2. Text, do not just call. Homeowners screen calls; a text often gets a reply when a call goes to voicemail.
  3. 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.
  4. 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.

Key takeaways

  • Cost per lead is the invoice; cost per job is the truth. Run the business on cost per job.
  • Cost per job = total spend / jobs booked. Or CPL divided by close rate.
  • A cheap shared lead can cost more per job than an exclusive lead priced twice as high.
  • Anchor cost per job to your average ticket and margin, then set a ceiling and hold it.
  • Doubling close rate halves cost per job with zero extra ad spend; speed-to-lead is the lever.
  • Grade fast channels on this month's cost per job; grade owned channels on where they are heading.

STRAIGHT ANSWERS

Quick answers.

01What is a good cost per job for a contractor?

There is no single number because it depends on your ticket and margin. Run it as a percentage of an average job: single digits of the ticket is comfortable for big-ticket trades like roofing or HVAC replacement, while low-ticket service calls need cost per job kept tight. Set your own ceiling from your margin, then only keep channels that come in under it.

02How do I calculate cost per job if I do not track close rate?

Start tracking it, even on a clipboard. For one month, tag every lead by channel and mark which ones signed. Then divide each channel's spend by the jobs it booked. Until you have that, you are guessing, and the guess almost always favors the cheap lead that is quietly costing you the most.

03Why does a more expensive lead sometimes cost less per job?

Because close rate does the heavy lifting. An exclusive lead that is yours alone, from someone actively searching for your trade, closes far more often than a shared lead sold to four contractors at once. Higher lead price times a much higher close rate can land at a lower cost per job. The lead price is only half the equation.

04Should I stop buying shared leads entirely?

Not necessarily, but run them on cost per job, not lead price, and answer them in under five minutes or do not bother. Many owners find shared leads pencil out fine as a supplement while they build owned channels that book jobs at a lower cost per job over time. The mistake is treating a cheap lead price as proof the channel is working.

WANT THIS HANDLED FOR YOU?

Want to know your real cost per job?

We will map your channels against booked jobs, not lead prices, and show you where a dollar buys the cheapest job. Book a strategy call or grab a free visibility audit.

Start With the Free Audit
Call (407) 705-2452 Text