Share
Contents
Google Analytics allows you to track automatically collected events and custom events. Custom events can be split into recommended and user-defined events.
Automatically collected events can be broken down into the ones that GA4 collects automatically after adding the code on the website, and you can’t disable them, and those you can turn on and off using the Enhanced Measurement interface in Google Analytics 4. Enhanced Measurement events are activated automatically as well once you create a GA4 property.
This article will list all automatically collected events that Google Analytics measures once you add a GA4 snippet code to your website or app. These events can give you first insights into users’ behaviour and company well-being.
GA4 Automatic Events for Mobile and Web
As mentioned above, for Google Analytics 4 to collect automatic events, you must place a GA4 code on your website or app. After it’s there, depending on whether you use a website or app, GA4 starts to collect the following events with the parameters.
Note: All events are collected in the table below and updated regularly after every new GA4 update. You can turn the events off in Enhanced Measurement ( GA4 – Admin – Data Streams – Data Stream Details – Enhanced Measurement) are marked as “True” in “Enhanced Measurement Support” column.
Event Name | Automatically triggered… | Event Parameters | Platform | Enhanced Measurement | BigQuery Export Support |
first_visit | the first time a user visits a website or launches an Android instant app with Analytics enabled | language, page_location, page_referrer, page_title, screen_resolution | Web and Mobile | FALSE | TRUE |
session_start | when a user engages the app or website A session ID and session number are generated automatically with each session and associated with each event in the session. | language, page_location, page_referrer, page_title, screen_resolution | Web and Mobile | FALSE | TRUE |
user_engagement | when the app is in the foreground or webpage is in focus for at least one second. | engagement_time_msec | Web and Mobile | FALSE | TRUE |
click | each time a user clicks a link that leads away from the current domain By default, outbound click events will occur for all links leading away from the current domain. Links to domains configured for cross-domain measurement will not trigger outbound click events. | link_classes, link_domain, link_id, link_url, outbound (boolean) | Web | TRUE | TRUE |
file_download | when a user clicks a link leading to a file (with a common file extension) of the following types: document text executable presentation compressed file video audio The file name should meet the following regex for the event to be sent into Google Analytics 4: pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma | file_extension, file_name link_classes, link_domain, link_id, link_text, link_url | Web | TRUE | TRUE |
form_start | the first time a user interacts with a form in a session | form_id, form_name, form_destination | Web | TRUE | TRUE |
form_submit | when the user submits a form | form_id, form_name, form_destination, form_submit_text | Web | TRUE | TRUE |
page_view | each time the page loads or the browser history state is changed by the active site | page_location (page URL), page_referrer (previous page URL), engagement_time_msec | Web | TRUE | TRUE |
scroll | the first time a user reaches the bottom of each page (i.e., when a 90% vertical depth becomes visible) | engagement_time_msec | Web | TRUE | TRUE |
video_complete | when the video ends For embedded YouTube videos that have JS API support enabled. | video_current_time, video_duration, video_percent, video_provider, video_title, video_url, visible (boolean) | Web | TRUE | TRUE |
video_progress | when the video progresses past 10%, 25%, 50%, and 75% duration time For embedded YouTube videos that have JS API support enabled. | video_current_time, video_duration, video_percent, video_provider, video_title, video_url, visible (boolean) | Web | TRUE | TRUE |
video_start | when the video starts playing For embedded YouTube videos that have JS API support enabled. | video_current_time, video_duration, video_percent, video_provider, video_title, video_url, visible (boolean) | Web | TRUE | TRUE |
view_search_results | each time a user performs a site search, indicated by the presence of a URL query parameter | search_term, optionally ‘q_ | Web | TRUE | TRUE |
ad_click | when a user clicks an ad Publisher events coming from AdMob via the Google Mobile Ads SDK or Ad Manager via the Ad Manager integration This event is not exported to BigQuery. | ad_event_id | Mobile | FALSE | FALSE |
ad_exposure | when at least one ad served by the Mobile Ads SDK is on screen This event does not appear in reports and is not exported to BigQuery. | firebase_screen, firebase_screen_id, firebase_screen_class, exposure_time | Mobile | FALSE | FALSE |
ad_impression | when a user sees an ad impression Publisher events coming from AdMob via the Google Mobile Ads SDK or Ad Manager via the Ad Manager integration This event is not exported to BigQuery. | ad_event_id, value | Mobile | FALSE | FALSE |
ad_query | when an ad request is made by the Mobile Ads SDK This event does not appear in reports and is not exported to BigQuery. | ad_event_id | Mobile | FALSE | FALSE |
ad_reward | when a reward is granted by a rewarded ad served by the Mobile Ads SDK | ad_unit_code, reward_type, reward_value | Mobile | FALSE | TRUE |
adunit_exposure | when an ad unit served by the Mobile Ads SDK is on screen This event does not appear in reports and is not exported to BigQuery. | firebase_screen, firebase_screen_id, firebase_screen_class, exposure_time | Mobile | FALSE | FALSE |
app_clear_data | when the user resets/clears the app data, removing all settings and sign-in data Android only | language, page_location, page_referrer, page_title, screen_resolution | Mobile | FALSE | TRUE |
app_exception | when the app crashes or throws an exception The event is sent when you integrate Firebase Crashlytics. | fatal, timestamp, engagement_time_msec | Mobile | FALSE | TRUE |
app_remove | when an application package is removed (uninstalled) from an Android device Android only This event is different from the Daily uninstalls by device and Daily uninstalls by user metrics, which are both reported by Google Play Developer Console. The app_remove event counts the removal of application packages, regardless of the installation source, and the count changes depending on the date range you are using for the report. The Daily uninstalls by device and Daily uninstalls by user metrics count the removal of application packages only when they were installed from Google Play, and are reported on a daily basis. | language, page_location, page_referrer, page_title, screen_resolution | Mobile | FALSE | TRUE |
app_store_refund | when an in-app purchase is refunded by Google Play Android only This event is not exported to BigQuery. | product_id, value, currency, quantity | Mobile | FALSE | FALSE |
app_store_ subscription_cancel | when a paid subscription is cancelled in Google Play Android only Requires an initial subscription that was made on or after July 1, 2019. This event is not exported to BigQuery. | product_id, price, value, currency, cancellation_reason | Mobile | FALSE | FALSE |
app_store_ subscription_convert | when a free-trial subscription is converted to a paid subscription This event is set as a default conversion. Requires an initial subscription that was made on or after July 1, 2019. An initial free-trial subscription is logged as an in_app_purchase with the subscription parameter set to true. This event is not exported to BigQuery. | product_id, price, value, currency, quantity | Mobile | FALSE | FALSE |
app_store_ subscription_renew | when a paid subscription is renewed This event is set as a default conversion. Requires an initial subscription that was made on or after July 1, 2019. This event is not exported to BigQuery. | product_id, price, value, currency, quantity, renewal_count | Mobile | FALSE | FALSE |
app_update | when the app is updated to a new version and launched again The previous app version id is passed as a parameter. This event is conceptually different from the Daily upgrades by device metric, which is reported by Google Play Developer Console. An upgrade refers to the updating of the application binary, whereas an app_update event is triggered upon the subsequent launch of the upgraded app. | previous_app_version | Mobile | FALSE | TRUE |
dynamic_link_app_open | when a user re-opens the app via a dynamic link | source, medium, campaign, link_id, accept_time | Mobile | FALSE | TRUE |
dynamic_link_ app_update | when the app is updated to a new version and is opened via a dynamic link Android only | source, medium, campaign, link_id, accept_time | Mobile | FALSE | TRUE |
dynamic_link_ first_open | when a user opens the app for the first time via a dynamic link | source, medium, campaign, link_id, accept_time | Mobile | FALSE | TRUE |
error | logged in place of an event that can’t be logged because it is invalid in some way _err (firebase_error), _ev (firebase_error_value), and _el (firebase_error_length) parameters have additional information. This event does not appear in reports and is not exported to BigQuery. | firebase_error, firebase_error_value | Mobile | FALSE | FALSE |
firebase_campaign | when the app is launched with campaign parameters This event does not appear in reports and is not exported to BigQuery. | source, medium, campaign, term, content, gclid, aclid, cp1, anid, click_timestamp, campaign_info_source | Mobile | FALSE | FALSE |
firebase_in_app_ message_action | when a user takes action on a Firebase In-App Message | message_name, message_device_time, message_id | Mobile | FALSE | TRUE |
firebase_in_app_ message_dismiss | when a user dismisses a Firebase In-App Message | message_name, message_device_time, message_id | Mobile | FALSE | TRUE |
firebase_in_app_ message_impression | when a user sees a Firebase In-App Message | message_name, message_device_time, message_id | Mobile | FALSE | TRUE |
first_open | the first time a user launches an app after installing or re-installing it This event is not triggered when a user downloads the app onto a device, but instead when he or she first uses it. To see raw download numbers, look in Google Play Developer Console or in iTunesConnect. Supports measuring first_open conversions for users who accept Apple’s iOS 14 app-tracking prompt. | previous_gmp_app_id, updated_with_analytics, previous_first_open_count, system_app, system_app_update, deferred_analytics_collection, reset_analytics_cause, engagement_time_msec | Mobile | FALSE | TRUE |
in_app_purchase | when a user completes an in-app purchase, including an initial subscription, that is processed by the Apple App Store or Google Play Store The product ID, product name, currency, and quantity are passed as parameters. This event is triggered only by versions of your app that include the Google Analytics for Firebase SDK. Android: To see in-app purchase data for Android apps, link Analytics to Google Play. Note that Analytics doesn’t automatically measure paid-app purchase revenue. Also, your reported revenue in Google Analytics may differ from the values you see in the Google Play Developer Console. Analytics ignores events that are flagged as invalid or tests. Learn more about testing Google Play billing. iOS: Note that Analytics doesn’t automatically measure paid-app purchase revenue and refunds. Analytics ignores events that are flagged as invalid or sandbox. | product_id, price, value, currency, quantity, subscription, free_trial, introductory_price | Mobile | FALSE | TRUE |
notification_dismiss | when a user dismisses a notification sent by Firebase Cloud Messaging (FCM) Android only | message_name, message_time, message_device_time, message_id, topic, label, message_channel | Mobile | FALSE | TRUE |
notification_foreground | when a notification sent by FCM is received while the app is in the foreground | message_name, message_time, message_device_time, message_id, topic, label, message_channel, message_type | Mobile | FALSE | TRUE |
notification_open | when a user opens a notification sent by FCM | message_name, message_time, message_device_time, message_id, topic, label, message_channel | Mobile | FALSE | TRUE |
notification_receive | when a notification sent by FCM is received by a device when the app is in the background Android only | message_name, message_time, message_device_time, message_id, topic, label, message_channel, message_type | Mobile | FALSE | TRUE |
os_update | when the device operating system is updated to a new version. The previous operating system version id is passed as a parameter | previous_os_version | Mobile | FALSE | TRUE |
screen_view | when a screen transition occurs and any of the following criteria are met: No screen was previously set The new screen name differs from the previous screen name The new screen-class name differs from the previous screen-class name The new screen id differs from the previous screen id | firebase_screen, firebase_screen_class, firebase_screen_id, firebase_previous_screen, firebase_previous_class, firebase_previous_id, engagement_time_msec | Mobile | FALSE | TRUE |
Final Word
Unlike Universal Analytics, Google Analytics 4 collects way more automatic events. Adding a small piece of code to your website or application code lets you get information about users, sessions, page views, page scroll, video and page engagement, file downloads, form interactions and more. This makes Google Analytics 4 easy to install and more affluent in data than Universal Analytics.
If you have any questions about events automatically collected by GA4, don’t hesitate to comment below.
Frequently Asked Questions
These are automatically collected events by Google Analytics 4 that the tool can measure by only placing the primary snippet on a website or mobile app code. Some of them are session_start, page_view, user_engagement and others.
GA4 collects more than 30 events automatically. Some of them are: page_view, session_start, view_search_results, video_progress, video_start, video_complete, user_engagement, scroll, screen_view, notification_receive, os_update, notification_foreground, notification_dismiss, in_app_purchase, form_start, form_submit and many others.
Google Analytics 4 only tracks outbound clicks automatically. Outbound clicks are clicks on links with a domain different from your website. If you want to track every click on your website, set it up using Google Tag Manager.
Though you can disable several automatic events in GA4 -> Admin -> Data Streams -> Data Stream Details -> Enhanced Measurement, there are several events that you can’t turn off, for instance, “session_start” event.
You Might Also Like

Written By
Ihar Vakulski
With over 8 years of experience working with SaaS, iGaming, and eCommerce companies, Ihar shares expert insights on building and scaling businesses for sustainable growth and success.
KEEP LEARNING
Almost every website uses Google Search Console as the primary source of information about organic traffic performance. However, this tool doesn’t have all the necessary…
GA4 Data Import is the function provided by Google that allows companies to merge data accessible in GA4 with data from other sources such as…
Leave a Comment
Your email address will not be published. Required fields are marked *
Stay Updated About Every New GA4 Feature
Subscribe to this newsletter to learn more about new Google Analytics 4 features and adjustments.
No SPAM and only relevant content guaranteed!