Sessions in Google Analytics 4 (GA4) are calculated in a different way if compared to sessions in Universal Analytics. In this post we will explore this in all detail.
The number of questions about GA4 are steadily growing with more companies migrating to Google Analytics 4. One type of question marketers or analysts ask me often, relates to differences in metrics between GA4 and Universal Analytics.
You will notice that your session count in GA4 doesn’t match the same number in Universal Analytics and this is normal.
Table of Contents
- How GA Calculates Sessions
- Session Timeout and How to Adjust it
- Why Sessions in GA4 Don’t Match with UA
- Users, Sessions and Events in GA4
- Session Metrics
- Concluding Thoughts
Let’s dive into sessions in Google Analytics 4 together!
How GA4 Calculates Sessions
In Google Analytics 4 a user can initiate a session by either 1) opening your app in the foreground or 2) viewing a page (web) or screen (app) without having an active session.
By default, a session ends after 30 minutes of user inactivity. In other words, in the last 30 minutes no new “event” was triggered.
This 30 minutes is a threshold that is not modified by many, but in GA4 you can easily do so (which I will show in a minute).
Keep in mind though that changing this threshold will impact session numbers in Google Analytics 4 and quite a few related metrics and dimensions.
I have dealt with situations where you want to lengthen the session threshold time. For example, an Ecommerce site where customers leave the screen for an hour or two (keep browser open) and return to finish the purchase. For proper attribution and session statistics it can be helpful to lengthen the session time window.
You can adjust the session timeout in the GA4 UI.
Session Timeout and How to Adjust It
It just takes a few clicks to adjust session timeout in Google Analytics 4.
Step 1: go to the admin section of GA4.
Step 2: click on Data Streams and select the Data Stream of which you want to modify the session timeout.
Step 3: click on More Tagging Settings at the bottom of the screen.
Step 4: click on Adjust session timeout.
Step 5: set the session timeout in hours and minutes.
The minimum value of “session timeout” is 5 minutes and you can extend it to 7 hours and 55 minutes.
There is also a timer for “engaged sessions”.
Engaged sessions: The number of sessions that lasted 10 seconds or longer, or had 1 or more conversion events or 2 or more page or screen views. You can extend the 10 seconds to 60 seconds max.
This might make sense to you; would you define a user engaged if she stays 10 seconds on your website and immediately leaves after?
Why Sessions in GA4 Don’t Match with UA
Im my experience, sessions in Google Analytics 4 are often lower compared to Universal Analytics. This is because of a variety of reasons. In general, sessions will never fully match.
Here are some thresholds that I usually apply:
- Good: session difference between GA4 and UA is smaller than 8%.
- Further investigation needed: session difference between GA4 and UA is between 8 and 20%.
- Something is wrong (in most cases): session difference between GA4 and UA is greater than 20%.
Let’s look into several reasons why sessions in GA4 and UA usually don’t match.
Campaign Source change
- Google Analytics 4: campaign source change mid session -> GA doesn’t create a new session.
- Universal Analytics: campaign source change mid session -> GA creates a new session.
Day Boundary
- Google Analytics 4: a session spans across two days -> GA doesn’t create a new session.
- Universal Analytics: a session spans across two days -> GA creates a new session.
Bots
- Google Analytics 4: only built-in (automatic filter) for bot traffic.
- Universal Analytics: built-in filter (tick box at view-level) for bot traffic. In addition, you can set up view-level filters to reduce bot traffic.
Filters
- Google Analytics 4: very limited currently, only options relate to “internal” and “debug” traffic.
- Universal Analytics: potentially you can filter out many more sessions based on the flexibility of the filter model in Universal Analytics.
Note: I recommend comparing the sessions in Google Analytics 4 to the data of the Raw Data view in Universal Analytics (no filters applied).
Late Hits
Late hits are hits that aren’t sent immediately.
- Google Analytics 4: events are processed if they arrive up to 72 hours late. Because Google Analytics 4 events are processed across a wider time range, you may see higher session counts in your Google Analytics 4 property, as well as variations in reported figures within these 72 hours.
- Universal Analytics: hits are processed if they arrive within 4 hours of the close of the preceding day.
Session Timeout
- Google Analytics 4: on default 30 minutes -> MINIMUM: 5 minutes, MAXIMUM: 7 hours and 55 minutes
- Universal Analytics: on default 30 minutes -> MINIMUM: 1 minute, MAXIMUM: 4 hours
Note: this might sound like a no-brainer, but make sure to set the “session timeout” to the same value in both tools.
Migration Differences
- Google Analytics 4: did you migrate all events from Universal Analytics or a larger/smaller set?
- Universal Analytics: did you migrate all events from Universal Analytics or a larger/smaller set?
Note: most often companies re-visit their measurement plan (highly recommended) during the migration. Just be aware that this can lead to session differences between GA4 and Universal Analytics.
Users, Sessions and Events in GA4
In Universal Analytics there is a “structure” of users who can have one or more sessions. A sessions consists at least of one pageview or other interaction (i.e. event).
The structure in Google Analytics 4 is a bit differently as all interactions (including a pageview) show up as an event.Events are all the individual actions that users perform on your website or mobile app. Similar to Universal Analytics, a user can have one or multiple sessions in the selected time period. As mentioned, on default a session expires after 30 minutes of inactivity (no new event is triggered).
Session Metrics
In Google Analytics 4, the three (currently) main session related metrics are:
- Sessions – The number of sessions that began on your site or app (event triggered: session_start).
- Engaged sessions – The number of sessions that lasted longer than 10 seconds, or had a conversion event, or had 2 or more screen views.
- Engaged sessions per user – The average number of engaged sessions per user.
You can query these metrics via the Explore (Advanced Reporting) section, the GA4 API or simply find them in the GA4 UI.
An example of where to find these metrics:
Concluding Thoughts
The concept of sessions hasn’t disappeared in GA4.
But, it is very important to specifically understand the concept of sessions in GA4 as explained in this article. So that you know why your session count might deviate from sessions in Universal Analytics.
Large differences between sessions in Google Analytics 4 and Universal Analytics ask for further investigation.
Google Analytics 4 is still evolving and I expect Google to add a lot in terms of session related metrics and dimensions.
This is it from my side. Do you have any thoughts or questions? Happy to hear your thoughts!
One last thing... Make sure to get my automated Google Analytics 4 Audit Tool. It contains 30 key health checks on the GA4 Setup.
Remya CV says
We are facing the problem of GA4 Basic Stats significantly lower than UA in terms of pageviews, sessions, users. Sometimes as high as 20 – 35% difference. Please give guidance on how to investigate this further
Paul Koks says
I would start at comparing it at a more granular level. I.e. hostname, country, page, device etc. to find out if this happens equally across all dimensions or specifically on one or a few. Also, if you have consent tracking implemented, make sure to check it as well.
Rich says
Please confirm my understanding.
An active user is defined by having an engaged session. GA4 defines an engaged session as being greater than 10 seocnds. I can override the 10 second threshhold and create my own engaged session if I want to- say 20 seonds. Can I then run GA4 reports based upon active users using my 20 seocnd definition?
Paul Koks says
Hi Rich,
Yes, you can affect the active users count by modify the time theshold of an engaged session.
An active user is any user who has an engaged session or when Analytics collects:
the first_visit event or engagement_time_msec parameter from a website
the first_open event or engagement_time_msec parameter from an Android app
the first_open or user_engagement event from an iOS app
An engaged session is a session that lasts longer than 10 seconds, has a conversion event, or has at least 2 pageviews or screenviews.
Best,
Paul
Karnur says
Why Engaged Sessions results have lower results than Sessions? It should be higher on Engaged Sessions, because I think users that engaged more than 10 seconds, are higher that users that stay for 30 minutes. Can you explain it?
Thank you
Paul Koks says
By default, a session ends (times out) after 30 minutes of user inactivity. There is no limit to how long a session can last. Only a percentage of these sessions fall in the group of engaged sessions: an engaged session is a session that lasts longer than 10 seconds, has a conversion event, or has at least 2 pageviews or screenviews. In other words, sessions is the total and engaged sessions is only a subset of sessions based on the rules of when a session is counted as engaged.
Cindy says
Hi Paul,
For a client of mine, I have to compare Universal Analytics sessions with GA4 sessions YoY (2022 versus 2023), because they still have not implemented GA4. I know that comparison is not possible, but we still have to do some way of comparison, with a target in mind. What do you advise me to take into account in this case? A drop of 20% upfront? Or do you have any other tips? Would love to hear it!
Best,
Cindy
Paul Koks says
Hi Cindy,
Based on reviewing a wide variety of websites and implementations, I can say that a drop in sessions of 5 to 10% is in general a good number to work with (if you go from UA to GA4).
It could be even just a 3% drop or slightly higher than 10%. Normally it shouldn’t be 20% of even higher if both implementations are accurately done.
Best,
Paul
John says
Hi Paul,
Let’s say , if someone lands on our home page. In this case, we will have have 1 session and 1 entrance for the home page.
They stay on the page and the session times out (after 30 minutes of inactivity). Then they navigate somewhere (it could be clicking the back button, an outbound link, download a file etc.).
After 30 minutes, the user returned to the home page.
My query is – What would GA4 report look like.
A) 2 sessions and 1 entrance reported for the home page. or
B ) 2 sessions and 2 entrance reported for the home page
Thanks
Paul Koks says
Hi John,
After 30 minutes of inactivity a new session starts. In this case it would be the second time the user enters the website on the home page.
The answer is B. Please also see this document.
John says
Thanks Paul. I asked this question because “sessions” and “metrics” don’t match in one of my exploration reports. Can you explain with an example, why the above two don’t match always.
Paul Koks says
I think you mean “sessions” and “entrances”. Ok, entrances can potentially be lower if a different event (non ‘page_view’ / ‘screen_view’) is firing first and/or there are issues with tracking the ‘page_view’ in a subsequent session. Here are some scenarios you should have a look at.
Dan says
Hi Paul,
I have a reversed situation where Sessions, Pageviews numbers are higher (around 20%) in GA4 compared to Universal Analytics. Any suggestions on what to consider/investigate?
Thanks
Paul Koks says
Hi Dan,
As a first step I would segment both sessions and pageviews at a deeper level, i.e.:
– Is there one particular source/channel bringing in more sessions in GA4?
– Is the increase visible on all devices?
– Do you have any filters or any other implemented settings (both in config as well as in implementation) that reduce sessions and pageviews in UA?
– Is there one particular page or a few pages that receive more traffic?
– Is there a cookie consent banner only impacting UA or to a greater extent?
You can grow the list with many more questions to go deeper here.
Hope this helps!
Raphael says
Hi Paul,
I have a situation where some of the engagement rates are suspiciously low (as low as 3%). The site is non-commerce based so the conversions are based on interactions so it shouldn’t be that low. I’ve taken a look at the engaged sessions number and that seems to be pulling through very low. Have you got any advice on how to debug low rates/engaged sessions.
Paul Koks says
Hi Raphael,
Have you tried segmenting the engagement rate across a wide range of GA4 dimensions or is the aggregated engagement rate very low by itself? As a first step, I would also investigate the segmented data first.
shushma bhavani says
I started my session from google with in 30 min i switch to ads campign to visit the same website . which sesssion count it will take ,
weather from google organic session OR google ads
Paul Koks says
Hi Shushma, most probably GA4 will count it as a single GA4 session from multiple traffic sources.
Zuzana says
Hi Paul, client of mine would like to know some information about part of the website. How many sessions and from what campaign. Tricky is that I need to filter it via “pages” dimension, as they want to know only information about 1 product (several pages). When I do report with Page path and screen class and use session metric, what does it say? As the total number of sessions is lower that the sum of the rows (pages). Is this approach event valid? I didnt find any article about this….
Paul Koks says
Hi Zuzana, this is what I recommend in this case:
1) Use the ‘landing page’ report under Engagement.
2) Filter on the landing page(s) that you need as a primary dimension.
3) Select ‘Session campaign’ as the secondary dimension.
Diana says
Hi, Paul!
I’ve faced the issue of unmatched numbers when summing sessions by default channel group and the total session number shown in GA4. The total session count by default channel group is slightly lower than the displayed total session number. I could understand why it could be higher given the GA4 campaign source change thing, but I can’t figure out why it is actually lower than total session count. Any thoughts on this?
Paul Koks says
Hi Diana,
The difference is maybe caused by data thresholding. Did you enable Google Signals and set the reporting identity to ‘Blended’? Try to temporarily switch it to ‘Device-based’ and let me know any changes. Thresholding can cause channels with low user/session numbers not to be visible in your reports.
Diana says
I do not have Google Signals enabled, but Blended reporting identity was set. Interesting that yesterday’s data is vice versa: the total session count is lower than sum by channels.
Paul Koks says
And do you see any changes for yesterday’s data when you change to ‘device-based’? Also, it’s best not to look at the current or previous’ day data because of a potential delay in fetching all data and correct channel attribution.
Diana says
No, there was no change with device-based enabled.
The data from 3 days ago is still the same way: total session count is lower than sum by channels. And the previous days’ data is vice versa: total exceeds the channel sum, so i guess it’s not about waiting til GA4 processes all the data
Paul Koks says
Ok, not sure what is causing this exactly, would need to dive deeper to provide additional feedback.
Paul Mancini says
How is it possible for the engaged sessions number to always be lower than the active users number if you cannot be an active user unless you’ve had an engaged session?
Paul Koks says
Hi Paul, you can be an active user without having an engaged session. Here is the definition for an active website user: A website user is defined as active if they have an “engaged session” OR when GA4 collects the first_visit event or the engagement_time_msec event parameter. Many active users are ‘new’ in the time period you select which usually causes the reported number of active users to be higher than the engaged sessions number.