All insights
Strategy· Mar 14, 2026· 14 min read

The revenue model we attach to every audit (template + assumptions)

How to value SEO and software work in dollars before you do it. The exact spreadsheet structure we use, with the assumptions that hold up to CFO scrutiny.

AM
Aman Mathur
Founder, SERP Axis

1. Why most SEO ROI models fail in board meetings

An SEO agency presents a model: 'we'll get you 50,000 more monthly visits in 6 months, that's $480K of incremental revenue.' The CMO loves it. The CFO asks four questions in 90 seconds, and the entire model collapses.

What CFOs actually ask: (1) What's the confidence interval, not the point estimate? (2) What's the time-to-rank distribution — is half of this in month 6 or month 12? (3) What's the assumed conversion rate, and is that grounded in our actual data? (4) If we don't fund this, what's the counterfactual — does organic decline? (5) How do we true this up against actuals quarterly?

Most agency models can't answer these. Ours can — because we built the model to answer them, not to make a sale.

2. The five inputs that determine the dollar answer

The model is multiplicative: small errors in any input compound into large errors in the output. A 30% error on each input compounds to a 5× range at the output.

Our convention: every input gets a low / mid / high range. The output is therefore a range too — not a point estimate. The range is the model's most honest output.

InputSourceConfidence
Search volume per keywordAhrefs / Semrush / GSC actual dataMedium — these tools differ by 40% on the same query
CTR by positionReal CrUX + CTR studies (Advanced Web Ranking, 2024)Medium — varies by SERP feature presence
Conversion rate by intentClient's actual GSC + GA4 data per page typeHigh when client has data, low when extrapolated
LTV / order valueClient's CRM + finance dataHigh if client knows their unit economics
Time-to-rankHistorical data on 60+ similar engagementsMedium — depends on starting domain authority

3. CTR curves — the most-debated input

CTR by SERP position is empirically observable but varies wildly by SERP feature presence. The Advanced Web Ranking 2024 dataset is our default; we adjust it down 15–30% for SERPs with AI Overviews and 25–40% for SERPs with shopping carousels.

PositionCTR (no SERP features)With AI OverviewWith shopping/local carousel
127.6%19.2%16.2%
215.8%11.0%9.5%
311.0%7.7%6.8%
48.4%5.9%5.0%
56.3%4.4%3.8%
64.9%3.4%2.9%
73.9%2.7%2.3%
83.2%2.2%1.9%
92.7%1.9%1.6%
102.3%1.6%1.4%
If you can use real data, do

GSC's per-query CTR data is the strongest input. If the client has GSC verified for >12 months, use their actual CTR for queries you've ranked for as the calibration baseline.

4. Time-to-rank curves (the missing variable in most models)

Cumulative revenue is the integral under this curve, not the month-12 value times 12. Most agency forecasts overstate Q1 revenue by 60–80% by missing this.

Domain Rating startingMonth 1Month 3Month 6Month 9Month 12
DR 10–20 (new)5%12%31%62%100%
DR 30–40 (mid)8%22%48%78%100%
DR 50–60 (established)12%32%62%85%100%
DR 70+ (authoritative)18%44%72%90%100%

5. Confidence intervals (low / mid / high) — the only output a CFO trusts

Every forecast we hand a CFO is presented as low / mid / high. The point estimate is the mid. The low is 'if every input lands at p25 of its range'. The high is 'if every input lands at p75'.

This is mathematically conservative — the actual distribution is narrower because not every input correlates. But conservative is the right bias for an agency forecast: under-promise so the actuals can over-deliver.

Pseudo-code: Monte Carlo sampling for confidence intervals
javascript
// 10,000 trials. Each trial samples each input from its distribution.
const trials = 10000;
const results = [];

for (let i = 0; i < trials; i++) {
  const searchVolume = sample(searchVolumeDistribution); // log-normal
  const ctrAtPosition = sample(ctrDistribution[targetPosition]); // beta
  const conversionRate = sample(convRateDistribution); // beta
  const ltv = sample(ltvDistribution); // log-normal
  const timeToRankWeight = sample(timeToRankCurve);   // sigmoid

  const monthlyVisits = searchVolume * ctrAtPosition * timeToRankWeight;
  const monthlyConversions = monthlyVisits * conversionRate;
  const monthlyRevenue = monthlyConversions * ltv;

  results.push(monthlyRevenue);
}

results.sort((a, b) => a - b);
const low = results[Math.floor(trials * 0.10)];   // p10
const mid = results[Math.floor(trials * 0.50)];   // p50 (median)
const high = results[Math.floor(trials * 0.90)];  // p90

// We present: "Annual incremental revenue: $480K (low) — $1.2M (mid) — $2.1M (high)"

When a CFO sees a low/mid/high range, two things happen: (1) they trust the agency more because we acknowledged uncertainty, and (2) they fund the project at the low number, which means we can over-deliver against expectations.

6. The spreadsheet structure (we hand this over to clients)

Every audit ends with a delivered Google Sheet. Five tabs:

  • Tab 1: Inputs. Every assumption is a labeled cell. Color-coded by source (blue = client data, green = industry benchmark, yellow = our estimate).
  • Tab 2: Keyword opportunity. One row per target keyword. Columns: search volume, current position, target position, target CTR, expected monthly clicks, expected monthly conversions, expected monthly revenue.
  • Tab 3: Time-to-rank model. The sigmoid curve as a per-month percentage. Sums the keyword tab into a per-month forecast.
  • Tab 4: Sensitivity. What happens to the forecast if conversion rate is 50% lower than assumed? If LTV is 30% higher? Shows which inputs matter most.
  • Tab 5: Reconciliation. Monthly tracker. Forecast vs actuals, side by side. Updated quarterly.
Why we hand it over

Half the founders we audit just take the spreadsheet and execute internally without hiring us. We're fine with that. The audit is genuinely free. About half of the other half become engagements anyway, because the model surfaces work they'd rather outsource than DIY.

7. The 7 CFO questions you must be able to pre-answer

If you can answer all seven cleanly, you'll be the only agency in the bake-off who can. The forecast becomes the work, and the work becomes the forecast.

  1. 1What's the confidence interval, not the point estimate? Answer with low/mid/high based on Monte Carlo, not optimistic vs pessimistic vibes.
  2. 2How does this compare to the counterfactual? If we don't fund this, do we hold steady or decline? Answer: with declining DR, traffic decays 4–8% per quarter post-stall.
  3. 3What's the time-to-payback? Cumulative revenue minus cumulative spend, month by month. We typically show payback at month 7–10 for retainers.
  4. 4What's our hurdle rate, and does this beat it? IRR of the engagement vs the company's cost of capital. Usually 4–8× hurdle rate is the IRR for organic SEO retainers.
  5. 5What can go wrong, and how would we know early? Quarterly trueing-up against forecast. The first dashboard milestone is at week 12.
  6. 6How does this depend on inputs we don't control? Algorithm updates can change the trajectory. We model algorithm-update risk as an annual 10–20% drag and budget for it.
  7. 7Why you, vs in-house? Senior speed-to-execution + the methodology you don't yet have in-house. Compare hiring + onboarding cost (typical: $180K + 3 months) vs retainer.
Tags
Revenue modelSEO ROIOpportunity modelCFOForecasting
4 strategy seats remaining · Q3

The cost of waiting
is your competitor.

Every 90 days you delay is 90 days of authority compounding for someone else. Get the audit. See the math. Then decide.

Money-back
60 days
Reply within
3 hours
Audit value
$2,400 yours, free