Costs, budgets and ROI
How to measure SEO ROI in booked jobs
SEO ROI for a contractor comes down to one question: did search put more profit in the bank than it cost? Here is the formula, a worked example with made-up numbers you can swap for your own, and the four mistakes that make the math lie.
Short answer: SEO ROI = (gross profit from the extra jobs search booked, minus what SEO cost) divided by what SEO cost. Count booked jobs, not clicks. Use gross profit, not revenue. Subtract the jobs you would have won anyway. Then judge it over 12 months, because SEO starts slow and compounds.
Most SEO ROI numbers you see are inflated. They divide revenue by spend, count every call as a new customer, and take credit for jobs your truck wraps and referrals would have booked anyway. That kind of math makes any agency look good and tells you nothing. This guide shows you how to calculate SEO return on investment the way you would judge a new truck or a new tech: in profit, against what it cost.
If you haven’t decided whether to invest in SEO at all, start with is SEO worth it, which covers the break-even test before you spend a dollar. If you want the full list of numbers to watch every month, see the SEO KPIs that matter. This page is the step in between: once SEO is running, how do you prove what it earned?
The SEO ROI formula for home service businesses
Here is the version we use, written for a contractor instead of an online store:
SEO ROI (%) = (incremental booked jobs x gross profit per job, minus total SEO cost) / total SEO cost x 100
Every piece of that line matters:
- Incremental booked jobs. New-customer jobs from Google search and the map that you were not getting before. Not calls. Not leads. Jobs on the schedule.
- Gross profit per job. The ticket minus parts, materials and the tech’s labor. A $1,200 ticket that costs you $660 to run is worth $540, not $1,200.
- Total SEO cost. The agency fee plus anything else the work needed: content, website fixes, call tracking, and your own time if it’s real.
A worked example (hypothetical numbers)
The figures below are invented to show the math. They are not a client result, a forecast for your business, or our pricing. Swap in your own numbers.
Say you run an HVAC company in Garland. Your average repair or install ticket is $1,200 and your gross margin is 45%, so each job leaves you $540. Say you spend $3,000 a month on SEO. A year in, your call tracking shows this for one month:
| Step | Example number | Why it matters |
|---|---|---|
| Calls and forms tagged to organic and Maps | 60 | The raw count most reports stop at |
| Real new-customer leads (no spam, no existing customers, no wrong services) | 30 | Half of search calls are often not new business |
| Booked at a 40% close rate | 12 jobs | Your CSRs’ close rate is part of ROI |
| New-customer jobs from search before SEO started | 5 jobs | Your baseline: you were getting these anyway |
| Incremental jobs | 7 jobs | What SEO actually added |
| Gross profit from those jobs (7 x $540) | $3,780 | The return |
| SEO ROI ((3,780 – 3,000) / 3,000) | 26% | The honest number |
Now look at what happens if you do the math the lazy way. Twelve jobs at $1,200 is $14,400 in revenue. Divide by $3,000 and you get a “380% ROI.” Same month, same phones, a number almost fifteen times bigger. That is how agency case studies get written. It is also why owners stop trusting SEO reports.
The honest 26% still means search paid for itself and added profit. And it leaves out the part that makes SEO worth doing.
Add customer lifetime value
A new HVAC customer rarely buys once. They call back for the next repair, sign up for a maintenance plan, and send a neighbor. Say each new customer is worth another $600 in gross profit over the following three years. Now each job is worth $1,140, the month’s seven incremental jobs are worth $7,980, and ROI is about 166%. Use your own repeat rate from your CRM. If you don’t know it, leave lifetime value out and treat it as upside.
Why SEO ROI looks bad in month three and good in month twelve
SEO is not a light switch. You pay the same fee in month one as in month twelve, but rankings and calls build over time. Here is the same hypothetical HVAC company across its first year, using first-ticket gross profit only:
| Quarter | Incremental jobs | Cumulative spend | Cumulative gross profit |
|---|---|---|---|
| Months 1 to 3 | 3 | $9,000 | $1,620 |
| Months 4 to 6 | 9 | $18,000 | $6,480 |
| Months 7 to 9 | 18 | $27,000 | $16,200 |
| Months 10 to 12 | 21 | $36,000 | $27,540 |
On first tickets alone, year one ends about 24% under water. Add the $600 lifetime value per customer and those 51 jobs are worth $58,140, a year-one ROI of roughly 62%. And month twelve is already running at a profit, which is where year two starts. That is the shape of most SEO investments: a slow start, then a curve that keeps paying while the fee stays flat.
Two lessons for owners. First, don’t judge SEO ROI on one quarter. Our guide on how long SEO takes explains why the Maps 3-pack (the three businesses Google shows on the map) usually moves before organic rankings. Second, if ROI is still negative after a fair window and booked jobs aren’t climbing, that’s a real signal. Ask why.
Is SEO profitable? It depends on four of your numbers
The example works because the inputs are reasonable for HVAC. Change them and the answer changes fast:
- Ticket size and margin. A roofer with a large replacement ticket may need one extra job a month to turn a profit. A cleaning company needs many more, which makes repeat value critical.
- Close rate. If your office books 25% of search calls instead of 40%, ROI drops by more than a third. Sometimes the cheapest ROI fix is call handling, not more SEO.
- Baseline. A shop already strong on the map has less room to add jobs than one that’s invisible.
- Capacity. Extra calls you can’t run don’t count. Unbooked jobs have zero ROI.
How to track SEO return on investment without guessing
Most home service leads call, so SEO ROI lives or dies on phone tracking. You need three things in place before the numbers mean anything:
- A tracking number for search. Use a dedicated number on your Google Business Profile and dynamic numbers on your website so calls from organic, Maps, ads and your truck wraps don’t blur together. A common setup keeps your main number listed as the additional phone on the profile so your listings stay consistent. Our call tracking and reporting service sets this up.
- A booked-job tag. Every search call gets marked as booked, not booked, existing customer or spam. Your field software or CRM should hold the job value.
- A baseline month. Record new-customer jobs from search before the work starts. Without a baseline you can’t separate what SEO added from what you already had.
Google’s own tools help but don’t finish the job. The Business Profile performance view shows calls, website clicks and direction requests, and Search Console shows clicks and queries. Neither knows which calls became jobs. That last step has to come from your call recordings and your schedule.
What we report, and what we don’t promise
We report SEO ROI in booked jobs, cost per booked job and gross profit when you share job values with us. We don’t promise a percentage, because nobody can honestly promise one before seeing your market. What we can show is the track record of Digital Ducats, the company behind this site: CD Roofing & Construction cut its cost per lead by 42%, and Crown Industrial Roofing grew organic revenue 89% year over year. Those are not Dallas results, and they are measured differently from the ROI formula above, but both were measured in leads and revenue, not impressions.
Want the math run on your real numbers? Contact us and we’ll build your break-even and 12-month ROI model on a discovery call. More guides on costs and budgets live in our local SEO resources.
Questions about SEO ROI
What is a good SEO ROI for a contractor?
There’s no reliable public benchmark for home services, so be wary of anyone quoting one. A better test: compare your cost per booked job from SEO with your cost per booked job from Local Service Ads, Google Ads or lead sites. If SEO is cheaper per job and still improving, it’s earning its place, even if the first-year percentage looks modest.
Is SEO profitable for small home service businesses?
It can be, when ticket size, close rate and repeat value are healthy and you have room for more work. A one-truck shop with small tickets needs more jobs to break even, so reviews and a strong Google Business Profile usually come first. Run the formula on this page with your own numbers before you sign anything.
How long before SEO shows a positive return?
Expect the first few months to cost more than they return. Map rankings can move in weeks, while organic rankings build over months. Judge SEO return on investment on a rolling 12-month view, and watch whether incremental booked jobs climb quarter over quarter. Flat jobs after a fair window is a warning sign.
Should I measure SEO ROI on revenue or profit?
Profit. Revenue-based ROI ignores parts, labor and fuel, so it can make a break-even channel look like a goldmine. Use gross profit per job, subtract the jobs you were already getting from search, and count only booked work. Add customer lifetime value separately so you can see both numbers.