A session is the unit analytics tools use to group a visitor's activity into a single visit. It starts when someone arrives and ends after a period of inactivity, so one person can generate several sessions in a day. Sessions are the denominator for many common metrics, including engagement rate, bounce rate and session conversion rate, so how a tool defines them shapes most of the numbers in a report.
How GA4 defines a session
Google Analytics 4 starts a session when it records a session_start event, which it generates automatically when a user arrives with no active session. The session times out after 30 minutes without activity by default, and you can change that timeout in the property's tag settings. Every event that follows carries a session ID, which is how reports tie the events back together.
GA4 behaves differently from Universal Analytics, which was sunset in 2023. A GA4 session does not restart at midnight or when the traffic source changes mid-visit. Session counts in GA4 reports are also estimated with a statistical counting method rather than counted one by one, so small differences between reports and a raw BigQuery count are expected.
Sessions versus users
Users count people (or, more precisely, browsers and devices, unless you send a user ID). Sessions count visits. A product-led SaaS site where customers return daily to read docs will show many sessions per user; a campaign landing page will show close to one.
Pick the unit that matches the question. Content reach is usually better read in users. Conversion efficiency of a landing page is usually better read per session.
What can inflate or split sessions
Sessions are easy to distort. Common causes are listed below, and most of them show up as sudden jumps in session counts with no matching change in users or key events.
- Payment or login redirects through a third-party domain that start a new session on return
- Missing cross-domain configuration between the marketing site and the app
- Tags firing twice because both a hardcoded Google tag and a Google Tag Manager tag are installed
- Bot traffic that GA4's built-in filtering does not catch
Example
A checkout that doubled sessions
Imagine Ledgerfern, an invoicing SaaS, sends trial users to a hosted payment page and back. After launch, sessions per user jump and the payment provider appears as a top referral source. The return trip is being treated as a new visit from a referral.
Adding the payment domain to GA4's list of unwanted referrals stops the provider from being credited as the source, and session counts return to a believable level.
Common mistakes
Comparing GA4 sessions to old Universal Analytics numbers
The definitions differ, so a year-over-year comparison that crosses the migration is comparing two different measurements.
Treating sessions as visitors
One person on three devices, or one person who returns after lunch, produces several sessions. Use users when you mean people.
Questions
Yes. In the web data stream's Google tag settings you can adjust the session timeout. Change it only with a clear reason, because it alters every session-based metric from that point on.
Tools use different timeouts, bot filters, consent handling and counting methods. Expect some gap and compare trends rather than absolute numbers.