Blog
Two events that look similar, count differently, and confuse new GA4 users every week.
GA4 fires both page_view and first_visit on certain visits, and the difference between them is one of the most common sources of confusion for analysts coming from Universal Analytics.
Fires on every page load, including subsequent loads in the same session. If a user visits five pages, you get five page_view events. Equivalent to the UA pageview, almost.
In a single-page app, page_view does not fire automatically on route changes. You have to fire it manually via gtag('event', 'page_view') or by enabling enhanced measurement and routing through GA4 Admin.
Fires once per user, on the very first session. After that, never again. If GA4 cannot identify the user (cookies cleared, different device), first_visit fires again because GA4 thinks it is a new user.
first_visit is what powers the New Users metric. Counting page_views with no prior session would give you the same number, but first_visit is the canonical event GA4 uses internally.
If you build a custom report that counts page_view events, you will not match the New Users count from the standard report. The standard report uses first_visit. The mismatch is small (always less than total visits) but real.
If you build a funnel that includes "first visit" as the entry step, use first_visit. If you build a "pages per session" metric, use page_view divided by session_start.
When you forward events through your tagging server, both events are forwarded as-is. The server container does not generate first_visit; it just relays what came in from the client. If you somehow lose first_visit during forwarding, your New Users count will drop to zero.
In BigQuery, run this query against your GA4 export:
SELECT
event_name,
COUNT(*) AS events,
COUNT(DISTINCT user_pseudo_id) AS users
FROM `your_project.analytics_XXXXX.events_*`
WHERE event_name IN ('page_view', 'first_visit', 'session_start')
GROUP BY event_name
first_visit count should equal new users in the same period. session_start should be greater than first_visit (returning users have sessions but not first_visits). page_view should be the largest of the three. If any of these relationships are wrong, check your tagging setup.