If you’ve ever tried calculating engaged sessions using raw GA4 data in BigQuery, you know it sounds a lot easier than it actually is. In the GA4 interface, it's all smooth: open a report, see “Engaged Sessions,” close the tab, go grab lunch. But in BigQuery? It takes a bit more effort.
So what exactly is an engaged session?
According to GA4, a session is considered engaged if at least one of the following is true:
• The session lasted more than 10 seconds,
• There were 2 or more events,
• There was a conversion event (i.e. conversion = true),
Sounds simple, right? Now try piecing that together from raw event-level data.
Welcome to the world of event_timestamp, engagement_time_msec, event_params, is_conversion_event, and all the other joys of life as an analyst.
In practice, here’s what that looks like in BigQuery:
• Group events by session_id and user_pseudo_id,
• Count the number of events in each session,
• Sum the engagement_time_msec values,
• Check if any event in the session has is_conversion_event = true.
If any of these conditions are met — congrats, you’ve got an engaged session.
No smoke and mirrors, just SQL.
Of course, you can always rely on engaged_session_event dimension. But... what if you wanna have your own engagement definition?
Takeaway:
• The GA4 UI gives you a polished view of engaged sessions.
• BigQuery gives you the raw truth.
• If you're after full transparency, you'll need to go beyond the interface — and dive into SQL.
Want to get all my top Linkedin content? I regularly upload it to one Notion doc.
Go here to download it for FREE.
