The formula, and the three inputs people fudge
The arithmetic is trivial. Getting the inputs honest is not.
SEO ROI = (gross profit from incremental organic − total SEO cost) ÷ total SEO cost
Three inputs decide whether the answer means anything, and each one has a standard way of being quietly inflated.
- Gross profit, not revenue. A ₹1 crore ecommerce year at 25% margin is ₹25 lakh of actual money. Reporting ROI on the crore multiplies your apparent return by four before anyone has told a single lie.
- Incremental organic, not all organic. This is the big one, and it gets its own section below.
- Total cost, not the retainer. Retainer, plus content if it's billed separately, plus tools, plus the hours your own people spend briefing, reviewing and approving. Four hours a week is roughly 200 hours a year. Price it and add it.
Strip out the traffic you'd have had anyway
Organic search reports lump together three very different things: people who searched for your brand, people who found pages that were already ranking, and people who found pages the SEO work actually won. Only the third group is a return on anything.
Branded search is the worst offender. Someone typing your company name has already been convinced by something — an ad, a referral, a podcast, a conference. They convert at a far higher rate than non-branded searches, which is exactly why including them flatters the number so effectively. Worse, branded search volume rises when your paid and social spend rises, so a good quarter on Meta shows up as an SEO win.
Pre-existing rankings are the quieter one. If a page was sitting at position four for a decent query in month zero, the leads it produced in month twelve aren't the agency's work. They're inheritance. Freeze a list of every query you already rank on page one for before anyone starts, and hold the ROI calculation to what's outside that list.
Both filters are free. Search Console lets you exclude queries containing your brand name; the landing-pages report shows which URLs were already earning clicks. It's an afternoon's work and it's the most useful afternoon in the whole exercise — see how to set an SEO baseline.
A worked example, in rupees
Numbers below are illustrative — invented to show the arithmetic, not drawn from a client. Plug in your own and the shape of the result rarely changes.
A B2B services company runs a ₹75,000/month retainer for twelve months. Here's the honest chain.
- Cost. Retainer ₹9,00,000, tools ₹60,000, internal time ₹2,40,000. Total ₹12,00,000.
- Raw organic leads over the year: 480. This is the number that goes in the deck.
- Minus 210 branded-search leads. They typed the company name. Something else sent them.
- Minus 90 leads from pages already ranking on page one in month zero. Inherited, not earned.
- Incremental leads: 180.
- × 20% close rate = 36 customers.
- × ₹1,20,000 average contract value = ₹43,20,000 revenue.
- × 60% gross margin = ₹25,92,000 gross profit.
- − ₹12,00,000 cost = ₹13,92,000. ROI: 116%.
| How it's counted | Leads | Value counted | Cost counted | Reported ROI |
|---|---|---|---|---|
| The pitch-deck version | All 480 | ₹1,15,20,000 revenue | ₹9,00,000 retainer only | 1,180% |
| Half honest — profit, but no filters | All 480 | ₹69,12,000 gross profit | ₹12,00,000 all-in | 476% |
| Honest | 180 incremental | ₹25,92,000 gross profit | ₹12,00,000 all-in | 116% |
Assisted conversions, and why last-click undercounts SEO
Having just argued for stripping the numerator down, here's the correction in the other direction: strict last-click attribution genuinely understates organic search, and pretending otherwise is its own kind of dishonesty.
The common path looks like this. Someone reads a comparison article you wrote, doesn't convert, thinks about it for three weeks, then searches your brand name and fills in the form. Last-click credits brand search. GA4's data-driven model spreads some credit backwards, but the two touches are usually in different sessions, sometimes on different devices, and often outside the lookback window. The article did the work and gets none of the credit.
There's also a lag problem. Content published in month two typically starts earning in month six to nine, which means a twelve-month ROI calculation is measuring twelve months of cost against roughly six months of return. That's not a reason to stop measuring — it's a reason to state the window you're using and stick to it.
So report a range rather than a point. Calculate the strict number — non-branded, non-inherited, last non-direct click. Then calculate the generous one that includes assisted conversions from organic landing pages. Report both every month. If both are rising, it's working. If only the generous one is rising, somebody is stretching.
Two practical habits make either number trustworthy: track leads in your CRM rather than analytics, because your sales team knows which form fills were real; and hold the definition of "qualified" constant, because loosening it mid-engagement is the easiest way to manufacture improvement. See how to read an SEO report.
Comparing SEO ROI with paid search ROI
The comparison founders actually want is against Google Ads, and it's an unfair fight in both directions depending on the window you pick. Over one quarter, paid wins almost every time. Over three years, SEO usually wins on cost per lead — though "the asset keeps producing" means "decays slowly", not "lasts forever".
- Run both if you can. Paid tells you which keywords convert in three weeks; SEO then wins those same keywords without the per-click bill. That handoff is worth more than either channel's isolated ROI — see PPC vs SEO.
- If it's one or the other and you need revenue this quarter, it's paid. SEO is not a cash-flow instrument.
| Dimension | Paid search | SEO |
|---|---|---|
| Time to first usable data | Days | 8–12 weeks for leading indicators |
| Cost behaviour | Linear — stop paying, stop appearing, same week | Front-loaded, then compounding while maintained |
| Attribution quality | Clean and click-level | Messy — assists, lag, brand spill |
| What competition does to it | Raises your CPC directly, this month | Raises the content and link bar, over quarters |
| Honest measurement window | Weekly to monthly | 12–24 months |
| What happens if you stop | Traffic ends immediately | Traffic decays over 6–18 months as pages age |
When SEO ROI stays negative — and it does
Some businesses should not do SEO, and you can usually tell in an afternoon rather than a year.
The test is arithmetic, not enthusiasm: monthly search volume for your commercial queries, times a realistic click share, times your conversion rate, times gross profit per customer. If that doesn't clear your monthly SEO cost within eighteen months, the channel is wrong for you. Any agency can run that before you sign. Most don't.
- Genuinely new categories. Nobody searches for a thing they can't name yet. Demand has to be created first, usually on social or through PR.
- Tiny total addressable search. If forty people a month search your commercial terms nationwide, page one is worth less than one good sales hire.
- Sites you can't change. No CMS access, no developer, a locked-down template. Technical fixes are usually the first return available, and you can't have them.
- Very long, very low-volume sales cycles. If you close six deals a year, one extra deal swings ROI by hundreds of percent in either direction. The number is real but it isn't a signal.