Guide 192 · Events · GA4 + Tag Manager
The events GA4 collects on its own: first_visit, session_start and user_engagement — and why you never recreate them
GA4 collects first_visit, session_start, user_engagement and the rest of the automatic events with no code of yours — know which ones arrive on their own before you build a tag for one.
After step 5, you can name the automatic events your property already collects, say which ones are web and which are app, and point at the tag you must not build.
Download the reference: the automatic events reference (JSON) (5004 bytes, MD5 55a36ee609f40c8d606ac458d1b2b5d8). It holds the report or event definition and the worked example with the recomputed figures shown on this page.
What you need
- The automatically collected events list in Analytics Help — the table is the map, not your memory of it.
- The knowledge that no tag is needed. As long as you use the Google tag or the Google Analytics for Firebase SDK, you do not need to write any additional code to collect these events.
- The Events report, open in another tab, so you can see which automatic events already appear in your property before you build anything.
The trace
- Start from the list, not from a tag. Open the automatically collected events page. The table names each event, when it is triggered, and its parameters. On the web, the ones that matter most are first_visit, session_start, user_engagement, page_view, scroll, click, file_download, form_start, form_submit, and the video events. Note which column each event sits in: some are app only, and a web property never sees them.
- Learn the three that define every session. first_visit fires the first time a user visits the website — it is what the New users metric counts. session_start fires when a user engages the app or website, and a session ID and session number are generated automatically with each session and associated with each event in the session. user_engagement fires when the app is in the foreground or the webpage is in focus for at least one second, and it carries
engagement_time_msec. If you understand these three, you understand what a session is. - Check the enhanced measurement rows before you build a tag for one. page_view, scroll, click, file_download, form_start, form_submit, video_start, video_progress and video_complete are collected by default through enhanced measurement. A tag that sends page_view again does not add a page view; it adds a second one. The worked example below runs the engagement rule on three sessions so the definition is concrete, not memorized.
- Read the parameters that arrive with every event. Every event on the web carries language, page_location, page_referrer, page_title and screen_resolution by default. That is why the Tech details report can show browser and screen resolution without any setup: the parameters were already there. A value assigned to an event parameter must be 100 characters or fewer; page_title allows 300, page_referrer 420, page_location 1,000.
- Know the rows that never reach a report. Some automatic events do not appear in reports and are not exported to BigQuery — the ad events and the error event among them. If an automatic event is missing from your reports, check the table first: it may be one of the events that never appears, not a broken tag.
Dead ends
DEAD END — BUILDING A TAG FOR AN EVENT THAT ALREADY ARRIVES. session_start, first_visit and user_engagement are sent by the tag or the SDK on their own. A custom event tag with the same name does not replace the automatic one — it fires a second event with the same name, and every count that uses it doubles.
DEAD END — EXPECTING APP EVENTS ON A WEB PROPERTY. first_open, app_update, app_remove and the subscription events are app events. A website with a web data stream never collects them, and their absence is not a setup failure.
DEAD END — READING THE ERROR EVENT AS A REPORT ROW. The error event is logged in place of an event that cannot be logged because it is invalid. It does not appear in reports and is not exported to BigQuery — you cannot count invalid events by reading a report.
End state
The automatic events are the floor of your data: they arrive before any tag you build, and every report that counts sessions, users or engagement is built on them. The worked example below applies the engagement rule and the new-user split, so the definitions can be checked, not just read.
Worked example — stated inputs, recomputed results. The three sessions below are stated inputs for the example. Engaged or not was decided from the documented rule: a session is engaged if it lasts 10 seconds or longer, or has 1 or more key events, or has 2 or more page or screen views.
| Session | Duration | Page views | Key events | Engaged? |
|---|---|---|---|---|
| A | 42 seconds | 1 | 0 | Engaged |
| B | 6 seconds | 3 | 0 | Engaged |
| C | 4 seconds | 1 | 0 | Not engaged |
| Total | — | — | — | 2 of 3 engaged |
Session A is engaged because 42 seconds is 10 seconds or longer. Session B is engaged because 3 page views is 2 or more, even though 6 seconds is under 10. Session C fails all three tests: 4 seconds, 1 page view, 0 key events. Engagement rate is 2 ÷ 3 = 66.7%.
The same users split by first visit: 1,240 active users with 486 new users — the users who logged first_visit — leaves 754 returning users. New users are 39.2% of active users; returning users are 60.8%.
Sources
- Analytics Help — Automatically collected events — the full automatic-events table, the three session events and their parameters, the enhanced measurement rows, the default parameters on every web event, and the events that never appear in reports
- Analytics Help — Tech details report — the engaged-sessions rule — 10 seconds or longer, 1 or more key events, or 2 or more page or screen views — and that New users counts first_open or first_visit
Checked 11 November 2026. The click paths above are the ones in Google's help and developer pages, opened in full on 11 November 2026. No step in this guide was run inside a live Analytics property, because that needs a Google sign-in and this site does not sign in as anyone. The worked-example figures on this page were recomputed in Python with decimal arithmetic, and the downloadable JSON file carries the same recomputed figures. Google moves menu items without warning; if a path on this page no longer matches, the linked help page is the current map.