GrowthHasten

SEO ROI: How to Calculate It When Your Sales Cycle Is Six Months Long

Most SEO ROI formulas assume the revenue arrives in the same month as the traffic, which is never true in B2B. Here is a lag-adjusted model, the five things that must be instrumented before any number means anything, and what to report when attribution is genuinely impossible.

Anshuman Sinha

Written by Anshuman Sinha

Published August 20, 2026
Updated August 26, 2026
17 min read
Overhead view of an industrial steel staircase with staggered flights spiraling downward

SEO ROI is the return an organic search program produces measured against everything it cost, expressed as a percentage. This guide is for founders, CMOs, and heads of growth at B2B and SaaS companies who have to defend an organic budget to a board and cannot trace a closed deal back to a blog post. It covers the formula, the cost inputs most people omit, why the standard calculation understates B2B SEO, what has to be instrumented first, and what to report when attribution is genuinely impossible. Both inputs to the formula are estimates, and the window you calculate over decides whether the answer comes out positive or negative.

The short version

  • The formula is not the hard part. Both of its inputs are estimates, and the time window you choose can flip the sign of the result without changing a single underlying fact.
  • In B2B, revenue from this quarter's traffic lands next quarter or the one after, so a calculation run on time reports a loss on a program that is working.
  • GA4 cannot fix this. Its longest key event lookback window is 90 days, which is shorter than most B2B sales cycles, so no attribution model inside GA4 can credit a seven-month-old organic visit.
  • Five things must be instrumented before an ROI number means anything. The one that fails most often is a lead-source field that survives all the way to closed-won.
  • There is no useful average ROI for SEO. Published benchmarks describe populations that differ from you in the exact variables that move the result most.

What is SEO ROI, and what is the formula?

The formula is (Revenue - Cost) / Cost x 100, and it has not changed in twenty years. Every page ranking for this query hands you the same arithmetic, because the arithmetic is not where anyone goes wrong.

Where they go wrong is treating the two inputs as facts. Cost looks like a number you can read off an invoice, and it usually is not, because a meaningful share of it is internal time nobody prices. Revenue looks like a number your CRM knows, and it usually does not, because the deal that closed last month had five touchpoints and organic was the first of them.

So the rest of this is about the inputs. Two estimates and a time window, run through a division.

What counts as the cost of SEO?

Everything you would stop spending if you stopped doing SEO, including the hours you never invoice. That last clause is where most cost figures fall apart.

The visible costs are easy to list.

  • Agency retainer or in-house salary: the largest line, and the only one most people count.
  • Tools: rank tracking, crawling, keyword research, and whatever your dashboard costs.
  • Content production: writers, editors, designers, and any paid subject-matter interviews.
  • One-off technical work: a migration, a rendering fix, a schema build, a Core Web Vitals sprint.

The invisible costs change the answer more.

Internal time: The subject-matter expert who spends three hours a week reviewing drafts. The developer who spends a day a month on SEO tickets. The marketing lead who runs the weekly call. Price those hours at loaded cost and add them in. Leave them out and the cost side shrinks, the ROI number grows, and the error runs in the direction that flatters the program. That is precisely why nobody catches it.

This matters most for in-house programs, which routinely look cheaper than agency programs on paper for exactly this reason. If you are still sizing the budget rather than measuring the return, what the work actually costs covers the bands and what sits inside each one.

What counts as revenue from SEO, and when can you actually see it?

Two different things, and collapsing them into one number is the root error in almost every SEO ROI report. Some of what you want to know is directly observable in your own systems. The rest is modeled, which is a respectable thing to do and a dishonest thing to hide.

What you are countingTrackWhat it depends on
Organic sessionsObservableYour analytics correctly identifying the organic channel, and brand traffic being separated from non-brand
Key events completed in an organic sessionObservableA key event actually being marked on the action, which GA4 does not do by default
Pipeline records with an organic first touchObservableA lead-source field written at form fill and never overwritten by a later touch
Closed-won deals with an organic first touchObservableThat same field surviving every stage change and integration in your CRM
Revenue attributable to organic searchModeledYour close rate, your lifetime value figure, and the decision that first touch deserves the credit

The modeled track rests on three assumptions, and they belong on the slide next to the number.

  • The close rate holds: you are applying a historical close rate on organic-sourced leads to leads that have not closed yet.
  • The lifetime value figure is current: not the one from the last fundraise deck, and defined consistently as gross revenue, gross profit, or contribution margin.
  • First touch deserves the credit: this is a choice, not a measurement. A deal with an organic first touch and a sales-led close did not come from SEO. Organic started the conversation, and first-touch credit rounds the value of starting it up to 100%.

