Introduction
In web and app analytics, sessions are the foundation of most user-level metrics. However, GA4 fundamentally redefines sessions compared to Universal Analytics (UA).
Where UA relied heavily on time-based rules, cookies, and pageview hits, GA4 is event-driven, focusing on user engagement and cross-device tracking. Understanding GA4 sessions is critical to correctly interpreting metrics like Active Users, Engagement Rate, Conversions, and Session Duration.
This guide explains what sessions are in GA4, how they are measured, and the key differences from UA, providing a strong conceptual foundation for analysis.
What is a Session in GA4?
A session in GA4 is a group of user interactions (events) within a given time frame. Unlike UA, which relied on hits and pageviews, GA4 sessions are event-based, meaning every session is composed of one or more events.
GA4 Session Characteristics:
| Feature | GA4 Behavior | Notes |
|---|---|---|
| Session Start | Triggered by session_start event | Every new session automatically generates this event |
| Session End | Implicit based on inactivity | GA4 uses a 30-minute default inactivity timeout, similar to UA |
| Cross-Device | Sessions can be stitched for user_id | One user may have multiple sessions merged across devices |
| Engagement | Only events matter, not pageviews | Sessions without user_engagement are still counted, but Active Users consider engagement |
How GA4 Counts Sessions
In GA4, sessions are event-driven, with the following key rules:
- Session Start (
session_start)- Triggered automatically when a user starts interacting with a site or app.
- Can also be triggered manually via event configuration.
- Session Timeout
- Default: 30 minutes of inactivity.
- Can be adjusted in GA4 property settings.
- If a user returns after timeout, a new session starts.
- Midnight Reset / Campaign Change
- Unlike UA, GA4 does not reset sessions at midnight.
- Campaign source changes do not trigger a new session by default, but can be configured via parameters.
- Cross-Device Sessions
- GA4 uses
user_idto stitch sessions across devices. - A single user interacting on mobile and desktop can have multiple sessions, but GA4 may report a single user session count depending on reporting identity settings.
- GA4 uses
Session Metrics in GA4
| Metric | Definition in GA4 | Key Differences from UA |
|---|---|---|
| Sessions | Count of session_start events | UA counted sessions based on hits/pageviews; GA4 counts events |
| Engaged Sessions | Sessions lasting ≥10s, 1+ conversion event, or 2+ pageviews/screens | Introduced in GA4; helps measure meaningful engagement |
| Average Session Duration | Sum of engagement time / sessions | GA4 uses engaged time rather than total session time |
| Bounce Rate | Not in GA4; replaced by Engagement Rate | Bounce Rate = 1 − Engagement Rate |
GA4 emphasizes quality over quantity, focusing on engaged sessions, which better reflect user behavior.
Session Example: Event Flow
Imagine a user interacts with your site:
- 10:00 AM – User lands →
session_starttriggered - 10:01 AM – Views home page →
page_viewevent - 10:05 AM – Clicks product →
select_itemevent - 10:10 AM – Leaves browser idle for 35 minutes → session ends (timeout)
- 10:45 AM – Returns and interacts → new
session_startevent triggered
Notes:
- GA4 automatically counts two sessions.
- If
user_idis implemented, these sessions may be stitched for user reporting depending on identity settings. - Only the second session contributes to new engagement metrics if the first session had no engagement events.
Key Differences Between GA4 and UA Sessions
| Feature | Universal Analytics (UA) | GA4 |
|---|---|---|
| Event Model | Hit-based | Event-based |
| Session Start | Pageview or screenview | session_start event |
| Session Timeout | 30 min default, resets on campaign change | 30 min default, configurable, ignores campaign changes by default |
| Engagement | Bounce Rate | Engaged Sessions (≥10s, 1+ conversion, 2+ pageviews/screens) |
| Cross-Device | Cookie-based | user_id stitching possible |
| Campaign Attribution | Resets session | Sessions continue regardless of campaign change unless configured |
Best Practices for Working with GA4 Sessions
- Understand engagement events – Sessions alone may overcount low-quality interactions.
- Use
session_startfor session-level queries – Avoid usingpage_viewevents to approximate sessions. - Implement
user_id– Enables cross-device session stitching and accurate user-level reporting. - Adjust session timeout if necessary – For long user interactions, extend beyond 30 minutes.
- Focus on engaged sessions for analysis – These better reflect meaningful user activity.
TL;DR
- GA4 sessions are event-based, not hit-based like UA.
- A session is initiated by a
session_startevent and ends after inactivity or timeout. - GA4 introduces engaged sessions and engagement-focused metrics, replacing bounce rate.
- Cross-device sessions are stitched if
user_idis implemented. - For accurate analysis, use
session_startevents, apply engagement filters, and account for timezones and session timeout settings.

