How to Measure Marketing ROI for a Home Service Business (Cost Per Lead vs Cost Per Job)
Ask a home service owner how much they spend on marketing and most can give you a number. Five thousand a month, maybe more in the busy season. Ask them which of that spend actually makes money and the room goes quiet.
They know the total. They do not know which channel pays for itself, which one quietly loses money every month, and which one they should double. The Google ads, the Local Services Ads, the lead-gen site, the yard signs, the referral thank-you cards, the email blast to past customers - it all comes out of one bank account and goes into one fog. At the end of the month there is revenue, and there is spend, and no clean line connecting the two.
This post is the framework for drawing that line. It is the metrics that actually tell you whether a channel makes money, why the most-quoted metric (cost per lead) lies to you if you stop there, the simplest attribution a small shop can actually run, and how to compare channels honestly so you can move budget toward what works.
A note on the numbers in this post. Where we cite a real benchmark, we name the source and the year. Every other number, every close rate and job value and ROI figure, is clearly labeled illustrative and built to be replaced with your own. Marketing ROI is one place the internet is especially full of confident, made-up multiples. We are not going to hand you another one. We are going to hand you the math.
Why cost per lead lies if you stop there
Cost per lead is the number every ad platform shows you, because it is the number that makes the platform look good. It is also the most misleading number in home services marketing, because two channels with the identical cost per lead can have wildly different actual cost.
The thing cost per lead ignores is what happens after the lead arrives. A lead is not a job. A lead is a phone call or a form fill. Between that lead and money in the bank sit two filters most owners never measure:
- Answer rate. Did you actually pick up or call back? A lead you never answered cost you exactly as much as one you did, and returned exactly nothing.
- Close rate. Of the leads you did reach, how many became booked, paid work?
Run two channels through those filters and watch what happens to a number that looked identical on the ad dashboard.
| Channel A | Channel B | |
|---|---|---|
| Cost per lead | $90 | $90 |
| Leads this month | 50 | 50 |
| Total spend | $4,500 | $4,500 |
| Answer rate | 95% | 70% |
| Leads actually reached | 48 | 35 |
| Close rate on reached leads | 40% | 20% |
| Booked jobs | 19 | 7 |
| Cost per booked job | about $237 | about $643 |
Illustrative figures. Replace every input with your own.
Same cost per lead. Same monthly spend. One channel books jobs for roughly $237 each and the other for $643 each, a difference of nearly 3x, and none of it shows up if you only look at cost per lead. Channel B is not a worse source of leads. It might be the exact same Google ad. The difference here is answer rate and close rate, which are partly the channel and partly you.
That is the whole trap. Cost per lead measures the ad. Cost per job measures the business. If you only ever look at cost per lead, you will happily keep funding the channel on the right, because the dashboard tells you it is just as cheap as the one on the left.
Why answer rate belongs in this math. Industry call data suggests roughly 24 to 27 percent of calls to home services businesses go unanswered (Invoca and 411 Locals). Every one of those unanswered calls was a lead you paid for, at an average of $90.92 on search ads per LocaliQ’s 2025 benchmarks. A missed call does not just lose a job. It silently inflates the cost per job of every channel feeding your phone, because you paid for the lead and got nothing back.
The metrics that actually matter
You do not need a dashboard with forty numbers. You need five, defined simply, tracked per channel.
1. Cost per lead (CPL)
What you pay to generate one lead from a channel. Total channel spend divided by leads from that channel. Useful as a starting point, dangerous as an ending point.
2. Lead-to-job close rate
Of the leads from a channel, what share become booked, paid jobs. This is the filter cost per lead ignores. Measure it per channel, because a referral and a cold directory lead do not close at the same rate.
3. Cost per job (also called cost per acquisition)
What you pay, on average, for each booked job from a channel. The formula is simple:
Cost per job = cost per lead / close rate
A $90 lead at a 25% close rate costs $360 per job. The same $90 lead at a 50% close rate costs $180 per job. This is the number that tells you whether a channel makes money. Compare it to your average job value and you have your answer.
4. Average job value
Your typical revenue per booked job from that channel. It matters per channel because channels attract different work. A Local Services Ad might bring in repair calls, while a referral might bring in a full system replacement. A higher cost per job can be perfectly healthy if that channel books bigger jobs.
5. Repeat value (one-time job vs repeat customer)
This is the one most owners forget, and it changes everything. A channel that brings you a one-time emergency call who never returns is worth less than a channel that brings you a customer who books you every year. You do not need a fancy lifetime-value model. Just tag whether a source tends to produce repeat customers, and weight it accordingly when you compare.
Do not quote yourself a lifetime value you cannot defend. There is no credible industry benchmark for what an HVAC or plumbing customer is “worth” over their life. The numbers floating around (a precise dollar lifetime value, a “5 to 25 times” retention multiple) are vendor estimates repeated until they sound official. Measure repeat value on your own data: of customers from this channel, how many booked a second job within two years? That number is real. The borrowed multiple is not.
Put these together and ROI stops being a fog. For any channel: leads in, close rate applied, cost per job out, compared against average job value, adjusted for whether those customers come back. Five numbers, one channel at a time.
Simple attribution a small shop can actually do
Here is the objection every owner raises: “I can’t track all that. I’m running calls, not a spreadsheet.” Fair. So here is attribution that fits a small shop, in order of effort. You do not need all of it. You need the first one, today.
Ask “how did you hear about us?”
The oldest method and still the most underused. Ask every single caller, and write the answer in your CRM next to the job. That is it. It is imperfect (people forget, people say “Google” when they mean your referral) but over a few months it gives you a rough, free map of where work comes from. The discipline is asking every time and actually recording it, not guessing at month-end.
Use call tracking with a unique number per channel
The upgrade. Get a separate tracked phone number for each channel: one on your Google ads, one on your Google Business Profile, one on your truck wraps, one on your referral cards. When the phone rings, the system already knows which channel sent it, no asking required. Cheap call-tracking services do this for a few dollars a number per month, and it turns “I think Google works” into “Google booked 11 jobs last month at this cost.”
Tie the source to booked revenue, not just to the lead
This is the step that separates owners who know their ROI from owners who just know their lead counts. It is not enough to know a channel produced 50 leads. You have to follow those 50 leads to how many booked and how much they were worth. That means recording the source on the job, not just on the lead, so when you pull revenue at month-end you can split it by where it came from.
The minimum viable attribution. One column in your CRM called “source,” filled in for every job, every time. That single discipline, done consistently for ninety days, will tell you more about your marketing ROI than any analytics dashboard. Everything else in this section is an upgrade on that one habit.
Comparing channels honestly
Once every job has a source and a value, you can line your channels up and compare them on the same terms. Each channel has a different cost basis and a different thing you need to track. Here is the honest version.
| Channel | Typical cost basis | What to track |
|---|---|---|
| Google Search Ads | Cost per click, averaging to a cost per lead | CPL, close rate, cost per job. LocaliQ 2025 puts the home services CPL average at $90.92, roofing near $228. |
| Local Services Ads (LSA) | Pay per lead, Google-screened | Cost per lead, but watch close rate closely. LSA charges for leads that may not be qualified, so dispute bad ones. |
| Lead-gen / directory sites | Pay per shared lead | Close rate above all. Shared leads go to several contractors, so answer rate and speed decide everything. |
| Referrals | Near-zero direct cost (maybe a thank-you or reward) | Volume and close rate. Referrals usually close higher because trust is pre-loaded. Tag them or you will undercount. |
| Your existing customer list | Effectively zero ad spend | Booked revenue per campaign. This is almost always your lowest cost per job. |
The pattern you will almost always find: paid channels have a real, recurring cost per job, and your existing list has a cost per job that rounds to nothing. A reactivation message to past customers, or a follow-up to old leads who never booked, costs a few minutes of setup and zero dollars in ad spend. Those people already know you, which means a higher close rate and a lower cost per job than any cold channel can touch.
The cheapest channel is the one you already paid for. You spent money acquiring every past customer and every old lead in your database. Reaching them again is free. That makes your existing list the highest-ROI channel you have, and it is the one almost nobody measures, because it never shows up on an ad dashboard. We made the full case in how home service businesses grow revenue from customers they already have.
How answering faster changes your ROI
Notice that nothing in this framework requires more ad spend to improve. Two of the five metrics, answer rate and close rate, are about what you do with leads after they arrive, and both respond hard to one lever: speed.
The most replicated finding in sales research is the speed-to-lead curve. The Lead Response Management Study, run by Dr. James Oldroyd at MIT, found that moving first response from 5 minutes to 30 minutes dropped the odds of qualifying a lead by roughly 21x. A 2011 Harvard Business Review audit of 2,241 US companies found 23% never responded to a web lead at all, with a median first response time of about 42 hours.
Read that against the ROI math above. Close rate sits in the denominator of cost per job. Double your close rate and you halve your cost per job, across every channel at once, with zero extra ad spend. Speed is the cheapest close-rate improvement available, and most shops are leaving it on the floor.
The same goes for answer rate. With 24 to 27% of home services calls going unanswered, the single highest-ROI marketing move for many shops is not a new channel. It is answering, or texting back, the leads they already pay to generate.
You cannot out-spend a leaky bucket. If your close rate is low because you answer slowly, buying more leads just pours more water into the same leaky bucket at $90.92 a lead. Fix answer rate and close rate first. They improve the ROI of every channel you run, for free. We cover the mechanics in the 5-minute rule and the phone-specific fix in missed call text-back.
The Bottom Line
You cannot improve what you cannot measure, and most home service owners cannot measure their marketing because they stop at cost per lead. Cost per lead measures the ad. The business gets measured by cost per job, and cost per job is cost per lead divided by your close rate, weighted by average job value and whether those customers come back.
The good news is the whole framework runs on five numbers and one habit: a source on every job, every time. Do that for ninety days, follow each source through to booked revenue, and the fog clears. You will see which channel quietly loses money, which one to double, and the one almost everyone ignores: the list you already paid to build, with a cost per job that rounds to zero.
Ready to see which marketing actually makes money?
Try Marqeable: marqeable.com
Marqeable connects to your CRM, catches inbound SMS replies in a Conversations inbox so no paid-for lead goes unanswered, and runs the reactivation and follow-up campaigns to your existing list that carry the lowest cost per job you have. It is the difference between guessing which channel works and knowing.
Related Resources
How Home Service Businesses Grow Revenue From Customers They Already Have
Why your existing list is the cheapest channel you own, and how to run the repeat-revenue math on your own database.
The 5-Minute Rule: Why Lead Response Time Is the #1 Predictor of Closing the Deal
The speed-to-lead data, and why faster answers lower your cost per job across every channel at once.
Missed Call Text-Back for Home Services
The fix for the 1-in-4 calls you currently miss, the leak that inflates the cost per job of every channel feeding your phone.
Local Services Ads and Google Business Profile for Contractors
How to track and judge LSA and Google Business Profile leads on cost per job, not just cost per lead.
Marketing Automations for Home Service Companies
The automations that lift answer rate, close rate, and repeat value, the three levers that move ROI without more ad spend.
Frequently Asked Questions
What is a good cost per lead for home services?
It depends on your trade and your average job value, so there is no single right number. For a benchmark, LocaliQ’s 2025 home services search advertising data puts the average cost per lead at $90.92, rising to about $228 per lead for roofing. But cost per lead alone tells you almost nothing. A $90 lead you close half the time is far cheaper per job than a $40 lead you close one time in ten. Judge a channel by cost per booked job, not cost per lead.
What is the difference between cost per lead and cost per job?
Cost per lead is what you pay to make the phone ring or the form submit. Cost per job is what you pay, on average, for each lead that actually becomes booked work. Cost per job equals your cost per lead divided by your close rate. A $90 lead at a 25 percent close rate costs $360 per job. The same $90 lead at a 50 percent close rate costs $180 per job. Cost per job is the number that tells you whether a channel makes money.
How do I track where my leads come from?
Start with the simplest method that works: ask every caller how they heard about you and write the answer in your CRM next to the job. Layer on call tracking with a unique phone number per channel so you can see which ads, which directory listings, and which referrals actually drive calls. The goal is to attach a source to every lead, then tie that source to booked revenue so you can compare channels on cost per job.
What is the cheapest marketing channel for a home service business?
Your existing customer list. Reaching a past customer or an old lead costs nothing in ad spend, they already trust you, and they are far easier to book than a cold lead. A reactivation text to people who paid you last year has effectively zero cost per lead, which makes its cost per job lower than any paid channel by a wide margin. Most owners overspend on new leads while ignoring the list they already paid to build.
About Marqeable
Marqeable is your AI marketing agent. It connects to your CRM, creates on-brand campaigns across email, SMS, and social, and catches inbound SMS replies through a Conversations inbox so the leads and customers you already paid to generate never fall through the cracks.