Report the observable track as a result and the modeled track as a forecast, labeled as one. Anyone who has sat in a board meeting knows the difference between "organic generated 40 qualified leads last quarter" and "organic produced $96,000," and knows which of the two survives a follow-up question. The step between a session and a qualified lead is its own discipline, and our guide to turning that traffic into leads covers where it usually breaks.

Why does the standard calculation understate B2B SEO?

Because it counts twelve months of cost against roughly six months of the revenue that cost produced. The traffic arrives in month three. The deal it started closes in month nine. Run the calculation on a calendar year and half the revenue you paid for has not landed yet, so the program reports a loss while doing exactly what it was hired to do.

This is not an attribution problem. It is a timing problem, and timing problems are arithmetic rather than mystery. Here is the same program calculated two ways. Every input below is a hypothetical illustration chosen to make the mechanism visible. None of it is a client result, and none of it is a typical outcome.

Hypothetical assumptions: total program cost of $6,000 a month, a six-month sales cycle, organic-sourced qualified leads starting in month three and ramping to eight a month by month twelve for 56 leads across the year, a 20% close rate on those leads, and $12,000 in customer lifetime value. Revenue per lead therefore models at $2,400.

Input or output (hypothetical illustration)Calendar-window calculationLag-adjusted calculation
Cost countedMonths 1 to 12: $72,000Months 1 to 12: $72,000
Organic-sourced qualified leads counted5656
Revenue countedOnly deals closed by month 12: $33,600All deals those 56 leads will close, landing months 9 to 18: $134,400
Reported result-53%+87%

Same spend. Same leads. Same close rate. The sign flipped because the second calculation put the cost and the revenue that cost caused inside the same window, and the first one did not.

Now the part that keeps this from becoming a trick. The lag-adjusted figure counts revenue that has not arrived. It is a forecast, and presenting it as a result is the same category of error as the calendar calculation, only pointed in the flattering direction. So report both numbers side by side: closed revenue to date, and the lag-adjusted projection labeled as modeled, with the gap between them explained by the length of your sales cycle. A board that sees both learns to trust the second one. A board that only ever sees the flattering figure eventually stops trusting either.

Can GA4 attribution models solve the lag problem?

No, and the reason is a published number rather than a matter of opinion. GA4's key event lookback window has a hard maximum of 90 days.

Google's documentation on the key event lookback window sets out the options: acquisition key events default to 30 days with a 7-day alternative, and all other key events default to 90 days with 30 and 60 as the other choices. Ninety days is the ceiling. A first organic visit that happened seven months before the deal closed sits outside every window GA4 offers, so no model inside the product can assign it credit.

Changing the model does not rescue it either. Google's attribution documentation lists the three that remain available: data-driven attribution, paid and organic last click, and Google paid channels last click. First click, linear, time decay, and position-based were removed in November 2023. Data-driven attribution distributes credit across the touchpoints it can see inside the lookback window, which is genuinely useful for a cycle that fits inside 90 days and irrelevant for one that does not.

What GA4 attribution can show: How credit for a key event splits across channels when every touchpoint sits inside the lookback window, and which channels assisted a conversion within that window. For a self-serve product with a two-week evaluation, that is most of what you need.

What it cannot show: Any touchpoint older than the window. And anything that happens after the form fill. GA4 records a key event, not a closed deal, so it does not know whether the lead you captured in March became a customer in September or went quiet during a trial.

That second limit is the one people miss. Even with a perfectly configured key event, GA4's view of a B2B pipeline stops at the form. Search Console does not close the gap either: Search Console's query data reports impressions, clicks, position, and click-through rate, and Google has never reported your revenue. The closed-won side has to come out of your CRM, joined back to the organic first touch by a field you control.

What has to be instrumented before an ROI number means anything?

Five things, and it is unusual to find all five in place. Until all five exist, an ROI calculation is arithmetic performed on guesses, and the decimal places are decoration.

1. A key event marked on your primary conversion: GA4 does not do this for you. Google's documentation on key events is explicit that to measure one you create or identify the event that captures the action, then mark that event as a key event. Until the mark exists, GA4 has nothing to attribute, and no amount of report configuration invents a conversion number. Installing GA4 and configuring GA4 are different jobs, which is why sites that have had analytics running for years still fail this check. Our guide to how to set up key events for organic goals covers the configuration.

