All posts

Why Did Traffic Drop? Joining SERP Data with Your Analytics

August 28, 20268 min read

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:

ConditionCause
Rank worsened ≥ 3 positionsrank_drop
New AI Overview, you not citedai_overview_displacement
You were cited, now are notai_citation_lost
Fell out of the top 10page_one_exit
Rank improved (on a spike)rank_gain
Search unchangedunexplained_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