Analytics

Why Your GA4 Session Numbers Don't Add Up (Weekly vs Monthly vs Yearly)

· 6 min read · By Tati

Why Your GA4 Session Numbers Don't Add Up (Weekly vs Monthly vs Yearly)

It is one of the questions we hear most from people who read GA4 reports for a living: “I added up the weekly sessions for the year and got a different number from the yearly total. Which one is wrong?” Usually, neither. GA4 does not count sessions the way a spreadsheet does, and once you know the handful of reasons why, the gap stops being alarming and starts being explainable.

First, what a GA4 session actually is

A session starts when someone opens your site or app with no session already active, and it ends after a period of inactivity: 30 minutes by default, adjustable in the web data stream settings. Each session is identified by the user’s pseudonymous ID together with a session ID, which GA4 generates from the timestamp of the session start.

A common misconception: GA4 does not split sessions at midnight. That was Universal Analytics. In GA4 a session can run past midnight, and Google says there is no limit to how long a session can last. This matters for the date-range effects below.

Reason 1: GA4 estimates sessions and users

This is the main cause, and the one most explanations skip. Counting exact unique values (distinct sessions, distinct users) across billions of events is expensive, so GA4 uses an algorithm called HyperLogLog++ to estimate them. Sessions, active users and total users in the GA4 interface and the Data API are approximations, accurate to within a small margin rather than exact.

Two consequences follow:

  • Estimates are not additive. Each figure is estimated separately for the date range and dimensions you asked for. Twelve monthly estimates will not sum precisely to the yearly estimate, and fifty-two weekly ones will not either. The difference is usually small, but on a large site small percentages are visible numbers.
  • Unique counts are not additive by definition. Even with perfect counting, users never sum across periods. Someone who visits in week 3 and week 40 is one user in the yearly view and appears in two weekly rows. Add the weeks up and you count them twice. The same logic applies whenever you break a unique metric down by a dimension, such as channel or page.

Reason 2: sessions that cross a date boundary

Because sessions are not cut at midnight, a session that starts on Sunday at 23:50 and carries on into Monday has activity on both sides of the line. Where a session spans two date ranges, it can appear in both: once in last week’s figure and once in this week’s. Look at a single total across both weeks and it is one session.

On most sites this effect is small next to estimation, but on sites with long sessions or heavy late-evening traffic it adds up.

Reason 3: thresholds, sampling and the “(other)” row

These change what a specific report shows, not what was collected:

  • Data thresholds. To stop individuals being identified, GA4 withholds rows with too few users when a report uses demographic data or search query data. Depending on your reporting identity settings, Google signals can make this more likely. Thresholded rows are missing, so the visible rows sum to less than the total. A wider date range often brings them back.
  • Sampling. Standard reports are generally built from complete data. Sampling mainly appears in explorations and large API requests when the query goes over the property’s quota (10 million events for a standard property). Check the data-quality icon, and shorten the date range if it says the data is sampled.
  • The “(other)” row. Reports with very many unique values (long page paths, campaign names) can group the long tail into “(other)”, which makes row-level comparisons between periods unreliable.

Data retention is also often blamed, but it only limits how far back explorations can go. Standard reports keep their aggregated data.

Under Consent Mode, visitors who decline analytics cookies are not tracked in the normal way. If behavioural modelling is active and your reporting identity is blended, GA4 fills part of that gap with modelled users and sessions. Modelled figures appear in the GA4 interface but not in the BigQuery export. If consent rates change, for example after a banner redesign, session counts can move without anything changing in real traffic. Our guide to Google Consent Mode v2 explains the setup.

Reason 5: different tools give different numbers

The same property can show slightly different totals depending on where you look:

  • Standard reports vs explorations use different processing paths, and explorations are subject to retention limits and sampling.
  • Looker Studio pulls from the Data API, so it gets the same estimated figures. But a scorecard and the sum of a table’s rows are separate queries, and blended or calculated fields can sum unique metrics that should never be summed.
  • BigQuery contains raw events. Counted properly (distinct combinations of user ID and session ID), it gives an exact count, with no estimation, no thresholds and no sampling. It also has no modelled data and no Google signals data, and it only starts from the day the export was linked. So BigQuery is exact about what it holds, but what it holds is not identical to what the interface reports.

Reason 6: settings that quietly move the lines

  • Reporting timezone. Days and weeks are cut at midnight in the property’s timezone. If your team in Athens reads a property set to London time, or the timezone was changed at some point, “Monday” is not the same window for everyone. BigQuery’s event date follows the property timezone, but event timestamps are in UTC, which catches people out in SQL.
  • Week definition. Check whether a report’s weeks start on Sunday or Monday, and that your spreadsheet uses the same rule.
  • Internal traffic and other filters. Data filters apply from the moment they are activated, not retroactively. Turning on an internal-traffic filter mid-year creates a step change, and a filter left in “testing” mode excludes nothing from standard reports.

Which numbers to trust for what

None of this makes GA4 unreliable. It means each number is right for a particular question:

  • Trends and channel comparisons: the GA4 interface or Looker Studio, on a consistent date range. Small estimation errors do not change the direction of a trend.
  • Board and finance totals: report each period at the level you need. If the board wants a yearly session count, query the year; do not add up weeks. If it wants weekly figures, show weeks and do not present their sum as the annual figure.
  • Exact counts and reconciliation: BigQuery, with the caveats above written down.
  • Leads and revenue: key events matched to your CRM. For a B2B or high-ticket business, session counts are context; enquiries and pipeline are the result. Engagement metrics sit in between, as we explain in bounce rate vs engagement rate.

How to explain it to stakeholders

Put one sentence under the chart: “Weekly figures are estimated individually and a visitor or session can appear in more than one week, so weeks do not add up exactly to the yearly total. Both are correct for the question they answer.” Then document your reporting timezone, the date your filters went live, your consent setup and where exact counts come from. That short note prevents most “the numbers are wrong” meetings.

Having worked with Adobe Analytics as well as GA4, we can say every platform has its own counting rules. The discipline is the same: define the question, then choose the figure that answers it.

Key takeaways

  • GA4 estimates sessions and users with HyperLogLog++, so weekly, monthly and yearly figures do not sum exactly.
  • Users and other unique counts are never additive across periods or dimensions.
  • GA4 does not split sessions at midnight; a session spanning two date ranges can appear in both.
  • Thresholds, sampling in explorations, consent and modelled data, timezones and filters all explain further gaps.
  • Report at the level you need, use BigQuery for exact counts, and write the caveats down for stakeholders.

If your reports keep raising questions like these, our Google Analytics and Tag Manager services can help. Get in touch and we will review your setup.

Contact

Start now.

Tell us a little about your business and we will show you where enquiries are being lost today.

We only use your details to get back to you. Privacy