2. An organic segment you trust: Brand queries separated from non-brand, and a known answer to the direct-traffic leak where someone finds you in search, leaves, and returns days later by typing your domain. Without that split, "organic grew" can mean nothing more than that your brand got better known through some other channel.

3. A lead-source field that survives to closed-won: Captured at form fill, written to the CRM record, and never overwritten by a later touch. From my experience working on B2B measurement setups, this is the prerequisite that fails most often, and it fails quietly: the field exists, it populates at record creation, then a stage change or an integration blanks it, so the closed-won records show a source of unknown and nobody notices until somebody asks for an ROI number.

4. An agreed lifetime value figure: Agreed means finance and marketing use the same number, it is current, and everyone knows whether it is gross revenue, gross profit, or contribution margin. Three people working from three definitions will produce three ROI figures from identical data.

5. A cost figure that includes internal time: As set out above. If the number came straight off an invoice, it is incomplete, and it is incomplete in the direction that makes you look good.

If any of the five is missing, fix that first. Building a model on top of a gap produces a number that is confidently wrong, which is worse than admitting you cannot calculate it yet.

What should you report when you cannot attribute revenue at all?

Report a ranked set of proxies with the weakness of each one stated out loud, and refuse to produce a single number. In my experience, the most effective approach is to hand a board five honest measures with their limitations written next to them rather than one confident figure that collapses under the first follow-up question, because the confident figure costs you the credibility you will need at the next budget conversation.

Ranked below, strongest evidence first.

ProxyWhat it evidencesIts specific weakness
Pipeline value with an organic first touchThe closest available link between organic work and moneyNeeds the lead-source field to survive, and first touch is a credit choice rather than a measurement
Qualified leads with an organic first touchReal commercial interest rather than trafficSays nothing about deal size, and nothing about whether those leads close
Non-brand organic sessions to commercial pagesDemand you created rather than demand that already existedA session is not intent; this can rise for a quarter while lead volume stays flat
Share of non-brand impressions on priority queriesWhether you are becoming visible where buyers actually lookImpressions can climb with no click and no revenue behind them
Cost per organic-sourced lead against cost per paid leadA comparison a CFO already understands without translationLoads all fixed cost onto whichever leads happened to arrive this period, so it reads badly early and unrealistically well later

Two rules make that set land rather than read as excuses.

Report the direction, not the level: One month's cost per organic lead means nothing. The same figure across six quarters means a great deal, and the trend line is the argument. Which metrics belong in the recurring version of that report is a separate question, and the metrics worth reporting covers the monthly structure, while which numbers deserve KPI status at your stage is a related but different call.

Say what would change your mind: Name, in advance, the number that would make you recommend cutting the program. A report capable of concluding "stop" is the only kind worth trusting when it concludes "continue."

What is a good ROI for SEO?

There is no industry average worth quoting, and quoting one is worse than saying you do not know. Published SEO ROI benchmarks are averages across populations that differ from you in the variables that move the result most: average deal value, sales-cycle length, starting domain authority, the competitive difficulty of your target queries, how much technical debt the program had to clear before anything could rank, and whether the cost figure included internal time.

Two companies can execute identically, spend identically, and report ROI figures an order of magnitude apart because one sells $400 annual subscriptions and the other sells $80,000 enterprise contracts. A benchmark cannot tell you whether your program is working. It can only tell you that some other set of companies reported something.

Three questions are answerable from your own data, and they are better ones.

Is organic customer acquisition cost falling relative to our other channels? Measured quarter over quarter on a definition you hold constant. This is the question a benchmark is a poor substitute for, and it needs nobody else's numbers.

Is the share of pipeline with an organic first touch growing? A percentage of your own pipeline, which requires no comparison to an industry at all.

What would it cost to buy the traffic organic currently delivers? Price the non-brand clicks you earn at their current cost per click in Google Ads. Treat that as a floor on replacement cost, not as revenue. It tells you what you would have to pay to hold that traffic if the organic program stopped, which is a narrower and more defensible claim than saying organic earned that amount.

How long before SEO shows a return?

Later than the traffic, and in B2B the gap between the two is roughly the length of your sales cycle. Rankings and impressions move first, sessions follow, qualified leads follow those, and revenue arrives a full sales cycle after the lead. Every step adds delay, and the last one adds the most.

Google is direct about the front half of that chain. Its SEO starter guide states that some changes take effect within a few hours while others take several months, and suggests waiting a few weeks before assessing whether work had a beneficial effect in Search. That is the search-side lag on its own, before your pipeline adds its own delay on top.

