Forecasting SEO traffic — and a free tool to do it
The much-missed Distilled forecaster is gone, so we rebuilt it. What statistical forecasting is actually good for, how to use the tool, and where it will quietly mislead you if you let it.
Most SEO forecasts are a straight line and a hope. Take last year, assume next year is the same but a little better, extend the trendline, done. It’s quick, it’s comforting, and it isn’t a forecast — it’s a guess wearing a ruler.
Statistical forecasting is the alternative, and it used to be genuinely accessible. Back in 2015, Tom Capper built the Distilled forecaster — a free tool that put Google’s CausalImpact model behind a text box you could paste your analytics into. When Distilled was absorbed and the tool went dark, a small, useful thing left the industry. This is our rebuild of it: same underlying model, same idea, free again. Credit for the original — and for most of the thinking below — belongs to Tom.
You can use the forecaster here. This is the how and the why.
What it actually does
Under the hood is the CausalImpact R package — a Bayesian structural time-series model. You don’t need to read the paper to use it; the whole point of the tool is that you don’t have to. You paste in a history of traffic, and it projects that history forward, with a confidence band around the projection. That band is the honest part: it’s the tool admitting how much it doesn’t know.
Using it
Five fields, left to right:
- Data frequency — daily or monthly. This isn’t cosmetic. The model looks for weekly seasonality in daily data (your dead Sundays) and annual seasonality in monthly data (Black Friday, the summer lull). Tell it the wrong frequency and it looks for the wrong rhythm.
- Start date — the date of your very first data point.
- Confidence level — how wide the band is. 95% is the sensible default. More on what that means below.
- Forecast horizon — how many periods ahead to project.
- Historical data — paste one value per line, straight from your analytics platform. No headers.
Generate, and you get a chart: your actual history as a solid line, the forecast as a dashed one, and the confidence band shaded around the forecast. Export the lot to CSV if you need the numbers.
What the confidence band means
For any single point in the future, the forecast line is the expectation — if you forced us to name one number, that’s it. The shaded band is the range where, if the model holds, there’s a 95% chance the real number lands (at 95% confidence). Outside the band sits the remaining 5% — 2.5% either side.
If you’ve run an A/B test, you already know this shape. Saying a result is “95% significant” is the same as saying it fell outside the 95% band — that if nothing had really changed, there was only a 5% chance of a number landing this far from expectation.
Where it goes wrong
Two failure modes, both about the data you feed it.
Large one-off spikes. A viral post or a PR hit that added a huge, unrepeatable spike doesn’t mean anything to the model — it can’t tell a freak event from a pattern, so it widens the band enormously to cover its confusion. Either exclude the spike (forecast a clean segment — say, your core revenue landing pages only), or accept that the model can’t help until you account for the spike explicitly.
Not enough data. The minimums are 14 days of daily data or 24 months of monthly, but more is genuinely better. Give it 16 months with a single January in the middle and it can’t tell whether that January bump is an annual sales spike or a one-off — and neither can you. Under 12 months and it has never seen a January at all; any forecast simply won’t account for one. Two full years of monthly data is where this starts to earn its keep.
What it’s for
Forecasting, and setting targets. The obvious use. But sit with the assumption underneath it: the forecast is what happens if everything continues exactly as it has. If Google has knocked you every six months, the forecast bakes that in. If your traffic is only holding up because of a campaign you’re running, it assumes you keep running it. Which means, unless something is about to change, your forecast is your target — setting a goal that assumes a miracle out of nowhere isn’t ambition, it’s fiction. Sometimes the honest target is a decline, and that’s exactly where this earns its keep: you can go to your boss, or your client, and say “this is what happens if nothing changes — here’s what I want to change.”
Detecting change. Sometimes the question isn’t “what happens next?” but “did that thing we did actually do anything?” Take your data up to — but not including — the date of the change: a migration, a redesign, an algorithm update. Forecast forward from there. That gives you a counterfactual — what would have happened if nothing had changed — and you lay the real numbers over it. Stay inside the band and the change probably did nothing measurable. Stray outside it and you’ve found a real, significant effect, and you can date it.
Calculating ROI. The same move as detecting change, with two shifts: you’re usually looking at revenue rather than sessions, and you care less about whether the effect was significant than about how big it was. The gap between the counterfactual and reality is your best estimate of what the change was worth.
The caveat that matters
This is all what, and never why or how. A counterfactual can tell you traffic diverged from expectation the week of your on-page change — it cannot tell you the change caused it. If something else happened the same week (an unrelated press mention, a competitor’s outage), the model can’t separate the two, and even a more complex one might miss a third thing you never saw.
That’s not a reason to go back to eyeballing lines and vague platitudes — this is a large improvement on that. It’s a reminder that a forecast is an input to judgment, not a replacement for it. You still have to know what’s going on.