Why your analytics numbers never match
Install a second analytics tool alongside your first and you will discover something uncomfortable: they disagree. Not by a rounding error. By twenty, thirty, sometimes fifty per cent.
The instinct is to work out which one is broken. Usually neither is. They are counting different things, in different places, at different moments, and calling both results “pageviews”.
Where the gap comes from
Blocked scripts. Anything that counts by loading a third-party JavaScript file is invisible to a large slice of your audience. Content blockers ship in browsers now rather than as extensions, and analytics domains are on every list. On a technical audience, the shortfall can be very large. On a general one it is smaller but never zero.
A tool that counts on your own server sees those visits. A tool that relies on a script from someone else’s domain does not.
Caching. If a page is served from a cache, the PHP that would have recorded the visit never runs. Sites often discover this the day they turn on a caching plugin and watch traffic apparently collapse. It is worth understanding on its own, so there is a separate post about it.
Crawlers. A meaningful share of raw requests are bots. Well-behaved crawlers identify themselves; plenty do not. Every tool draws the line somewhere different, and none of them draw it perfectly. If one tool filters aggressively and another does not, the same traffic produces two very different totals.
Sampling. Some tools stop counting everything above a threshold and estimate the rest. The estimate is usually good. It is still an estimate, and it will not agree with a tool that counted every row.
What counts as a visit. This is the big one, and it is definitional rather than technical. Sessions time out after thirty minutes in one tool and not in another. A tab left open overnight either starts a new session in the morning or does not. A page reload is a new pageview here and a continuation there. None of these are wrong. They are just different questions.
Unique visitors are the worst offender
Every tool reports unique visitors and no tool can measure them, because the thing you actually want to count - people - is not visible to a web server. What is visible is a browser, sometimes a cookie, sometimes an IP address and user-agent combination.
So every number is a proxy, and the proxies differ:
- A cookie-based count treats a private window as a new person, and one person on a laptop and a phone as two.
- A count derived from a rotating identifier deliberately forgets. Honest Analytics derives its identifier from a salt that is replaced every twenty-four hours, and the old salt is destroyed. Someone who visits on Monday and Thursday counts once on each day.
- A count that never forgets can follow someone for years, which is precisely what a lot of people now block.
The rotating approach is a deliberate trade: less precision across days, no permanent profile. It is why the number is described as a daily estimate rather than a fact.
Which number should you trust?
For most decisions, none of them individually. Use one tool consistently and read the shape rather than the value.
The questions that actually matter are comparative, and comparisons survive a systematic undercount perfectly well:
- Is this month better than last month?
- Which posts are people reading?
- Where did the sudden spike come from?
- Did that change help?
If a tool undercounts by fifteen per cent every day, every one of those questions still gets the right answer. Absolute totals are the least useful thing analytics gives you and the number everybody fixates on.
There is one case where the absolute number matters: reporting to somebody who is paying for placement, or comparing against a figure from outside your own site. Then pick the tool with the most complete collection method, say which tool it is, and stop switching.
What to do when you switch tools
Expect the numbers to move, and expect the move to be permanent rather than a settling-in period.
Run both in parallel for a month if you can. You are not looking for agreement, because you will not get it. You are looking for the ratio between them to be stable. A steady thirty per cent gap means two tools measuring the same reality differently. A gap that swings between ten and sixty per cent week to week means something is genuinely broken, and that is worth chasing.
If you are importing history, the join between old and new data will show a step. Honest Analytics imports from Google Analytics 4, WP Statistics and Independent Analytics so the history comes with you, and the import guide is explicit that the totals will not match exactly. Anyone who tells you the totals will match after an import is not being straight with you.
The honest summary
Analytics counts things. It is not a system of record, and it should not be the only source of a number something important depends on. Two tools disagreeing is the normal, expected, correct outcome of measuring an unmeasurable thing two different ways.
Pick the collection method you are comfortable with, understand what it misses, and read the trends.