Practically, the payback point sits where cumulative modeled revenue crosses cumulative cost, which lands at least one sales cycle beyond the month your first organic-sourced leads arrive. While you wait, watch the leading signals in this order: non-brand impressions, indexed page count, ranking movement on priority queries, then lead volume. They tell you whether the program is on track months before revenue can confirm it.

The honest forecast for a program starting from a small footprint is a range with its assumptions attached, not a date. Anyone handing you a specific month is expressing more confidence than the available data supports.

Is SEO cheaper than paid ads?

Per acquired customer, usually not at first and often yes later, and the crossover is the entire point of the comparison. Paid search buys a click today at whatever price the auction sets, and stops delivering the moment you stop paying. Organic requires spend before it produces anything, then keeps producing after the spend levels off, because a page that ranks does not charge you again for the next visitor. That difference in shape, rather than any difference in raw efficiency, is what makes the comparison hard to do honestly.

The comparison worth running: Total organic program cost divided by customers with an organic first touch, next to total paid spend divided by customers with a paid first touch, both measured across the same multi-quarter window. A single month favors paid almost mechanically, because organic's fixed cost lands against however many leads happened to close in those four weeks.

The part that flatters organic, stated anyway: Organic traffic does decay when you stop investing, but it decays over quarters. Paid traffic reaches zero the day the card is declined. That asymmetry is real and belongs in the comparison, provided you also say that reversing organic decay is not free either.

When paid is the right answer: When you need pipeline this quarter. When you are testing whether a message converts before committing to a content program. When the queries you need are held by domains you cannot realistically outrank inside your planning horizon. Recommending SEO to a company that needs revenue in sixty days is bad advice regardless of what the eventual ROI would have been.

Run both sides on the same definition of a customer and the same cost rules, or the argument turns into a methodology dispute instead of a channel decision.

The habit worth building is agreeing the measurement window before the engagement starts. Decide in writing when the first ROI review happens, what the cost figure includes, which revenue track gets presented as a result and which as a forecast, and what number would make you stop. That conversation is straightforward while everyone is optimistic and nearly impossible after the first negative figure lands.

This week, open GA4 and check whether a key event is marked on your primary conversion. If it is not, nothing else here can run yet, and fixing it unblocks everything downstream. If you would rather have the measurement model built alongside the strategy than bolted on a year later, our growth consulting work is structured that way.

Need an Organic Growth Strategy?

Work directly with GrowthHasten to build a long-term SEO and content roadmap tied to a measurement model your board will actually trust.

Schedule a Strategy Call
FAQ

Frequently Asked Questions

How do you calculate SEO ROI?

Subtract the total cost of the SEO program from the revenue attributable to organic search, divide by the cost, and multiply by 100. The formula is simple; the inputs are not. Cost has to include internal content and developer time, and revenue has to be measured over a window that accounts for how long your sales cycle takes to close.

What is the average ROI of SEO?

There is no industry average worth quoting. Published benchmarks are averages across companies that differ from yours in average deal value, sales-cycle length, starting domain authority, competitive difficulty, and whether internal time was counted as cost, so the figure does not transfer. A more answerable question is whether your organic customer acquisition cost is falling relative to your other channels over time.

How do you measure SEO ROI without ecommerce transactions?

Model it, and say that you are modeling it. Take the number of qualified leads with an organic first touch, apply your historical close rate, then apply your average customer lifetime value. Present that figure as a forecast rather than as a measured result, and state both assumptions alongside it, because the output is only as reliable as they are.

How long before SEO shows a return?

Traffic and ranking movement appear before revenue does, and in B2B the gap between them is roughly the length of your sales cycle. An ROI calculation run too early therefore reports a loss on a program that is working. GA4 does not bridge the gap either, because its longest key event lookback window is 90 days. Agree the measurement window before the engagement begins.

Is SEO cheaper than paid ads?

Per acquired customer it often becomes cheaper over time, because the cost is largely fixed while the traffic compounds. Early on it is usually more expensive per customer than paid search, and it takes longer to arrive. The honest comparison is blended acquisition cost measured across several quarters on the same definition of a customer, not a single-month figure.

Share This Article

Anshuman Sinha
Written by

Anshuman Sinha

AI SEO Specialist, GrowthHasten

Anshuman Sinha is an AI SEO Specialist and Computer Science Engineer with over three years of experience in SEO and five years in web development. He specializes in Technical SEO, AI Search Optimization (AEO and GEO), SaaS SEO, and building high-performance websites with modern technologies.

View profile

Stay Ahead Of The Curve

Get the latest SEO insights and growth strategies delivered to your inbox. No spam, just actionable advice.