SEO ROI is the revenue your organic search traffic brings in, minus the cost of the SEO work, divided by that cost. You measure it in the unit your business actually runs on: booked jobs for a trade, orders for an online store, pipeline for a SaaS or B2B company, each traced back to the search and the page that brought it in.
Below: the formula with a worked example, what to count for your type of business, the tracking that has to exist before the number means anything, the attribution mistakes that inflate or hide it, why the return trails the spend, and what a monthly report should show.
The SEO ROI formula
It is the same sum used for any investment: SEO ROI = (organic return minus SEO cost) ÷ SEO cost × 100. A result of 100% means every dollar spent came back with another dollar on top. Zero means you broke even. A negative figure means the work has cost more than it has returned so far, which is normal in the early months, for reasons covered further down.
Revenue or gross profit on top
Most ROI calculators put revenue on top. I prefer gross profit: revenue minus the direct cost of delivering the job or the product (parts, labor, stock, shipping). A job that bills well but eats most of its price in materials returns far less than its invoice. Revenue makes SEO look better than it is, and it makes an honest comparison with other channels impossible.
What counts as the cost
Count everything you pay to get and keep the organic results: the consultant or agency fee, content writing, developer time for fixes, tools, and your own staff hours if they write or approve pages. Leave out costs you would carry anyway, like hosting a site you already need. If you are still setting a budget, my breakdown of what SEO costs covers the pricing models.
A worked example with round numbers
Take a home services company paying $2,000 a month for SEO, so $24,000 over twelve months. Its call tracking and job records show 120 booked jobs that started from organic search, at an average invoice of $500, and its gross margin on those jobs is 50%.
| Line | Value | How it is worked out |
|---|---|---|
| SEO cost | $24,000 | $2,000 a month × 12 |
| Booked jobs from organic | 120 | Call tracking plus the booking software |
| Organic revenue | $60,000 | 120 jobs × $500 average invoice |
| Organic gross profit | $30,000 | $60,000 × 50% margin |
| ROI on revenue | 150% | ($60,000 minus $24,000) ÷ $24,000 |
| ROI on gross profit | 25% | ($30,000 minus $24,000) ÷ $24,000 |
| Cost per booked job | $200 | $24,000 ÷ 120 jobs |
Same work, same jobs, two very different answers. The 150% is the figure most reports lead with. The 25% is what the business actually banked, and it is the one that tells you whether to spend more. The cost per booked job turns the same data around into something you can hold up against what paid ads charge you for a job.
Two things this example leaves out would push the real return higher. Repeat customers: a household that books once and calls again next year earned its value from one search, so if you know your customer lifetime value, use it. And ranking pages keep working after the twelve months end, which a one-year window cannot show.
What to measure for your type of business
Traffic is not the return. The return is whatever turns into money in your business, so the unit changes with the business model, and so does the place the number comes from.
| Business type | Unit of return | Where the number lives | Gap to watch |
|---|---|---|---|
| Trades and local services | Booked jobs and their invoice value | Call tracking and booking or field service software | Phone calls that never get tagged with a source |
| Online stores | Orders and gross profit | Store platform, cross-checked with GA4 | Discounts and returns hiding inside order counts |
| SaaS and B2B | Qualified pipeline, then closed revenue | CRM | Sales cycles that push revenue months past the click |
Trades and local services: booked jobs
For a plumber, an HVAC company or a roofer, most organic leads arrive as phone calls, many of them from the map pack (the three businesses shown on the map at the top of local results). A call or a form fill is a lead, not a job. The number that belongs in the ROI sum is booked jobs and their invoice value, pulled from the software that runs your schedule. If that software does not record lead source, organic leads × close rate (the share of leads that become paid jobs) × average ticket gets you close.
Calls that come straight from your Google Business Profile count here too. They need their own tracking line, set up in the section below, or they vanish into the total.
Online stores: orders and margin
Stores have it easiest, because the sale happens on the site and it gets recorded with its source. The trap is counting orders or revenue without margin. Discounts, shipping and returns all come out of the return, and a month with more orders at a lower average order value (AOV: revenue divided by orders) looks better in a traffic report than in the bank.
On an Australian butcher's online store I report on, order count rose 91% in one month. In the same report, AOV fell about 42% (A$449 to A$259) as discount per order roughly tripled (A$158 to A$482), so the order growth leaned on smaller, discounted orders. Order count alone would have overstated the win. GA4 conversions on that property are a tracking fault and are never used; the sales figures come from the store's own reports.
SaaS and B2B: pipeline
Software and B2B deals take weeks or months to close, so revenue is a poor monthly signal. Track pipeline instead: demo requests and trial sign-ups from organic, the share your sales team qualifies (often called an SQL, a sales qualified lead), the deal value those opportunities carry, and closed revenue when it lands. Organic pipeline value × your historical win rate gives an expected return you can report every month, then check against closed deals each quarter.
Setting up tracking you can trust
An ROI figure is only as good as the tracking under it. Four pieces cover almost every business, and each one closes a different gap.
- GA4 key events. Mark the actions that matter as key events in GA4 (the name GA4 now uses for what it used to call conversions; Google Ads still says conversions): form submissions, clicks on the phone number, bookings and purchases. Mark real actions only. A view of the contact page is not a lead.
- Call tracking. For a phone-led business this matters more than anything else on the list. Dynamic number insertion (a script that swaps the phone number based on where the visitor came from) shows organic visitors a dedicated tracking number, so every call carries its source. Give your Google Business Profile its own tracking number too, with your main line listed as the secondary number so your NAP (name, address and phone, the details directories compare) stays consistent.
- A UTM on your Google Business Profile link. A UTM is a short label added to the end of a URL. Tagging the website link on your profile separates map pack clicks from regular organic clicks in GA4.
- Lead source in the CRM. Every lead record should carry where it came from: hidden form fields that capture the source and landing page, and call records pushed in from the call tracking tool. The CRM (or booking software) is where a lead becomes a job, an order or a deal, so it is where revenue gets matched to organic search.
Attribution pitfalls that skew the number
Attribution means deciding which channel gets credit for a sale. It goes wrong in both directions, and more of the common errors flatter SEO than hurt it.
- Store-wide revenue reported as SEO revenue. The headline total includes every channel: email, paid ads, repeat buyers, walk-ins. Only the organic line belongs in the formula.
- Brand searches counted as wins. Someone who types your business name already knew you. Split brand and non-brand queries in Search Console; non-brand demand is what SEO actually earned.
- Last-click credit. Many reports credit only the last channel a buyer used. A customer who found you through a guide, left, and came back a week later through an ad shows up as paid, and organic gets undercounted.
- Tracking changes mistaken for growth. A new tag, a duplicated purchase event or a broken filter moves numbers overnight. On a plumbing and HVAC account, organic traffic roughly tripled in one month, and a jump that size is one I check against tracking and attribution changes before calling it organic growth.
- Untracked calls. If organic visitors see your main number, their calls arrive with no source, and SEO's share of revenue disappears.
The store-wide mistake is easy to make even in a careful report. On a UK store selling children's beds, one August 2026 report led with store-wide sales of £46,552.37, up 34% on the month. Revenue attributed to Google organic that month was £3,091, or £7,370 counting every Google-attributed source: 6.6% to 15.8% of the headline. The organic line did grow, up 53.8% year on year, and that is the figure that belongs in an ROI sum. A report that credits SEO with every sale in the building is flattering, and useless for deciding anything.
The reverse happens too: a sudden fall that turns out to be a tag removed in a site update. If your numbers drop overnight, rule out tracking before anything else, as I describe in my guide to a website traffic drop.
Why SEO ROI lags behind spend
SEO is paid for up front and returns later. The cost starts in month one. Google then has to crawl the new and fixed pages, index them and decide they deserve to rank, and rankings tend to climb in steps rather than jump. Leads follow rankings, and revenue follows leads by the length of your sales cycle: days for an emergency repair, minutes for a store checkout, often months for B2B software.
That is why a month-by-month ROI looks poor early on, and why I report it cumulatively: total return to date against total cost to date. If the work is sound, the return line crosses the cost line at some point and keeps pulling away, because a page that ranks keeps bringing in leads after the work that built it is paid for. Paid ads stop the day the budget does. Nobody can promise when the crossing happens; my post on how long SEO takes covers what speeds it up and what slows it down.
After the work has run long enough, judge it on a rolling 12-month view, and compare each month with the same month last year so a seasonal peak does not pass for progress.
What to report every month
A monthly SEO report should let you answer one question in under a minute: is the money coming back, and is the trend heading the right way? These are the lines I put in every report.
| Report line | Source | What it tells you |
|---|---|---|
| Non-brand organic clicks | Search Console | Whether you are winning demand you did not already own |
| Organic key events: calls, forms, orders | GA4 and call tracking | Whether visitors take action |
| Booked jobs, orders or qualified pipeline from organic | CRM, booking software or store platform | Whether those actions turn into business |
| Organic revenue and gross profit | CRM, invoices or store platform | The top half of the ROI formula |
| SEO cost to date | Invoices | The bottom half of the formula |
| Cumulative and rolling 12-month ROI | Worked out from the lines above | The trend, rather than one month |
| Tracking and site changes | Notes in the report | What might explain a jump or a dip |
Putting the organic line beside the whole-business line keeps a report honest. On a plumbing and water heater account in California, organic revenue went from $15,876 in July 2026 to $21,750 in August 2026, a 37% rise in one month. The same report showed total account revenue dipping 4% that month, and said so. Two caveats: the July figure is worked back from the report's stated percentage change rather than pulled independently, and the short brand-name search lost 61% of its clicks in the same period. The growth came from comparison searches about water heater brands, not from people who already knew the company.
Getting to a number you can trust
Start with the tracking, not the formula. Pick your unit of return (booked jobs, orders or pipeline), check that every call, form and order carries its source into the place where revenue is recorded, and write down everything you spend. A few months later you will have a real ROI figure instead of a guess, and a clearer view of whether SEO is worth it for your business.
To see the chain from a search to a sale before you measure it, the chapters on how SEO actually works walk through where customers drop out between the two, and what closes each gap.

