How can I forecast organic revenue when search performance is uncertain?
Short answer
Forecast existing pages and new pages separately, because they behave nothing alike. Sort existing pages into four decay buckets and apply a decline rate to each, then model new pages on an intent-specific ramp curve with a CTR discount for queries AI answers now absorb. Run the whole thing as base, upside, and downside, and publish the assumptions next to the numbers. Hidden assumptions are what get forecasts killed.
Why top-down forecasting fails on contact with a CFO
The bad forecast starts from a traffic goal. "We need 500,000 sessions, so we need X articles." That reverses causality, because traffic is an output you can't promise into existence.
Bottom-up starts from what exists and asks two questions. What will my current pages do over 12 months if I publish nothing new, and what will new pages add on top at realistic ramp rates. Revenue enters last, through conversion rate and close rate.
Every number in a bottom-up forecast traces back to a page and a real conversion rate, which is why it survives scrutiny.
Sort existing pages into four decay buckets
Pull every page that produced a session or lead in the last 12 months and compare last quarter's average sessions to the prior three quarters. That comparison sorts each page into one bucket:
| Bucket | Typical share | Assumption for next 12 months |
|---|---|---|
| Rising | 10 to 20% | Continues at last quarter's growth rate |
| Stable | 30 to 40% | Flat |
| Slow decay | 25 to 35% | 5% quarterly decline |
| Fast decay | 15 to 25% | 15% quarterly decline |
Decide now which fast-decay pages get refreshed and which get pruned. Deferring that decision inflates the forecast without changing what actually happens.
Multiply each bucket's traffic by conversion rate and revenue per conversion, and you have a baseline your CFO can check against last year's actuals.
Model new pages on an intent-specific ramp
New pages don't arrive at steady state. Apply a ramp: 5 to 10% of steady-state traffic in months one to two, 25 to 40% by months three to four, 60 to 80% by month six, and 90 to 100% by month nine.
Ramp speed and conversion both vary sharply by intent, so split before you forecast:
| Intent bucket | Ramp to 50% traffic | Conversion rate range |
|---|---|---|
| Bottom-funnel commercial | 3 to 5 months | 1.5% to 5% |
| Comparison and alternative | 4 to 6 months | 1% to 3% |
| Top-funnel educational | 6 to 9 months | 0.2% to 0.8% |
Apply the CTR discount that keeps top-funnel honest
Steady-state traffic comes from search volume times a click-through rate assumption, and this is where most forecasts now break. AI answers absorb clicks unevenly, so a flat CTR assumption overstates top-funnel and understates commercial.
The discount table that holds up:
| Query type | CTR discount |
|---|---|
| Pure informational ("what is", "how does X work") | 40 to 60% |
| Product-adjacent JTBD ("how to do X with software") | 15 to 30% |
| Comparison and alternative ("X vs Y") | None, often a modest lift |
| Bottom-funnel commercial ("best X for Y") | None, often a modest lift |
Apply the discount to forecast traffic only, never to the historical baseline. That distinction is where finance teams push back hardest, and getting it right protects the rest of your model.
Our own state of AI search research, covering over 22,000 answers, found Google AI Mode returns a citation-rich answer in 97.4% of matched B2B queries. That answer frequently satisfies the informational query without a click, which is exactly why the discount is steepest at the top of the funnel.
Add the AI-search line separately
The same research found that once a brand is mentioned in an AI answer for a prompt, next-observation mention probability is 83.2% on ChatGPT, 83.3% on Perplexity, and 84.2% on Google AI Mode. Presence compounds, so the visibility you build this quarter keeps paying next quarter. On the click side of the model, Pew Research found that when an AI summary appears, users click a source link in only about 1% of visits, which is the figure to cite if anyone challenges the size of your CTR haircut.
Model that as brand-lift feeding branded search over four quarters, on its own line rather than blended into organic clicks. Keeping the estimated part visibly separate from the observable part is what makes your CFO trust both. See How can I value zero-click exposure when the buyer never visits our website?.
Build it in five steps
1. Export 12 months of data. GA4 sessions per page, GSC clicks per page, conversion rate per page, revenue per page via CRM join.
2. Bucket every URL by decay rate. Last quarter vs. prior three.
3. List every planned article. Assign intent bucket and estimated steady-state traffic.
4. Apply the CTR discount and ramp curve. One row per page, one column per month, one sheet per scenario.
5. Set the trigger conditions. For example, if bottom-funnel pages produce fewer than X leads for two consecutive months, redirect spend.
Refresh it monthly with an agent
The forecast decays the moment it's built, because decay buckets shift and new pages enter the ramp. Refreshing it by hand is a half-day nobody schedules.
GSC Page Performance Summary returns the daily series per page, which is what the decay bucketing needs rather than a period total. The declining-pages recipe surfaces the fast-decay set automatically, replacing what is usually a manual GA4 audit, and fresh-win-opportunities surfaces pages entering the ramp so they get modelled rather than missed.

The monthly agent:
Start (schedule, 1st of month) → GSC Page Performance Summary (daily, 24 months) → top-performers recipe → declining-pages recipe → fresh-win-opportunities recipe → share-of-voice recipe → HubSpot Get CRM Objects (deals last 90 days) → workflow-memory (retrieve last month's forecast) → Code (re-bucket every URL by decay rate, apply the CTR discount by query type, recompute all three scenarios, and diff against the prior forecast) → Conditional (if actual diverges from base case by more than 15%, branch to an explanation path) → Prompt LLM (report the variance and name which bucket caused it) → Excel export → Send Email to CMO and CFO.
The Conditional is what turns this from a report into a control. A forecast that quietly drifts 20% from actuals for two quarters is worse than no forecast, and the branch forces the variance into the open the month it appears.
FAQ
Related answers
- How do I defend my SEO and content budget to a CFO who wants a revenue forecast?
- How do I prove SEO is generating revenue and not just traffic?
- How should I budget for SEO when AI answers are reducing organic clicks?
- How much of our organic revenue is new demand versus branded demand capture?
Want to refresh your organic forecast on live data every month? Start a free Analyze AI trial and wire it to your GA4, GSC, and CRM in a single afternoon.
