Many analysts begin their session logic in BigQuery by filtering for session_start. It feels intuitive, structured, and aligned with GA4’s terminology. Unfortunately, it also introduces one of the most common sources of inaccurate session counts.
Why the issue appears:
• The session_start event is not guaranteed to fire for every session. Mobile SDK delays, offline activity, background launches, or atypical event sequences can all result in a valid session without this marker.
• Some events contain ga_session_id but never receive a corresponding session_start. When you rely only on the event, you overlook real sessions that GA4 did track internally.
A more dependable approach:
• Treat each combination of user_pseudo_id and ga_session_id as a unique session
• Apply your time filter
• Count distinct pairs instead of relying on a single event signal
This method reflects GA4’s internal logic far more accurately and dramatically reduces session undercounting.
If you want reliable analytics, avoid shortcuts. Build sessions explicitly.
Want a stronger data analyst role or a raise? Grab the FREE Product Analyst Playbook and get the exact roadmap to your next offer.


