Update time: December 18, 2025
If you’ve come from Universal Analytics, you’re used to sessions being a straightforward count — one visit, one session. Then you open GA4 and the numbers don’t quite add up the way you’d expect. Session counts look different, the logic is different, and suddenly something that felt simple isn’t simple anymore.
That’s because GA4 handles sessions completely differently under the hood. Understanding how is essential for reading your reports correctly and avoiding the kind of “wait, why does this number look wrong?” moments we’ve all had.
What Exactly Is a Session in GA4?
In GA4, a session is a logical grouping of events that share the same session ID (ga_session_id).
A session typically includes:
- Page views or screen views
- Custom events
- Engagement events
- E-commerce interactions
All of these are tied together as long as they happen within the same session window. It’s not a fixed bucket — it’s a loose grouping, and that distinction matters.
When Does a Session Start and End?
A session starts in one of two situations:
- A user visits your site or opens your app for the first time
- A user returns after the previous session has timed out
When a session starts, GA4 fires a session_start event automatically. If that event is missing (due to an ad blocker or a tracking issue), your session data will be off.
By default, a session ends after 30 minutes of inactivity. You can adjust this in GA4 Admin settings, up to a maximum of 7 hours and 55 minutes.
Here’s a concrete example: a user visits your site at 1:00 PM, interacts for 3 minutes, then leaves the tab open without further activity. The session ends at 1:33 PM (30 minutes after the last interaction).
How GA4 Tracks Sessions
When a session starts, GA4 generates two key parameters that get attached to every event:
- ga_session_id — a timestamp indicating when the session began. To uniquely identify a session outside GA4, combine it with a user_id or user_pseudo_id.
- ga_session_number — how many sessions this user has had so far. For example, 3 means this is the user’s third session.
Here’s the catch: because ga_session_id is just a timestamp, it’s not globally unique. The same timestamp can occur for different users. This is one reason why session counts in GA4 are estimates, not exact counts.
Where Session Data Is Stored
GA4 stores session data in a cookie named _ga_<container-id>. Here’s what each part means:
The detailed explanation is as follows:
| Value | Description |
|---|---|
| GS | Fixed identifier (Google Session). |
| 2 | Analysis version (commonly 1 or 2). |
| 1 | Domain level (almost always 1). |
| 1673933110 | Session ID/Current Session Start Time(aka:ga_session_id ) |
| 12 | Sessions Count(aka:ga_session_number) |
| 0 | Engagement session flag (1 = engaged, 0 = not engaged). |
| 1673933110 | Current Timestamp |
| 60 | Countdown,60-second countdown, cookie and user data matching/syncing when Google Signals is enabled |
| 0 | User-ID status (1 = logged in with User-ID set). |
| 0 | Enhanced Client Id, abbreviated as ecid, is a string of numbers that only has value when tracked on the server side tracking or enable 「User-ID and user-provided data collection」 |
| riYSmWx3uWvuJEDkCvwJCnvET7QcvFq7kg | This field is available when Google signal data collection is enabled and indicates the Google signal or the associated ID of the Google signal. |
One thing worth noting: on the first request of a session, the Session ID and Current Timestamp are identical, because the Session ID represents the session start time.
How GA4 Calculates Session Counts
According to Google, GA4 calculates sessions by estimating the number of unique session IDs. Sessions are estimated metrics, similar to Active Users and Total Users.
Because session IDs are timestamps and can repeat (they’re not guaranteed to be unique), you may notice discrepancies — for example, total sessions in a report might not match the sessions shown in the report header. That’s normal, not a bug.
Key Session-Related Metrics
GA4 shifts the focus from raw session volume to engagement quality. Here are the metrics that matter:
- Engaged sessions — a session that lasts longer than 10 seconds, has a conversion event, or has at least 2 pageviews or screenviews.
- Engaged sessions per user — the average number of engaged sessions per user.
- Engagement rate — engaged sessions divided by total sessions. This replaces UA’s “bounce rate” concept and gives a more meaningful picture of user interaction quality.
Final Words
Sessions still matter in GA4, but they’re no longer the core unit of measurement they were in Universal Analytics. GA4 is event-driven at its foundation, and sessions are now a derived, estimated construct built on top of events. Once you understand that shift, a lot of the confusing numbers start making sense.

