Every input in the SEO ROI calculator, where to find it, and what it does to the answer.
Eight numbers go in and a break-even month comes out. This is what each one is, which report it lives in, and how wrong the answer gets when you guess it. There is a worked example at the end using a $5,000 audit.
The only input that is actually measured.
Sessions from organic search in a normal month, taken from GA4 or the clicks column in Search Console.
Use a recent typical month rather than your best one, and if the business is seasonal use an average across a full year. Everything downstream is a percentage of this number, so an optimistic starting point does not produce a slightly optimistic answer, it produces a proportionally wrong one all the way through.
One thing this number is not: total demand. Sessions count people who clicked, and a large share of searches now end without a click at all. That gap is real, it is the subject of the great decoupling, and the calculator deliberately ignores it. Counting demand you cannot verify would make the tool flattering and useless.
The input people quote from memory, and the one that breaks the model.
The share of organic sessions that become a lead: a demo request, a trial signup, a form fill, whatever your funnel counts as hand-raising.
Get this from your analytics conversion rate segmented to organic, not sitewide. Sitewide blends in paid landing pages and direct traffic from people who already know you, and both convert far better than someone arriving from a search result.
If an output looks implausible in either direction, check this input first. It is the number teams most often recall rather than look up, it is usually recalled about double, and because it multiplies against everything after it a small error here swings the entire answer. For most B2B SaaS the honest figure is between 1% and 3%.
Ask sales, not marketing.
The share of those leads that become paying customers, which lives in the CRM rather than in analytics.
The important qualifier is that it must be the close rate for organic leads specifically. Inbound search leads and outbound-sourced leads convert at different rates and on different timelines, and averaging them together will flatter whichever channel you are trying to justify.
Sessions times lead rate gives leads per month. Leads times this gives customers per month. That is the entire acquisition chain, and it is the part every calculator agrees on. The disagreement starts with what a customer is worth.
Lifetime value, not the first invoice.
Total revenue from an average customer across their entire relationship with you, not the value of the deal that signs.
For a subscription business those are very different numbers, and average deal value understates the return badly, because the customer organic search brought you renews. Lifetime value is the input the rest of your growth model already runs on, so use the figure finance already accepts rather than deriving a new one here.
Note that this is revenue, not profit. The calculator converts it to profit using the margin input below, which is the point of asking for both separately.
How long that value takes to actually arrive.
The number of months an average customer stays, which is the input that separates this model from the ones that report a one-month payback.
A customer worth $18,000 over 30 months is not worth $18,000 in the month they sign. They are worth $600 of revenue a month, thirty times, and only if they stay. Booking the whole lifetime value at signature and comparing it against a single month of spend is how a calculator tells you an SEO program pays for itself immediately.
So the model runs a cohort simulation instead. Each month the program acquires some customers, each customer pays gross profit every month for the length of their life, and the active base in any given month is every cohort still inside that window. If you shorten this input, the same lifetime value arrives faster and break-even moves earlier. If you lengthen it, the value is larger in total but slower to land.
What turns revenue into return.
Your gross margin as a percentage, which is what converts lifetime value into gross profit and makes the output a number finance recognises.
A calculator that multiplies customers by lifetime value is reporting revenue and calling it return. At an 80% margin, a fifth of that figure was never yours. For a services business at 45%, more than half of it is fictional. Ignore margin and you tell a business with 40% margins the same story you tell one with 85%, and only one of those business cases is real.
Every output downstream of this input is gross profit. The practical consequence is that the headline number gets smaller, which is the point: a business case that survives a finance review is worth more than one that looks better in a deck.
Everything the program costs, including your own people.
What the program costs per month: agency or consultant fees, writers, tooling, and the loaded cost of internal time.
Internal time is the line most people leave out, and leaving it out is what produces a return that cannot be reproduced. If a content manager spends half their week on this, half their salary belongs in this field. The calculator is only as honest as this input, because it is the entire denominator.
This field is recurring by design, which means a one-time cost like an audit does not fit it cleanly. The workaround is to spread the one-time cost across the months you expect it to influence and add that to your ongoing spend, which is exactly what the worked example below does.
The ramp, because nothing works in month one.
How long before the program is acquiring at full strength, defaulting to six months.
Dividing total spend by monthly value assumes the program performs at full strength from day one, which reports a payback that does not happen. Acquisition climbs toward full effectiveness over this period, matching the three-to-six-month window in how long SEO takes to work.
Two ramps then compound. The program ramp is this input. The cohort ramp is structural: even once acquisition is steady, the revenue base keeps building, because month twelve collects from every cohort still inside its lifetime rather than just the newest one. The simulation walks sixty months forward accumulating both, and returns the first month cumulative gross profit clears cumulative spend. On the chart, that is where the line crosses zero. If it never crosses, the tool says so instead of reporting a number.
A $5,000 audit, and the month it pays for itself.
A B2B SaaS doing 2,000 organic sessions a month buys the $5,000 audit and then spends $2,000 a month executing the roadmap. Break-even lands in month 17.
Here is how those inputs are set, and why:
- 2,000 sessions, 2% to lead, 2% lead to customer. That is 40 leads and 0.8 customers a month at full effectiveness.
- $18,000 lifetime value over 30 months at an 80% margin, which is $480 of gross profit per customer per month, not $14,400 the day they sign.
- $2,417 a month. The $5,000 audit spread across twelve months is $417, plus $2,000 of execution. The one-time fee has to be amortised because the spend field is recurring.
- Six-month ramp, the default.
The walk that produces:
- Month 6: 2.8 active customers, $1,344 that month, cumulatively $10,918 down. This is the trough, and it is the month programs get cancelled.
- Month 12: 7.6 active customers, $3,648 that month, still $9,292 down. Year one closes at minus 32%.
- Month 17: 11.6 active customers, $5,568 that month, cumulatively $2,623 up. This is break-even.
- Month 36: 24 active customers, $11,520 that month, cumulatively $131,868 up.
The negative first year is the most useful output on the page, and it is the reason no vendor-built calculator will show you one. A tool whose job is to justify a retainer cannot afford to tell you the first twelve months lose money. That year is real, it is what the compounding costs, and a buyer who understands it going in does not cancel in month seven.
Change one input and watch it move. Cut execution spend to zero and treat the audit as the only cost, and the same site breaks even in month 5. That is a real scenario if you genuinely have the team to implement in-house, and a fantasy if implementing means someone's evenings, which is the case for putting internal time in the spend field.
What it refuses to do.
- No benchmark averages. There is no "average SEO ROI" figure anywhere in the tool. Any such number describes somebody else's margins, sales cycle and competitive set.
- No email gate. Results are visible immediately. A gated calculator is invisible to answer engines and uncitable, and gating a number someone just generated from their own inputs is absurd.
- No forecast language. The print-out calls the break-even month a planning estimate and lists every assumption it rests on, because the output is only ever as good as the conversion rates somebody typed from memory.
Where it breaks.
The model assumes steady inputs. It does not know about seasonality, a competitor relaunch, or a core update landing in month four.
It cannot validate whether your conversion rates are plausible, only compute what follows if they are. It assumes churn is a clean cliff at the end of the stated lifetime rather than a monthly rate, which slightly favours the later months. And it has no field for one-time costs, which is why the audit had to be amortised above.
It also assumes the work ships. In practice that is the most common reason a projection like this misses: the plan was fine and nobody owned the decisions it depended on.