The short version
- Track cost, qualified visits, conversions and revenue together. A flat cost per visit does not by itself establish failure.
- Tools are a rounding error. A complete stack is under $150/mo and the essential one is free. Labour is the cost.
- SEO ROI can lag implementation, but no two-quarter loss period is universal. Google’s own starter guide says some changes take effect in hours and others take several months.
- Count branded search and direct traffic as outputs. Measuring only non-branded sessions understates a working programme.
SEO budgets get approved on optimism and cancelled on impatience, largely because nobody agrees what the return calculation should be. The problem is real: SEO has a long lag, degrading attribution, and a cost structure that looks terrible for two quarters and excellent after six. Any measurement approach that ignores those properties produces the wrong decision.
What follows is a way of modelling it that is clear about the lag without becoming an excuse for a programme that is simply not working.
The short answer
Fit for your workflow
Track cost per organic visit over time. The trend is the signal; any single quarter is noise.
Add up everything you spend on SEO in a quarter (labour above all, plus tools and contractors) and divide by organic visits for that quarter. Then watch the number across four or five quarters. A working programme shows a clear downward curve as fixed effort spreads across accumulating traffic. A flat line over a year means you are paying rent rather than building something.
- Quarters 1–2
- Measure implementation, leading indicators and revenue; do not assume negative return.
- Quarters 3–4
- Review costs, qualified traffic and conversions against agreed milestones.
- Quarter 5 onward
- Reassess the programme from evidence, not a fixed payback deadline.
The real cost structure
Proportions are illustrative rather than measured; they vary enormously by business. Tool costs come from the vendor pricing tables elsewhere on this blog.
The third row is the one that breaks budgets invisibly. Developer time to implement SEO changes is almost never in the SEO budget, so it competes with product work and usually loses. The result is a programme paying for recommendations at full price and implementing a fraction of them, which shows up in the numbers as SEO not working, when what actually happened is SEO not shipping. See in-house vs agency.
What to measure in the first two quarters
Revenue alone can be misleading early, because results may lag implementation. Track changes shipped, crawl and index evidence, relevant impressions and conversions together. Leading indicators are useful, but they do not establish that a programme will pay back.
- Indexed pages that should be indexed. Coverage problems in Search Console are the low-cost starting point.
- Impressions, which move before clicks do and show whether you are becoming eligible for anything.
- Number of queries you appear for at all. Breadth expands before depth.
- Changes actually shipped per month. An implementation measure, not a ranking predictor.
- Average position for a defined target set, tracked as a group rather than individually.
The diagnostic that settles most arguments
Count how many of the recommendations from your last audit are live on the site. Prioritise the impact and quality of implemented changes rather than using a universal half-of-recommendations threshold. Fix that before changing agency, strategy or tooling.
The attribution problem
SEO attribution is getting worse, not better. Assistant-influenced visits arrive as direct traffic. Privacy controls strip referrers. Long consideration cycles mean the first organic touch and the eventual conversion can be months apart and in different sessions. Any model that credits only last-click will systematically undervalue organic search.
The practical response is triangulation rather than a better model. Watch non-branded organic clicks, branded search impressions, direct traffic and conversion rate together. A programme that is working usually shows branded search rising even when non-branded sessions are flat. See brand vs non-brand search and direct vs organic.