The report lands in your client's inbox on a Tuesday morning. October traffic is down 18% compared to September. You shipped every deliverable last month: the technical fixes, the content refreshes, the internal link pass. The work was real. But the number says minus eighteen, and by noon your client has forwarded it to their CMO with a question mark.
The problem is not your strategy. The problem is MoM.
Month-over-month is the default reporting frame in SEO, and it has a structural problem that most other marketing disciplines do not share. SEO performance is seasonal, lagged, and nonlinear by nature. MoM reporting treats it as if it were none of those things, which means it routinely makes a working strategy look broken.
A moving average is the fix. And it is almost entirely absent from client SEO reports.
Why MoM Misrepresents SEO Performance
There are three specific reasons MoM creates problems for SEO, and they compound each other.
Seasonality Is Structural, Not Accidental
Most websites have predictable annual traffic patterns. B2B and SaaS sites go quiet in late July and August when decision-makers are on holiday. Finance content spikes around tax deadlines. E-commerce surges in Q4. These patterns repeat every year regardless of what you do. When you compare October to September, or July to June, you are not measuring your SEO performance. You are measuring the calendar. A seasonal dip that happens identically every year will always look like a failure in a MoM comparison.
Year-over-year comparisons partially address this, but they trade one problem for another: a 12-month lag that makes it impossible to see what has been happening in the last quarter. More on that below.
SEO Results Lag Behind the Work
Content published in March might not fully index until April. Links built in May might pass authority in June. A technical change often shows in rankings six to eight weeks after it ships. When a client reads a MoM drop, they are typically seeing the lagged result of something from two months earlier, compounded by seasonal patterns, not a verdict on last month's work. The MoM number assigns a clear score to a question it was never designed to answer.
MoM Assumes Linear Growth
It treats SEO like a channel that should deliver the same positive increment every month. Real SEO trajectories are jagged: some months strong, some flat, some dipping, while the underlying trend climbs. MoM forces readers to judge each month as a pass or fail. The relevant question is whether the longer trajectory is improving.
The Same Data, Two Different Stories
The widget below shows a simulated year of organic clicks for a B2B website with a genuine underlying upward trend and normal seasonal variation. Toggle between views to see how differently the same data reads.
In MoM view, June, July, and December all read as failures. In the moving average view, the upward trend is visible and unambiguous from the first quarter onward. The data is identical. The framing is the difference between a client who trusts the strategy and a client who demands an explanation for every dip.
What a Moving Average Shows Instead
A moving average replaces each month's total with the average of the surrounding period. For a 3-month trailing average, instead of seeing October's raw number, you see the average of August, September, and October. The seasonal peaks and valleys average out. What remains is the direction.
For client reporting, direction is almost always the real question. Is the strategy working? Is performance genuinely improving, declining, or flat? The moving average answers that cleanly. MoM answers a different question, how did this month compare to last month, which is useful context but rarely the right lens for evaluating an SEO strategy.
The smoothed line does not hide bad news. If performance genuinely dropped over a quarter, the moving average will show that clearly. What it removes is the variation that carries no information about whether the work is producing results.
Choosing the Right Window for Client Reports
The window size (how many months the average spans) controls how sensitive the line is to recent movement.
3-Month Window for Monthly Reporting
For most client-facing SEO reports, a 3-month (13-week) moving average is the right starting point. It smooths out one full quarter of seasonal variation while remaining responsive enough to show genuine shifts. If traffic has genuinely declined over a sustained period, the 3-month average will show it. If the strategy is compounding, the upward slope will be visible without the month-to-month noise that triggers questions every four weeks.
4-Week Window for Weekly Reporting
A 4-week moving average works better for weekly-reported clients who want more granularity. It removes the weekday/weekend pattern and short spikes without flattening the line too aggressively.
A 6-month or longer window is generally too slow for active client reporting. By the time a real problem shows up in that average, you have already been aware of it for weeks.
How to Present This in the Actual Report
The moving average does not have to replace MoM. The most effective approach shows both: the raw MoM number the client is used to seeing, plus the smoothed trend that answers the real question.
A concrete framing:
Organic clicks were down 8% in October compared to September. This is consistent with the normal seasonal pattern in this industry, where Q3-to-Q4 transitions typically show a dip before the autumn ramp-up. The 3-month moving average shows a +12% improvement since July, which indicates the content investment is compounding on schedule.
That paragraph does three things: acknowledges the number the client is looking at, provides context that explains it without dismissing it, and redirects attention to the metric that answers the question they care about. You are not hiding the MoM number. You are framing it correctly.
For executive-level stakeholders, the smoothed trend line in a chart is often sufficient. A line that visually climbs from left to right over a year communicates more clearly than any MoM table, and it does not require a paragraph of caveats to be understood correctly.
How to Get Moving Averages on Your GSC Data
Three approaches depending on how your reporting workflow runs.
Google Sheets
Export from the Dates tab in GSC and add a moving average column using an OFFSET-based rolling formula. The formula and step-by-step setup are in Three Ways to Add a Moving Average to Your SEO Data. For a 3-month reporting window, change the window value in the formula from 7 to 90 (for daily export data) or use 3 if you have already aggregated to monthly totals.
Python (pandas)
One line handles the calculation. For daily export data, df['clicks'].rolling(window=90).mean() gives you a 3-month trailing average. If your data is already aggregated to monthly totals, use window=3 instead. Full setup and export code is in the same article.
Advanced GSC Visualizer
When a client question comes in and you need to check the trend before you respond, pulling a spreadsheet together takes longer than the answer is worth. The extension adds the moving average overlay directly inside GSC, no export needed. Open the performance chart, click More in the extension controls, select the window size, and the smoothed line appears on the chart you are already looking at. The screenshot goes straight into the report.
For daily chart data the extension offers 7-day and 14-day options. If your client report is monthly, export to Sheets and use the 90-day window there. Both paths take under two minutes.


