Why Did Traffic Drop? Joining SERP Data with Your Analytics
Two halves of one question
Open any analytics tool and you can see a page lost traffic. What you cannot see is why. Open a rank tracker and you can see a position changed. What you cannot see is whether anyone noticed.
The answer needs both, joined.
The join
For a page, over a 90-day window:
1. Bucket daily pageviews into ISO weeks.
2. Compare the last complete week to the one before it.
3. For that page's target keywords, fetch the current position and AI Overview status.
4. Compare against the previous recorded observation.
5. Attribute a cause.
The output is a sentence:
> Traffic to /guides/email-templates dropped 33% this week (616 → 413 views). Likely cause: rank slipped #3 → #6 on 'free email templates', and a new AI Overview now quotes competitorx.com and competitory.com instead of you.
The newer failure mode
Google's AI Overview sits above the organic results. When it answers the question well, people read it and never scroll. If it cites your competitors and not you, clicks fall while your rank does not move at all.
A rank tracker reports "still #3, nothing wrong." The traffic disagrees. That gap is unexplainable without checking citation status, and it is becoming one of the more common causes of an unexplained drop.
Rules, not a language model
It is tempting to hand both datasets to an LLM and ask for an explanation. Resist it. Attribution should be a deterministic rule cascade:
| Condition | Cause |
|---|---|
| Rank worsened ≥ 3 positions | rank_drop |
| New AI Overview, you not cited | ai_overview_displacement |
| You were cited, now are not | ai_citation_lost |
| Fell out of the top 10 | page_one_exit |
| Rank improved (on a spike) | rank_gain |
| Search unchanged | unexplained_by_serp |
That last row carries the most weight. A tool that always finds a search cause is guessing. When rank and citation status are unchanged, the honest output is "the cause is probably not search — check referrers, campaigns, or a recent deploy."
Two thresholds, not one
A change is significant only if it clears both a relative and an absolute floor — say 15% and 20 views.
A relative-only threshold reports "3 views → 6 views, traffic doubled!" That is the fastest way for a correlation feature to embarrass itself on a low-traffic page.
Exclude the current week
Comparing an in-progress week against a complete one manufactures a drop every single Tuesday. Always compare the last two complete weeks.
Conserving API calls
SERP APIs bill per search. Three cache layers keep that manageable: an in-memory coalescing cache so concurrent requests share one fetch, a durable snapshot table so restarts do not re-fetch, and a per-keyword minimum age before a re-check.
Positions do not change minute to minute. A 24-hour snapshot is almost always as good as a live one, at a fraction of the cost.
Try InsightsTrack free
Open-source, self-hosted, privacy-first analytics — explore the live demo, no install required.
Open live dashboard