You’ve paid for SEO for six months. Rankings look better and traffic is up, but when someone asks “Is it actually making us money?”, you don’t have a clear answer. That’s a problem, because SEO without a number attached is the first budget that gets cut.
This guide shows you how to measure SEO ROI for a service business, where most sales happen on the phone or in person, not in an online checkout. You’ll get the formula, a worked example and the tracking you need to trust the result.
Quick answer: To measure SEO ROI, subtract your SEO cost from the revenue that organic search brought in, then divide by the SEO cost and multiply by 100. For service businesses, estimate revenue from tracked organic leads multiplied by your close rate and average job value, and include phone calls and Google Business Profile leads.
How to Measure SEO ROI: The Formula
The formula is simple:
SEO ROI = (Revenue from SEO − Cost of SEO) ÷ Cost of SEO × 100
If SEO brought in $30,000 of revenue and cost you $6,000, your ROI is (30,000 − 6,000) ÷ 6,000 × 100 = 400%.
The hard part of learning how to measure SEO ROI isn’t the math. It’s getting honest numbers for both sides of the equation.
Step 1: Add Up the Full Cost of SEO
Include everything you spend on organic search over the period you’re measuring:
- agency, freelancer or in-house staff costs
- content writing and design
- SEO tools and software
- website development work done for SEO
- your own time, if it’s significant
Don’t leave out costs to make the number look better. An inflated ROI helps nobody when you’re deciding next year’s budget.
Step 2: Track Every Organic Lead
You can’t measure SEO ROI if you can’t count the leads. For a service business, leads come from several places:
| Lead source | How to track it |
|---|---|
| Contact and quote forms | A GA4 key event, such as generate_lead |
| Clicks on your phone number | A GA4 event on tel: link clicks |
| Phone calls from your website | Call tracking with a dynamic number for organic visitors |
| Google Business Profile calls and website clicks | The Business Profile performance report |
| Bookings and live chat | Events from your booking or chat tool |
In GA4, filter your key events to the Organic Search channel. For Google Business Profile, the performance report shows calls, website clicks and direction requests. Count profile calls separately, because they don’t pass through your website.
If your forms and calls aren’t tracked yet, that’s the first job. My analytics and tracking setup covers GA4 key events, form tracking and call tracking.
Step 3: Turn Leads Into Revenue
Most service businesses don’t sell online, so you need to estimate what a lead is worth. You need two numbers from your own records:
- Close rate: the share of leads that become paying customers.
- Average job value: the average revenue from one customer.
Then:
Value per lead = close rate × average job value
If you win 25% of leads and your average job is $2,400, each lead is worth $600. Add that value to your generate_lead key event in GA4, and your reports will show estimated revenue automatically.
Use Lifetime Value When Customers Come Back
For dentists, cleaning companies, security firms and financial advisers, one customer often pays for years. In those cases, use customer lifetime value instead of the first job. A cleaning client worth $300 a month for two years is a $7,200 customer, not a $300 one.
Better: Track Real Sales in Your CRM
Estimates are fine to start with. The best setup records the lead source in your CRM, then marks which leads actually became customers and for how much. After a few months, you can replace the estimate with real revenue from organic leads.
Step 4: A Worked Example
Here’s how to measure SEO ROI for an example roofing company over 12 months:
| Item | Number |
|---|---|
| SEO cost for 12 months | $12,000 |
| Organic form and call leads | 180 |
| Close rate | 20% |
| New customers from SEO | 36 |
| Average job value | $4,500 |
| Revenue from SEO | $162,000 |
| SEO ROI | 1,250% |
This is an illustration, not a promise, and your numbers will differ. You may also want to use gross profit instead of revenue, because a roofer doesn’t keep the full $4,500. With a 30% margin, the profit is $48,600 and the ROI is 305%, which is a more honest figure.
Step 5: Separate Brand From Non-Brand Traffic
People who search your company name would probably have found you anyway. If you count all their leads as SEO results, your ROI looks better than it really is.
In Search Console, filter queries that contain your brand name and compare them with non-brand queries. Non-brand growth, like “emergency roof repair” or “office cleaning near me”, is the clearest proof that SEO is reaching new customers. If you want to be strict, count only non-brand leads in your ROI.
Step 6: Measure Over the Right Timeframe
SEO takes time. Google’s Maile Ohye said that in most cases an SEO needs four months to a year to implement improvements and then see the potential benefit. Measuring ROI after six weeks almost always gives a disappointing number.
Until revenue catches up, track leading indicators each month:
- non-brand impressions and clicks
- rankings for your main service and location keywords
- organic leads per month
- Google Business Profile calls
Then calculate full ROI every 6 to 12 months. SEO results also keep coming after you stop paying, which is something paid ads can’t match.
Common Mistakes
- Counting traffic as success. Visits don’t pay bills. Leads and customers do.
- Ignoring phone calls. For many service businesses, most leads call.
- Including brand searches without thinking. They inflate the result.
- Measuring too early. Give it at least six months.
- Using revenue when margins are thin. Gross profit gives a more realistic ROI.
Frequently Asked Questions
What is a good ROI for SEO?
There’s no single benchmark, because costs, margins and job values vary so much. A simple test is whether SEO brings in more gross profit than it costs within a year, and whether that profit keeps growing. Compare it with your other channels, like Google Ads, using the same method, so the comparison is fair.
How long does it take to see ROI from SEO?
Usually four months to a year before results become clear, depending on your competition, your website’s starting point and how much work is done. Local service businesses in less competitive areas can see leads sooner. Track rankings, non-brand clicks and leads monthly, and calculate full ROI every six to twelve months.
How do I measure SEO ROI without online sales?
Assign a value to each lead instead. Multiply your close rate by your average job value or customer lifetime value, then add that value to your lead key events in GA4. For better accuracy, record the lead source in your CRM and track which organic leads actually became paying customers.
Should I include Google Business Profile leads in SEO ROI?
Yes, if your SEO work includes optimizing your profile, which it should for local businesses. Calls and website clicks from your Business Profile are organic leads. Take calls from the performance report, and be careful not to count the same person twice if they clicked through to your website and then filled in a form.
Is SEO ROI better than Google Ads ROI?
It can be over time, because organic results keep bringing leads without paying for every click. Ads bring results faster and are easier to measure. Many service businesses do best with both: ads for leads now, SEO for cheaper leads later. Measure both the same way, with the same lead values.
Final Thoughts
Learning how to measure SEO ROI comes down to three things: count the full cost, track every organic lead including calls, and turn those leads into revenue with your real close rate and job value. Do it over a sensible timeframe, separate brand from non-brand, and you’ll have a number you can defend.
If you’d like SEO that’s reported in leads and revenue, not just rankings, take a look at my monthly SEO service. You can also send me a message and I’ll help you work out what your leads are worth.





Comments
Be the first to share your thoughts or ask a question.
Leave a comment
Your email will not be published. Comments appear after review.