SEO ROI is the gross profit from deals that organic search brought in, minus everything you spent on SEO, divided by that spend. For a B2B company, take closed-won revenue from your CRM. Not leads from GA4. Count deals whose first touch was non-brand organic search, apply your gross margin, and load in every cost: agency, staff, tools and developer time. Measure a trailing 12 months, because B2B deals close slowly. Then show the CFO a range.
I'm Brenden House, and I run Searchmaxxed, an SEO and AI SEO agency. This is the method I'd use to put an SEO number in front of finance. Forecasting is a different job, covered in how to forecast SEO results, so this page sticks to measuring what already happened.
In summary
SEO ROI = (gross profit from organic-sourced closed-won deals − total SEO cost) ÷ total SEO cost × 100.
| Step | What you use |
|---|---|
| Cost basis | Agency or consultant fees, loaded staff time, tools, developer hours, content and digital PR |
| Revenue | Closed-won deals in the CRM, first touch non-brand organic, at gross margin |
| Attribution | Three views side by side: last touch, credit-weighted, first touch |
| Window | Trailing 12 months, with deals tracked back to their first visit |
| Report | One page: the range, the cost per customer, and every assumption written down |
- Use gross profit. Revenue ROI flatters SEO, and finance will strip the margin out anyway.
- Leave your brand name out. Brand searchers came from somewhere else.
- Join GA4 to the CRM through hidden form fields, or organic search loses the credit for every deal that closes months later.
- Check the tracking before you trust it. Bots and broken event names wreck it.
What is SEO ROI?
SEO ROI is the return organic search produces for each dollar you spend on it, written as a percentage of that spend. A result of 150% means every A$1 of SEO cost came back as A$2.50 of gross profit: the dollar, plus A$1.50 on top.
The formula is short:
SEO ROI = (gross profit from SEO − SEO cost) ÷ SEO cost × 100
Most guides put revenue there. Semrush's guide uses "SEO ROI = (SEO revenue - SEO costs) / SEO costs". Fine for a quick check. It overstates the return for any company with a real cost of goods, and a CFO will spot it.
Seven terms keep coming up:
- Attribution is the rule that decides which channel gets credit for a sale.
- First touch gives the credit to the channel that brought the person to your site the first time.
- Last touch gives it to the channel used for the converting visit.
- An assisted conversion is a sale where organic search appeared in the path but wasn't the last click.
- A key event is GA4's name for a conversion, such as a demo request.
- Cost basis is the full cost you divide by: every dollar and hour that went into SEO.
- Closed-won is the CRM stage for a signed deal.
ROI is different from ROAS. ROAS divides revenue by spend and ignores every other cost, which suits ad accounts. ROI is the number finance holds up against every other use of the money, from hiring to paid search.
What goes into the cost of SEO?
The cost of SEO is everything that would stop if SEO stopped. That covers agency fees, the share of your team's salaries spent on it, tools, developer time, content and off-site work such as digital PR. Most reports leave out the internal half. Their ROI runs high.
| Cost line | What to include | Where to find it |
|---|---|---|
| Agency or consultant fees | Monthly fees, audits, one-off projects | Accounts payable |
| Internal staff | Salary plus on-costs, times the share of time on SEO | Finance or HR |
| Tools | Rank trackers, crawlers, keyword tools, AI visibility tools | Card statements |
| Developer time | Hours on templates, speed, schema and fixes, at an internal rate | Sprint or ticket logs |
| Content | Writers, editors, designers, subject-matter reviews | Invoices and timesheets |
| Off-site work | Digital PR, link campaigns, research assets | Invoices |
| Website build | A new site built for search, spread over its useful life | Fixed asset register |
Treat a site build the way finance treats any asset. Say a rebuild cost A$120,000 and should last three years: charge A$40,000 a year to SEO, not A$120,000 in month one.
An all-in package makes this easier. Our managed packages include the build work, technical SEO, content, links and measurement, so most of the cost basis sits on one line. Your team's review time still counts. For market prices on each piece, see how much SEO costs in Australia.
Which revenue counts as SEO revenue?
SEO revenue is closed-won revenue from deals where organic search did the work: the person found you through a non-brand search. Count signed deals. Use gross margin, not headline contract value.
Four choices decide whether a CFO believes you:
- Closed-won, not pipeline. Pipeline is a forecast. Report it beside the ROI, never inside it.
- Non-brand only. Someone who searched your company name heard about you elsewhere, so organic search was the doorway, not the reason they came.
- New logos first. Expansion revenue from existing customers belongs to account management, so show it on a separate line if SEO pages drove it.
- First-year value. Use annual contract value for the ROI. Put lifetime value in a second line, labelled as an estimate.
How do you split brand from non-brand when GA4 doesn't show queries? Use the landing page. Visits that land on the homepage, the about page or a pricing page skew to brand searches. Articles, comparison pages and use-case pages skew non-brand. Search Console confirms the split: filter each page's queries with a regex for your brand name and its misspellings.
Newmedia's guide puts it bluntly: "Including branded revenue artificially inflates your organic return." I agree. Count brand traffic and the report looks great until someone asks questions.
How do you connect organic search to pipeline in your CRM?
Save the visitor's first source and landing page into hidden form fields, then write them onto the contact and deal records. That join is the whole game. Without it, a deal that closes five months after a Google visit sits in the CRM as "direct" or "sales", and SEO gets nothing.
Here's the setup I'd check on any B2B site:
- Capture first touch on arrival. Store the referrer, UTM values and landing page in a first-party cookie on the first visit.
- Write it into hidden fields. Every demo, contact and trial form passes those values, plus the GA4 client ID, into the CRM.
- Map the fields to the contact. HubSpot, Salesforce and Attio all take custom properties, so lock the first-touch fields and later visits can't overwrite them.
- Roll the contact source up to the deal. Finance reports deals, not contacts, so copy the first-touch source onto each deal the moment it's created.
- Keep last touch too. A second set of fields records the source of the converting visit.
- Send the deal outcome back to GA4. Import closed-won values, or upload them through the Measurement Protocol, so GA4's attribution reports see revenue.
- Test every form. Submit each form from an organic visit and check that the CRM record shows it.
At Searchmaxxed, every managed package starts with Search Console and GA4 wired and checked. We connect conversion events and lead signals, then test them.
That last step matters more than it sounds. Here's what we found on an enterprise B2B client's account, in our own audit of their tracking. A client's four enquiry types never counted as conversions. Their event names ran 41 to 50 characters; GA4 cuts at 40. The 40-character "career" event counted every time. Nobody had noticed, because the events still showed up.
Google's limits page confirms it: an event name that "exceeds 40 characters" won't count as a key event. Any ROI report from that property would have shown organic search producing almost no enquiries at all, across every enquiry type except two.
How do you count assisted conversions?
Count assisted conversions by reporting organic search's credit under more than one attribution model, then showing the range. One model alone gets it wrong. B2B buyers visit many times, from many channels, before anyone books a demo.
GA4 now offers three models in its Attribution reports: data-driven, paid and organic last click, and Google paid channels last click. Google retired first click, linear, time decay and position-based models in November 2023. Data-driven attribution, in Google's words, "uses your account's data to calculate the actual contribution of each click interaction".
Two GA4 settings change the answer:
- Lookback window. For most key events the default is 90 days. You can drop it to 60 or 30, but a B2B buyer who first found you 120 days before converting falls outside it.
- Direct visits. GA4's models give no credit to direct visits unless the whole path was direct. Returning buyers who type your URL hand the credit back.
GA4 only sees the website. Deals close in the CRM, months later, after calls and emails GA4 never sees. So I count assisted value in the CRM, using the first-touch and last-touch fields from the section above:
| Attribution view | What it counts | Use it for |
|---|---|---|
| Last touch | Deals where organic search was the converting visit | The floor: the least SEO could have done |
| Credit-weighted | GA4 data-driven share, or an even split across touches | The middle estimate |
| First touch | Deals whose first visit was non-brand organic | What SEO sourced |
| Any touch | Deals with organic search anywhere in the path | Influence only; never put it in the ROI |
Our monthly decision memo uses the same discipline. It reports matched periods against competitors, so one good month can't pass for a trend.
What does a worked SEO ROI calculation look like?
Here's a full calculation for an example B2B SaaS company over a trailing 12 months. The figures are illustrative. Swap in yours, and the method carries over to manufacturing, enterprise software and public-sector suppliers.
The cost basis, 12 months:
| Cost line | Amount |
|---|---|
| Agency fees | A$180,000 |
| Content lead, half time, loaded | A$75,000 |
| Tools | A$12,000 |
| Developer time, 120 hours at A$150 | A$18,000 |
| Total SEO cost | A$285,000 |
The revenue side: the average first-year contract is A$24,000, gross margin is 80%, and the CRM counts new-logo deals under each attribution view.
| Attribution view | Closed-won deals | Revenue | Gross profit | SEO ROI | SEO cost per customer |
|---|---|---|---|---|---|
| Last touch | 22 | A$528,000 | A$422,400 | 48% | A$12,955 |
| Credit-weighted | 33 | A$792,000 | A$633,600 | 122% | A$8,636 |
| First touch | 41 | A$984,000 | A$787,200 | 176% | A$6,951 |
| Any touch | 63 | A$1,512,000 | Influence only | Not used | Not used |
My arithmetic, from the example figures above.
Run the first-touch row on revenue instead of gross profit and you get 245%. That's the number plenty of agency reports would show, 69 points above the honest one. Finance finds gaps like that.
I'd lead with one line: SEO returned 48% to 176% on a fully loaded A$285,000, at A$6,951 to A$12,955 per new customer. Then put that cost per customer beside paid search. In a budget meeting, that comparison does more work than any ROI figure.
What does an SEO ROI report a CFO accepts include?
A CFO accepts an SEO ROI report that ties to the CRM, uses gross profit, shows a range and states its assumptions. It fits on one page. If finance can rebuild your number from their own systems, using their own exports and their own margin, they'll trust it.
| Report line | What goes in it |
|---|---|
| Period | Trailing 12 months, plus the same 12 months a year earlier |
| Total SEO cost | Every line from the cost basis, with internal time included |
| Closed-won deals from organic | Count and value under last touch, credit-weighted and first touch |
| Gross profit and ROI | At your gross margin, for each view |
| SEO cost per customer | Beside paid search and outbound |
| Open pipeline from organic | Stage and value, kept outside the ROI |
| Non-brand clicks and rankings | From Search Console, as the leading signal |
| Data checks | Bot filtering, form tests, brand exclusion method |
| Assumptions | Margin, contract value, lookback window, amortised build costs |
Most reports skip the data checks row. We found out why it matters on an enterprise B2B client's account. A client's GA4 showed AI-assistant visits jump from 354 to 6,050 in a month. Almost none of it was real. About 5,700 came in three one-hour bursts: same 1920x1080 desktop Chrome, all new users, no referrer, about 20 seconds each, landing on two pages. Real AI traffic was 385 sessions against 354 the month before, roughly flat.
Anyone reporting off that chart would have claimed a seventeenfold jump in AI search. Hence closed-won deals first. Bots don't sign contracts, and they don't book demos with your sales team either.
AI search belongs in the same report. Visits from ChatGPT, Perplexity and Gemini arrive as referrals. Buyers who saw you named in an AI answer often search your brand later, which lands in brand. Count the referral deals through the same CRM join, and keep AI answer tracking as its own leading signal.
What is a good SEO ROI for a B2B company?
A good SEO ROI is one that beats your next-best channel on cost per customer and clears the payback period your finance team sets. Benchmarks help a little.
First Page Sage, a US SEO agency, publishes averages from its own campaigns between Q1 2021 and Q3 2025. Its page was last updated 25 September 2025:
| Industry or service | ROI | Time to break even |
|---|---|---|
| B2B SaaS | 702% | 7 months |
| Manufacturing | 813% | 9 months |
| Industrial IoT | 866% | 7 months |
| Technical SEO only | 117% | 6 months |
| Basic content marketing, about four articles a month | 16% | 15 months |
Its formula is "Net Profit from SEO Campaign ÷ SEO Campaign Costs", times 100. One agency, its own clients: context, not a target.
Two things in that table matter more than the averages. First, the gap between 16% and 702% comes from what the campaign does, not from SEO as a channel. Second, break-even runs six to fifteen months. Judge a campaign in its first quarter and you'll judge it before the return shows up.
Still deciding whether to spend on SEO at all? Is SEO worth it covers that question. This page assumes the money is already going out the door and you need to prove what it bought.
How long does SEO take to show a return?
Expect six to twelve months before a B2B SEO investment pays back, and longer when your sales cycle runs past a quarter. Two clocks run at once. One is the time pages take to rank, the other is the time a deal takes to close.
A monthly ROI figure misleads in B2B, because a demo booked in March might close in August and land in the wrong month. Use a trailing 12 months. Then track each month's organic-sourced leads as a cohort, so you can see how many closed, and when.
| Cohort | Organic-sourced leads | Closed by month 3 | Closed by month 6 | Closed by month 9 |
|---|---|---|---|---|
| January | Count | Count and value | Count and value | Count and value |
| February | Count | Count and value | Count and value | Count and value |
Fill it in from the CRM. After a few cohorts, you'll know your organic close rate and lag, and you can forecast from your own history.
How does Searchmaxxed measure SEO ROI?
Searchmaxxed measures SEO the way this page describes. We connect Search Console, GA4 and your conversion events, check them, and judge the work on enquiries and revenue. We're an SEO and AI SEO agency. We do the work as well as measure it, from technical SEO through content, link building and digital PR to GEO, AEO and LLM SEO.
Every managed package has Search Console and GA4 wired and checked, and a monthly decision memo that measures results against competitors. You own the site, repository, content and data from day one, so your finance team can check the numbers in your own systems. Our SEO service sets out the work in detail.
| Package | Who it suits | What it includes |
|---|---|---|
| Growth System | A company growing in one or two markets | 30 page releases a month, work on up to 4 existing pages, one qualified link action a month, AI visibility tracking |
| Agentic Search Engineering | A competitive or national market | 50 page releases a month, comparison, industry and integration pages, digital PR and link campaigns, AI answer tracking across ChatGPT, Gemini, Perplexity and AI Overviews |
| Custom & Enterprise | Several markets, brands or a large site | Dedicated engineering, custom reporting and original first-party research |
Here's how we do it. We build on a website you own, our Agentic Website, so every page and every tracking fix stays yours. AI agents pull your Search Console and GA4 data, read the Google results and check what AI answers say about you and your competitors. That feeds the Managed Search Loop. It adds your conversion and sales feedback. We read 7-day views for what's happening, matched 28-day periods for monthly decisions and matched 90-day periods for direction. Then we build the pages, fixes and links that should bring in the most enquiries next. Off your site, the Off-Page Source Layer builds the links, digital PR and mentions that Google and AI answers draw on.
I learned to judge SEO on revenue because it was my own money. Before Searchmaxxed, I built Radiant Roof Repairs from zero to more than A$1 million a year in revenue using SEO as the only marketing channel. Three high-intent Gold Coast roofing searches reached number one within 90 days. I did the pages, research, competitor checks and updates manually.
Searchmaxxed's work has generated more than A$10 million in revenue through search for its clients.
Is Searchmaxxed right for you?
We suit marketing and growth leaders at enterprise, B2B SaaS, venture-backed, manufacturing and public-sector companies, where deals are large and sales cycles run long. You want SEO and AI search done for you, and judged on pipeline. Want a report on someone else's work? Wrong call.
| Searchmaxxed is a good fit if | Look elsewhere if |
|---|---|
| You want SEO judged on closed-won revenue, not traffic | You only want a ranking report |
| You want the pages, fixes and links built each month, counted as page releases | You need one ROI model built once, with no ongoing work |
| You want to own your site, repository, content and data | You can't share Search Console, GA4 or your sales data |
| You compete in a crowded or multi-market category and need digital PR and links | You need search to fill this quarter's pipeline on its own |
| You want direct access to the people doing the work | You want an account manager between you and the team |
If you're in the right-hand column, an analytics consultant or a one-off attribution audit will serve you better.
Frequently asked questions
What is the formula for SEO ROI?
SEO ROI = (gross profit from SEO − total SEO cost) ÷ total SEO cost × 100. Use closed-won deals sourced by non-brand organic search. Include agency fees, internal staff time, tools, developer hours and content in the cost.
What is a good SEO ROI?
A good SEO ROI beats your other channels on cost per customer and pays back inside your finance team's target. First Page Sage reports 702% for B2B SaaS, with break-even at seven months. Treat that as one agency's benchmark, from its own client book, rather than a target for yours.
Should branded search count in SEO ROI?
Leave branded search out of the ROI. They already knew you. Split brand from non-brand using landing pages in GA4 and query filters in Search Console.
How do I track SEO ROI in GA4?
Mark your demo and contact forms as key events, keep event names under 40 characters, and test every form. Then import closed-won values from your CRM, because GA4 can't see deals that close offline and the CRM holds the final number.
Should I use first-touch or last-touch attribution for SEO?
Use both and show the range. Last touch is the floor. First touch shows what SEO sourced, and a credit-weighted view, such as GA4's data-driven model, sits between them. Any-touch counts show influence only.
How do I measure SEO ROI before I start?
You forecast it instead. Measuring needs closed deals, so before launch you estimate traffic, conversion rates, close rates and deal values from search demand and your own funnel. Our guide to SEO forecasting walks through that model, step by step, with the inputs a finance team will ask you to justify.
Does traffic from ChatGPT count as SEO ROI?
Yes, if your SEO work earned the mention. Count ChatGPT, Perplexity and Gemini referrals through the same CRM join. Check the AI channel in GA4 for bot bursts first, because automated traffic lands there too.
What should you do next?
Pull last year's closed-won deals from your CRM and check how many carry a first-touch source. Mostly "direct" or blank? Fix the hidden fields first. If you'd like us to do the SEO and measure it against your pipeline, let's talk pricing.