Understanding first_visit in GA4: Sessions, Users, and Active Users
GA4 first_visit: how it’s triggered, what it records, and how to make it reliable
What it is
first_visit is an automatically collected web event in Google Analytics 4. It marks the moment GA4 recognizes a browser/device as new to your property. You don’t need to implement it manually.
When first_visit fires
On a user’s first landing page where GA4 detects no existing Client ID, GA4 creates a fresh Client ID (stored in the first-party cookie _ga) and logs first_visit. In apps, the analogous event is first_open.
Practically, this means a new browser or device, or a browser/device where cookies were cleared or blocked. It does not necessarily mean a brand-new person.
Relationship to sessions and session_start
In the initial session for a new browser/device, GA4 logs both:
- session_start — establishes the session context and assigns ga_session_id / ga_session_number.
- first_visit — classifies the user as new for this property.
They are generated at the very beginning of that first session (near-simultaneously). If you see more first_visit than session_start, treat it as a misconfiguration smell.
How it affects Users and Active Users
- New users metric. A first_visit increments New users for the selected date range.
- Active users. A user counts as active if they had an engaged session or if GA4 collected a first_visit/first_open. Thus every new user is active by definition.
- Don’t confuse the user_engagement event with the Active users metric.
- “First user …” dimensions. GA4 writes user-scoped acquisition dimensions at the time of the first session (e.g., First user source / medium / campaign).
Parameters & identifiers recorded with first_visit
Identifiers
- client_id
- ga_session_id
- ga_session_number
- user_id (optional if configured)
Page context
- page_location
- page_referrer
- page_title
Traffic & filtering
- traffic_type
- ignore_referrer
Stream-level defaults
- language
- screen_resolution
What you can (and can’t) customize
- User-ID: send user_id.
- Consent Mode (v2): cookieless pings + modeling.
- Cross-domain measurement: preserve continuity across domains.
- Internal traffic rules: populate traffic_type.
- Referrer handling: set ignore_referrer where needed.
Common pitfalls & how to fix them
1) Inflated new users
Caused by cookie deletion/blocks or misfired custom first_visit.
2) Mismatch with session_start
Caused by consent/ad-blockers or cross-domain misconfig.
3) Underreporting with Consent Mode
Cookieless pings lack IDs; fix with Advanced Consent Mode and behavioral modeling.