GA4 consistently reports fewer sessions than the equivalent Universal Analytics property for the same time period and traffic. The difference typically ranges from 10 to 30% fewer sessions in GA4 depending on the site type…
Why does GA4 report fewer sessions than Universal Analytics?
GA4 consistently reports fewer sessions than the equivalent Universal Analytics property for the same time period and traffic. The difference typically ranges from 10–30% fewer sessions in GA4 depending on the site type. This is not a tracking problem — it is a deliberate architectural difference in how GA4 defines a session. Understanding the four key differences between GA4 and UA session counting is essential for stakeholder communication and for correctly interpreting GA4 trend data.
The four session counting differences
Difference 1 — Campaign changes no longer start new sessions
UA behaviour: In Universal Analytics, if a user arrived via organic search, then clicked a paid ad 20 minutes later in the same browser session, UA started a new session for the paid click — attributing the second session to paid search.
GA4 behaviour: GA4 does NOT start a new session when a campaign (UTM) changes mid-session. If a user is in an active session and clicks an ad, the session continues — no new session starts.
Impact: Sites with high cross-channel mid-session journeys (retargeting ads that reach users already on site, for example) see significantly fewer sessions in GA4 vs UA. Paid channel session counts in GA4 will be lower than in UA for retargeting-heavy strategies.
Difference 2 — Midnight no longer resets sessions
UA behaviour: Universal Analytics reset session counts at midnight (in the property's timezone). A user browsing from 11:45pm to 12:15am was counted as two sessions — one ending at midnight, one starting after midnight.
GA4 behaviour: GA4 uses a 30-minute inactivity timeout only. A session starting at 11:45pm continues past midnight without resetting. One continuous browsing session = one session, regardless of clock midnight.
Impact: For sites with significant late-night traffic (entertainment, global e-commerce), the midnight reset removal reduces session counts in GA4 vs UA. The effect is proportional to how much of your traffic browses across midnight.
Difference 3 — Session timeout is still 30 minutes but handled differently
UA behaviour: After 30 minutes of inactivity, the next hit starts a new session.
GA4 behaviour: After 30 minutes of inactivity, the next event also starts a new session — but GA4 handles session_start events differently, and some scenarios where UA started multiple sessions are consolidated in GA4.
The practical effect is small for most sites, but high-engagement-time content sites (long-form reading, video) may see consolidation of what UA counted as multiple sessions into single GA4 sessions.
Want to see which hidden implementation gaps are affecting your GA4 data quality?
Difference 4 — Consent mode removes non-consenting sessions entirely
UA: UA implementations often tracked non-consenting users via the anonymizeIp setting — data was collected but anonymised. Sessions were still counted.
GA4: With Consent Mode V2, non-consenting users' sessions are not counted in GA4 standard reports. No session record exists for non-consenting users (they appear only in modelled conversion totals, not in session reports).
Impact in EU/UK markets: This is the largest driver of GA4 vs UA session count differences for European properties. In UK markets with 40–55% consent rejection rates, GA4 may report 40%+ fewer sessions than the equivalent UA implementation which was collecting anonymised data for non-consenters.
How to reconcile GA4 sessions to stakeholders
When presenting GA4 data to stakeholders familiar with UA numbers, use this framing:
The useful analogy: "UA counted visits like a hotel that resets your room at midnight even if you're still sleeping. GA4 counts your visit as one stay until you leave."
Why session trend data is still valid
Even though GA4 session counts are lower than UA, the trend direction and relative changes are valid. A 15% increase in GA4 sessions week-on-week means the same thing as a 15% increase in UA sessions — more people visited. The absolute number differs; the directional signal is equivalent.
The important exception: If consent mode acceptance rates change (e.g., you redesigned your CMP banner and acceptance rate went from 45% to 62%), GA4 sessions will increase by ~17% due to the acceptance rate change alone. This is not an increase in real traffic. Annotate CMP acceptance rate changes in GA4 when they occur.
Calculating a UA-comparable session count from GA4
For the specific purpose of establishing a comparable baseline to UA historical data:
Simple approximation:
This is an approximation, not exact — it assumes non-consenting users have the same session patterns as consenting ones, which may not be true. Use for ballpark stakeholder communication only.
More accurate approach: Use GA4's modelled data (total users including modelled non-consenters in the Advertising reports) as a closer proxy to UA's total session count.
FAQ: GA4 Session Counting: Why Your Numbers Don't Match Universal Analytics
What should a team validate first when ga4 session counting: why your numbers don't match universal analytics appears?
How do I know whether the fix actually worked?
When should this become a full GA4 audit instead of a quick fix?
Related guides for GA4 Session Counting: Why Your Numbers Don't Match Universal Analytics
BigQuery Cost Optimisation for GA4 Exports: 9 SQL Patterns (2026)
The biggest cost wins come from nine SQL patterns: (1) partition pruning via _TABLE_SUFFIX BETWEEN (10–50x cost difference vs derived filters), (2) clustering on source/medium/event_name (30–60% reduction on top of partitioning), (3) explicit column selection (never SELECT *)…
How to Stitch GA4 BigQuery Sessions Manually (2026)
GA4 doesn't store sessions as records in BigQuery exports — only individual events with session identifiers. To reconstruct sessions: join on user_pseudo_id + (SELECT value.int_value FROM UNNEST(event_params) WHERE key='ga_session_id') as the unique session key…
Run a GA4 audit before ga4 session counting: why your numbers don't match universal analytics spreads into reporting decisions
Use GA4 Audits to surface implementation gaps, broken signals, and the next fixes to prioritize before the issue becomes harder to trust or explain.