Session

A session is one visit, meaning everything a user does on your site or app from the moment they arrive until they go inactive.

30:00

a session ends after 30 minutes without a click

·

It starts when they view a page, or open your app, and no session is already running. GA4 marks that moment with a session_start event.

It also gives the session two values: ga_session_id, the time it started in seconds, and ga_session_number, which counts this user's sessions so far.

On its own, ga_session_id isn't unique, because two users can start a session in the same second.

It identifies a session only together with the user's ID (user_pseudo_id).

From then on, every interaction keeps the session alive. After 30 minutes of inactivity, it ends. After a timeout, your next interaction starts a new session.

There is no maximum length. Stay active within 30 minutes of your last event and one session can last hours. Midnight or a new campaign doesn't start a new session either.

30 minutes is the default. You can change it in GA4's settings, up to 7 hours and 55 minutes.

The Sessions total in your reports is an estimate. GA4 counts unique session IDs with an approximation method called HyperLogLog++, so it can differ slightly from an exact count.

So if an exact count from BigQuery and the Sessions number in your report differ by a little, that's the estimate at work, not an error.

Check yourself

  1. Can a session last longer than 30 minutes?

  2. Is ga_session_id a random identifier?

  3. Is the Sessions number in GA4 reports an exact count?