One night, the page-view graph looked as if the blog had suddenly received a strong burst of attention.
Total views increased sharply. If I had looked only at that metric, it would have been easy to assume that many new readers had arrived.
But deduplicated views barely changed.
That gap became more useful to me than the absolute view count.
First, Be Explicit About What Each Metric Counts
Total views every eligible page viewthat reaches analytics Deduplicated views views after the projectdeduplication rule is appliedDeduplication does not automatically mean an exact number of people. Its meaning depends on the project rule: cookie, session, a fingerprint-like key, a time window, or another model.
So I do not call deduplicated views "real users." But they are useful for showing how much of raw view volume comes from repeated activity.
During Normal Growth, Both Metrics Often Move in the Same Direction
Example A total views 100 -> 160deduplicated views 70 -> 110 Both increased.The gap changed, but growth existsin both measures.This is not a universal rule, but this pattern does not automatically look suspicious to me.
More raw views are accompanied by more deduplicated views, so growth is visible beyond repeated requests.
The Strong Signal Appears When Total and Deduplicated Views Diverge
Example B total views 100 -> 900deduplicated views 70 -> 82 Raw volume exploded.Deduplicated activity barely moved.This pattern does not prove bot traffic.
But it tells us that a large amount of new page-view volume did not produce a comparable increase in deduplicated activity.
For me, that is no longer an interesting metric difference. It is a trigger for investigation.
It Helps to Look at the Ratio, Not Only the Counts
repeat_factor = total_views / deduplicated_views Example: 160 / 110 = 1.45 900 / 82 = 10.98I do not use one magic threshold such as "above 5 means bot."
A normal value depends on content type, UI behavior, refresh patterns, time of day, and the deduplication rule itself.
But a sudden change from the project own baseline is often more useful than a universal threshold.
The Time of the Anomaly Adds Context but Is Not Proof
In my case, these divergence spikes repeatedly appeared at night.
For a small blog, that was another unusual feature: raw traffic rose sharply during hours when the normal audience did not show comparable growth in the deduplicated metric.
But time of day alone proves nothing either. It only strengthens or weakens other signals.
After Divergence, I Do Not Block Traffic. I Drill Down.
Analytics acts as an early-warning system here.
After a spike, I inspect which URLs received requests, which countries, devices, browsers, user agents, hours, and sources dominated, and then compare that with web-server logs.
Only after that can I talk about a concrete cause.
In My Case, the Analytics Signal Matched Server-Side Evidence
During the same periods, server logs showed repetitive requests to technical and sensitive-looking paths.
That correlation changed the confidence level: the divergence in views was a signal, while the server-side request pattern provided evidence of automated activity.
I cover the security side separately in the separate article about traffic that looks human but behaves like a bot. The important point here is different: the pair of analytics metrics was the first indication that raw traffic did not resemble normal audience growth.
I Do Not Turn an Analytics Anomaly into Automatic Bot Classification
A large total-to-deduplicated gap can have other explanations.
- a user repeatedly refreshes one page;
- the frontend accidentally sends the view event more than once;
- prefetch or navigation behavior changed;
- one URL receives a large amount of repetitive referral traffic;
- the deduplication rule is too aggressive and merges distinct visits.
So divergence is a reason to inspect the data, not a ready-made verdict.
The Anomaly May Reveal an Analytics Bug Instead of a Traffic Problem
Unexpected gap Possible cause A:repetitive traffic Possible cause B:duplicate tracking Possible cause C:deduplication rule changed Possible cause D:new navigation behaviorThis is one reason I do not want to hide total views and show only deduplicated views.
The raw metric shows that the system received unusually high activity, while the deduplicated metric shows how much of that activity created new deduplication buckets.
Together they can reveal not only abnormal traffic but also a regression in tracking code.
Do Not Merge Metrics Just Because They Describe the Same Page
This is the same principle I use in the article about the difference between a Share action and a shared-link visit: two related events or measurements can produce useful signals precisely because they remain separate.
If total views were automatically replaced by deduplicated views, or the dashboard showed only one number, the overnight pattern would have been much harder to notice.
In the Dashboard I Want Both Metrics Side by Side
Hour Total Dedup Repeat factor 20:00 118 81 1.4621:00 742 86 8.6322:00 905 89 10.1723:00 131 84 1.56These numbers are illustrative, but this is the shape I want to notice.
A daily total can hide a short overnight spike. An hourly breakdown shows that the divergence was localized in time and then disappeared.
A Baseline Is More Useful Than a Universal Threshold
For one site, a repeat factor of 2 may be normal; for another, it may already be unusual.
So I compare the current hour not with an abstract "correct" number but with the project own history: similar times of day, content types, and days.
An anomaly is primarily a deviation from the normal behavior of that particular system.
The Gap Can Become an Anomaly Signal
$repeatFactor = $deduplicatedViews > 0 ? $totalViews / $deduplicatedViews : null; $isSuspicious = $totalViews >= $minimumVolume && $repeatFactor !== null && $repeatFactor > $expectedBaselineFactor;A minimum volume matters here. A ratio of 10 / 1 looks large, but at such low volume it may simply be noise.
And even after the signal fires, I do not automatically ban anything. It is only a reason to open a more detailed view.
What I Check After This Kind of Spike
- hourly total versus deduplicated trends;
- which pages or routes produced most of the volume;
- countries, devices, browsers, and operating systems;
- sources, channels, and referral domains;
- whether one user agent or request pattern repeats;
- whether spike timing matches web-server logs;
- whether a deployment or tracking change happened before the anomaly;
- whether the deduplication logic itself changed.
What I Do Not Do After One Divergence Spike
I do not label the entire spike as bot traffic based only on the ratio.
I do not remove total views from analytics just to make the graph look cleaner.
I do not rewrite historical data before understanding whether the issue is traffic, classification, or tracking.
And I do not make a security decision from one frontend metric without server-side evidence.
Two Imperfect Metrics Together Can Produce a Strong Signal
Total views alone show volume. Deduplicated views alone show volume after the project deduplication rule.
But in this case, the most useful information came from the gap between them.
When raw volume jumped while deduplicated activity barely moved, the system gave a signal: do not celebrate the traffic spike yet; first investigate what actually created those requests.
An anomaly does not always live in one number. Sometimes it becomes visible only when two metrics stop moving together.



