GA4 Enhanced Measurement: What It Tracks on Its Own

Switch on enhanced measurement and GA4 starts recording scrolls, outbound clicks, site searches, YouTube plays, file downloads and form use without any extra code. Each of those events has rules about when it fires and what it misses, and a few settings decide whether you get clean numbers or doubled ones. This guide goes through all seven options as Google documents them.

Google's enhanced measurement events article says the feature "lets you measure interactions with your content by enabling options (events) in the Google Analytics interface. No code changes are required." This guide goes through each of those events as Google documents them, and the settings that decide whether your numbers are right. It uses Google Analytics Help, Tag Manager Help and Google's developer documentation, checked on 7 November 2026.

Where to turn it on and off

Enhanced measurement belongs to a web data stream, so each website stream has its own settings. Google's steps:

  1. In Admin, under Data collection and modification, click Data streams.
  2. Click the name of your web data stream.
  3. Under Enhanced measurement, slide the switch on to enable all options, then click the settings icon to switch individual options off.

You need the Editor role or above at the property level to change these settings (see Google's access roles). Google says the tag "starts sending events right away" once you enable an option. There is a second switch in the Google tag itself: under Google tag settings, "Manage automatic event detection" lists the same event types, all on by default. Google warns that turning one off there means "no products or accounts that use this Google tag will receive associated data", and suggests turning collection off in the destination instead. So for a GA4-only change, use the data stream switches.

Before you switch everything on, Google asks you to "be sure you understand each option and what enhanced data will be collected", and adds that "you're required to ensure that no personally identifiable information is collected". The last section covers that.

The seven options at a glance

This table summarises Google's list. Every event shows in the Events report under the Engagement topic; Google's automatically collected events list marks each of them as "Collected by default via enhanced measurement."

OptionEvent nameWhen Google says it fires
Page viewspage_viewEach page load, and each browser history change made by the site
ScrollsscrollThe first time a visitor reaches 90% of the page's vertical depth
Outbound clicksclickEach click on a link to another domain
Site searchview_search_resultsEach time a search results page loads, detected from a URL query parameter
Video engagementvideo_start, video_progress, video_completeEmbedded YouTube videos with JS API support enabled
File downloadsfile_downloadClicks on links to files with a listed extension
Form interactionsform_start, form_submitFirst interaction with a form in a session, and each submission

Page views and single-page sites

The page_view event fills the Views metric, and its page_location and page_referrer parameters fill the Page location and Page referrer dimensions. Google says page views on page load are collected automatically and "you cannot turn off collection."

What you can change is the advanced setting "Page changes based on browser history events". It listens for pushState, popState and replaceState, which is how many single-page sites swap screens without a full reload. Google's single-page application guide recommends the browser history method when your site uses the History API, and tells you to make sure both "Page loads" and "Page changes based on browser history events" are on.

On a regular multi-page site the history setting rarely matters. On a single-page site, test it: click through a few screens and check in DebugView that each screen sends one page_view with the right page location and referrer.

Scrolls

Enhanced measurement sends one scroll event per page, "the first time a user reaches the bottom of each page (i.e., when a 90% vertical depth becomes visible)". The event fills the Percent scrolled dimension and carries engagement_time_msec. There is no setting for other depths.

If you want 25, 50 and 75 percent as well, Tag Manager's Scroll Depth trigger accepts a list of percentages or pixel values and fires once per threshold per page. Google notes two things there: for pages that scroll infinitely or vary a lot in size, the element visibility trigger is a better option, and a threshold that is already visible when the page loads fires without any scrolling. A short page can therefore record a 90% scroll from people who never touched the scroll wheel; read the number with that in mind. If you build your own scroll tracking, switch off the enhanced measurement Scrolls option so the two do not mix.

Outbound clicks and cross-domain links

The click event fires "each time a user clicks a link that leads away from the current domain and to another website", with the parameters link_classes, link_domain, link_id, link_url and outbound. Links to domains you have set up for cross-domain measurement do not count as outbound clicks; Google says those clicks "are ignored". The list of domains lives in the Google tag settings under "Configure your domains".

That matters when a visitor leaves your site for a booking tool, a shop or a payment page on another domain you own. Add that domain to the list and the move is tracked as one session; leave it out and it shows as an outbound click. Our GA4 cross-domain tracking guide covers the set-up.

view_search_results fires when a results page loads with one of five query parameters in the URL: q, s, search, query or keyword. The search_term parameter fills the Search term dimension. If your search uses another parameter, add it in the option's advanced settings. If your search does not put the term in the URL at all, enhanced measurement cannot see it. What a good site search needs beyond tracking is in our website search guide.

YouTube video engagement

Video events only cover embedded YouTube videos "that have JS API support enabled". Google lists three events:

  • video_start, when the video starts playing;
  • video_progress, when it passes 10%, 25%, 50% and 75% of its duration;
  • video_complete, when it ends.

The parameters include video_current_time, video_duration, video_percent, video_provider, video_title, video_url and visible. JS API support means the embed URL carries the enablejsapi parameter set to 1; YouTube's documentation says the default is 0, "which means that the player cannot be controlled using that API." If a video sends no events, check the iframe's src for enablejsapi=1 first. Videos from other players, or self-hosted video files, are not covered.

File downloads

file_download fires when someone clicks a link to a file whose extension matches Google's list:

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

The parameters are file_extension, file_name, link_classes, link_id, link_text and link_url. The event is based on the link click, so it counts clicks on a download link, not finished downloads. Extensions outside the list, for example a .webp image or an .epub, are not tracked; you would need your own event for those.

Form interactions

form_start fires "the first time a user interacts with a form in a session" and form_submit "when the user submits a form". Both send form_id and form_name (the HTML id and name attributes of the form element) and form_destination (the URL the form submits to); form_submit adds form_submit_text, the text of the submit button. Google notes that you can only use these parameters in reports "if you create custom dimensions for them"; our GA4 custom dimensions guide shows how.

Comparing the two events shows how many people start a form and how many send it. Give your forms an id or name so you can tell them apart. Before you mark form_submit as a key event, test it on your real forms in DebugView: a submit is not the same as a successful enquiry, and forms that send their data with JavaScript or sit inside an iframe from another service may behave differently from a plain HTML form. For enquiries you count as leads, a generate_lead event sent when the form succeeds is the more dependable signal; our GA4 basics guide covers key events.

Using it alongside Google Tag Manager

Enhanced measurement still works when the Google tag is loaded through Google Tag Manager. Double counting starts when you also build your own tags for the same thing. Google says it directly for page views: in its single-page guide, "If you configure your tags using Google Tag Manager, don't enable automatic history tracking in Google Analytics, as this can lead to double-counting page views." Its Tag Manager tutorial for single-page apps starts by clearing "Page changes based on browser history events" in the data stream before you add history-change triggers.

The same logic applies to the other options. If a Tag Manager tag already sends scroll depth, file downloads, outbound clicks or form events, turn that option off in enhanced measurement, or remove the tag. Pick one source for each event and write down which one it is.

Personal data in URLs and forms

Enhanced measurement reads URLs: page locations, search terms, link and download URLs, form destinations. If any of those contain an email address or a name, it goes to Google with the event. Google's PII best practices say "both the URL path and parameters must be free of PII" and that visitors "sometimes enter PII into search boxes and form fields."

GA4's data redaction helps here. It is a web data stream setting that removes likely email addresses and the URL query parameters you list, on the browser side before data is sent, from parameters including page_location, page_referrer, link_url, video_url and form_destination. Google says email redaction is on by default for new properties, works "on a best-effort basis", and that "the ultimate responsibility for meeting regulatory requirements still lies with the entity collecting data." If your forms submit with GET, the field values end up in the destination URL; switch them to POST or redact those parameter names.

Frequently asked questions

Is enhanced measurement on by default?

The switch is on the web data stream, and Google's steps describe sliding it on to enable all options. In the Google tag settings, every automatic event type is on by default. Check your own stream under Admin, Data streams, since older or edited properties may differ.

Can I turn off page view tracking?

No. Google says page views on page load are collected automatically and cannot be switched off. You can only switch off the extra page views sent on browser history changes, under the Page views option's advanced settings.

Why does GA4 not record my YouTube videos?

Enhanced measurement only tracks embedded YouTube videos with JS API support enabled, which means enablejsapi=1 in the embed URL. Other video players and self-hosted video files are not covered.

Does GA4 track scroll depth at 25%, 50% and 75%?

Not with enhanced measurement. It sends one scroll event when 90% of the page height becomes visible. For other depths, use a Scroll Depth trigger in Google Tag Manager and switch off the built-in Scrolls option.

Why are my page views doubled?

A common cause is two sources sending the same page_view, for example enhanced measurement's browser history page views plus a Tag Manager history-change tag. Google's advice for Tag Manager setups is to switch off the history setting in GA4.

Is form_submit a reliable conversion?

It records the submission, not whether the enquiry went through. Test it on your actual forms first, and for leads consider a generate_lead event sent when the form succeeds.

Want GA4 set up so the numbers can be trusted? See our services or email [email protected].