Skip to main content

Why analytics tools disagree about visitors

Compare metric definitions, identifiers, collection, and time zones before you decide that a visitor total is wrong.

Start your 14-day free trial No card required. Then $29 a month.
By Paul, last verified

Start with the metric name

Two analytics dashboards can observe the same site on the same day and show different visitor totals. That result does not prove that one dashboard is wrong. The number depends on what each tool counts, when it resets its identifier, which requests it receives, and how it groups activity.

Visitors is not a universal unit. A tool can use the word for a daily browser estimate, a person known across several visits, or a user who meets an engagement rule. Google Analytics 4 defines total users as unique users who triggered an event in the selected date range. Its returning-user reporting needs an identifier that links activity across sessions. See the Google sources below.

Plausible documents a different contract. Its unique visitors are unique within the same day. A person who returns on another day, or uses another device, counts again. Its sessions begin on arrival and end after 30 minutes without action. Neither choice makes a better visitor number in every context. They answer different questions.

What Measure counts

Measure records pageviews and registered custom events. A pageview becomes one pageview when the tracker sends it. Page reloads and client-side navigation can create more pageviews. The tracker sends the page path without the query string or fragment, so a campaign parameter does not create a separate page path.

For a Measure pageview, the server creates a keyed hash from the project, source, remote IP address, user agent, and that day's secret salt. It stores the hash only as needed to prevent a second count during that UTC day. It does not store the raw IP address, raw user agent, raw hit, or a persistent visitor identifier.

The salt changes each day. Measure cannot join those daily hashes. It cannot report how many people returned next week, a lifetime visitor count, or a returning-user rate. Read a Measure visitor total as distinct daily hash inputs that sent accepted pageviews. Do not translate it to known people.

Visits and visitors answer different questions

Measure starts a visit with a pageview and begins another visit after more than 30 minutes without activity. It keeps this visit state in memory. A second pageview inside that window adds a pageview but does not start another visit. A later pageview starts a new visit.

One daily visitor can have several visits. A person can also count as more than one visitor when the hash inputs differ. Conversely, several people can produce the same inputs. Read visits as grouped activity, pageviews as loads, and visitors as a daily estimate. Do not use one as a substitute for another.

Compare like with like. If another dashboard uses a 30-minute session, compare Measure visits with that dashboard's sessions. If it uses a persistent identity, do not expect its users or returning users to match Measure visitors.

Why the totals can still differ

Definitions are only the first difference. The Measure script sends a pageview from the visitor's browser to the Measure endpoint. A blocked script, a browser setting, a network failure, or a page that does not load the script leaves no Measure pageview. Another tool can collect a request that Measure did not see, or miss a request that Measure saw.

Time zones also change daily buckets. Measure's daily visitor salt and day rollups use UTC. A dashboard that labels days in a local time zone can place activity near midnight in a different day. Compare a full date range before you investigate one unusual day.

Scope matters too. Measure ties a source to one site. If another report combines a production domain, preview domain, and documentation domain, it can show a larger total. Compare the same hostnames, date range, environment, and traffic filters.

Read referral data as a clue

Measure reads the browser's document.referrer, reduces it to the referring host, and stores that host in its rollup. It records direct when the browser supplies no referrer or when the referrer is one of the site's own allowed domains. It does not keep the referrer path, query string, or fragment.

A direct total does not prove that every visitor typed the address. It means Measure did not receive an external referring host for those pageviews. A bookmark can produce an empty referrer. A site or browser can also apply a referrer policy that omits referrer information. See the MDN sources below.

Match the hostname, source, date range, and time zone. Compare pageviews first. Then compare sessions, identifiers, reset periods, and blocked or filtered collection. A difference can show which behavior the tools measure differently. Do not average the totals.

Questions

Why can two analytics tools show different visitors?

They can use different identifiers, reset periods, session rules, time zones, hostnames, and collection paths.

Can Measure report returning visitors?

No. Measure rotates the salt that derives its visitor hash each UTC day and cannot join the hashes across days.

Does direct traffic mean a visitor typed the address?

No. It means Measure received no external referring host for the pageview.

What PostDeploy does not do here

  • Measure does not report returning visitors across days.
  • Measure does not provide goal conversion reporting.
  • Measure does not retain raw IP addresses, raw user agents, or raw hits.

Sources

Links support the technical facts and product boundaries described above.

Ask a connected MCP client to add Measure to this project

14 days free, no card required. Then $29 a month.

Start your 14-day free trial