GA4 Enhanced Measurement: Which Auto-Events to Trust (and Which to Replace)

Admin
Admin
May 22, 2026 · Configuration
GA4 Enhanced Measurement: Which Auto-Events to Trust (and Which to Replace)

Quick answer: Enhanced Measurement is GA4's one-click setting that auto-fires six events — page_view, scroll, click (outbound), view_search_results, video_*, and file_download. The setting is on by default and most properties never look at it again. The problem is that two of those auto-events are useful, two are usually noisy or misleading, and two only work for a narrow definition of "engagement" that probably doesn't match what you actually want to measure.

This post goes through each Enhanced Measurement event, explains what triggers it, when to trust it, and when to replace it with a custom event in GTM.

In this guide
  1. What Enhanced Measurement actually toggles
  2. page_view: keep it on, with caveats
  3. scroll: usually misleading, replace it
  4. click (outbound): keep but verify
  5. view_search_results: keep, but tune the parameter
  6. video_*: only works for embedded YouTube
  7. file_download: keep, but expand the extension list
  8. The 5-minute audit
  9. FAQ

What Enhanced Measurement actually toggles

In Admin → Data Streams → [your stream] → Enhanced measurement, you'll see a single master switch and six individual toggles. The master switch is on by default. Each individual event can be turned off without affecting the others.

Enhanced Measurement events fire in addition to any custom events you configure in GTM. They're not mutually exclusive — but they do count toward your event quota, and duplicate or noisy auto-events can clutter Explorations and make custom-event data harder to read.

page_view: keep it on, with caveats

Enhanced Measurement's page_view fires automatically on page loads and — critically — on browser History API changes (pushState, replaceState). That's what makes it work for single-page apps.

Keep it on, but watch for:

  • Duplicate page_views if you also configured a custom page_view trigger in GTM. This is a common audit finding — the SPA fires its own route-change event, and GA4 also fires its History API page_view, so you get two events per route change.
  • SPAs that don't use the History API (rare in 2026, but they exist). Hash-based routing won't trigger Enhanced Measurement's page_view — you'll need a custom event.
  • page_view firing before consent — Enhanced Measurement respects Consent Mode v2 if it's configured correctly. See our Consent Mode v2 audit for what "correctly" means.

scroll: usually misleading, replace it

This is the auto-event most likely to mislead. GA4's scroll fires once per page, when the user reaches 90% of vertical depth. That's it. No 25/50/75% milestones, no horizontal scroll, no time-on-section, no engagement signal beyond "they reached the bottom."

Why 90% is misleading:

  • On long pages, almost no one hits 90% — so scroll fires only for outliers, not for "engaged readers."
  • On short pages with a sticky footer, 90% is reached by a brief swipe — so scroll fires for almost everyone, including bouncers.
  • Sites that lazy-load content (most modern sites) artificially extend the page height as the user scrolls, pushing 90% further away. Scroll never fires.

What to do instead: turn off Enhanced Measurement's scroll, and create custom scroll events in GTM at 25%, 50%, 75%, and 100%. The four-tier model is far more useful for engagement analysis and works with lazy-loading because GTM's scroll trigger fires on percentage of viewport movement, not absolute page height.

click (outbound): keep but verify

Enhanced Measurement's click event fires when a user clicks any link with a host that doesn't match the data stream's domain. It's a useful auto-event, but two things commonly go wrong:

  • Cross-subdomain clicks are flagged as outbound. If your data stream is configured for www.example.com and the user clicks a link to app.example.com, GA4 treats that as outbound. Fix this in Configure tag settings → Configure your domains, where you add all subdomains. This is the same setting you check during a cross-domain audit.
  • JavaScript-driven navigation isn't captured. The auto-click event only fires on actual <a> tag clicks. Buttons or div elements that use window.location or history.pushState bypass it.

This event fires when the URL contains a query parameter that GA4 recognizes as a search term. The default parameter list is q, s, search, query, keyword.

If your site's search uses a different parameter (we've seen term, kw, find, filter), no events fire. Add your parameter in Enhanced measurement → Site search → Advanced settings → Additional query parameters.

Also worth knowing: view_search_results captures the search term as a parameter, which makes it eligible for the search_term custom dimension. If you want search-term reports, you'll need to register a custom dimension for search_term — it's not registered by default.

video_*: only works for embedded YouTube

Enhanced Measurement fires video_start, video_progress (at 10/25/50/75%), and video_complete — but only for embedded YouTube videos with the JavaScript API enabled. Vimeo, Wistia, self-hosted MP4s, and HLS streams produce nothing.

If your site uses anything other than embedded YouTube for video, treat Enhanced Measurement video events as not capturing your video engagement at all. You'll need custom GTM triggers using the relevant player API (Vimeo Player API, Wistia API, the HTML5 media events for self-hosted).

file_download: keep, but expand the extension list

This event fires when a user clicks a link ending in one of GA4's recognized file extensions. The default list is reasonable for documents (.pdf, .xls/.xlsx, .doc/.docx, .ppt/.pptx, .csv, .txt) and a few archive/exec formats (.zip, .exe, .dmg, .apk).

Common gaps in the default list:

  • Audio/video downloads (.mp3, .mp4, .wav, .mov) — not tracked.
  • Newer document formats (.epub, .mobi, .pages, .numbers, .key) — not tracked.
  • Code/data formats common in B2B (.json, .xml, .yaml, .sql) — not tracked.

If file downloads matter to your business, add the missing extensions in Enhanced measurement → File downloads → Advanced settings → Match additional file types. The setting accepts a regex.

The 5-minute audit

  1. Open Admin → Data Streams → [your stream] → Enhanced measurement.
  2. page_view: on. Check GTM for a duplicate custom page_view trigger.
  3. scroll: off. Replace with custom 25/50/75/100% triggers in GTM.
  4. click (outbound): on. Verify all your subdomains are listed in Configure your domains.
  5. view_search_results: on. Add your custom search parameter if it's not in the default list. Register search_term as a custom dimension if you want search-term reports.
  6. video_*: on if you embed YouTube. Off if you don't (it's just empty noise).
  7. file_download: on. Expand the file-type regex to cover anything that matters for your business.

This is a 5-minute audit you should redo any time the marketing site is redesigned, a new file type is published, or a CMS migration changes URLs.

Frequently asked questions

Does turning off Enhanced Measurement events lose historical data?

No, but it also doesn't recover anything. Turning off scroll stops new scroll events from being collected — existing data is unaffected. Re-enabling it later resumes collection from that point.

Do Enhanced Measurement events count toward GA4 event quotas?

Yes. Each scroll, click, file_download, etc. is a real event and counts toward your daily event quota (10M events per property per day on the free tier, much higher on 360). For most sites this is irrelevant, but for high-traffic sites with very chatty pages, turning off noisy auto-events can reduce quota pressure.

Can I rename Enhanced Measurement events?

Not directly. The event names are fixed by GA4. If you need different names (e.g., for consistency with a UA migration), you can either suppress the auto-event and create a custom event with your preferred name, or use a server-side GTM container to rewrite event names mid-flight. See our server-side GTM audit guide for that pattern.

Do Enhanced Measurement events respect Consent Mode v2?

Yes, as long as Consent Mode v2 is configured correctly at the page level — the gtag.js loaded by GA4 reads the consent state before firing any event, including Enhanced Measurement events. Misconfiguration of consent is a separate audit; see our Consent Mode v2 checklist.

What's the difference between Enhanced Measurement and Recommended Events?

Enhanced Measurement is automatic — six events that fire from the gtag.js library without any tag setup. Recommended Events is a list of named events (login, sign_up, purchase, etc.) that GA4 understands and has built-in reports for, but which you still have to fire yourself via GTM or gtag.js. Recommended Events are not automatic.

Does Enhanced Measurement work for Android/iOS apps?

The auto-event model exists but with different events. App data streams have screen_view, app_remove, app_update, session_start, and others — set in the Firebase/GA4 SDK rather than in the Admin UI. The principles in this post (audit each event, replace noisy ones with custom events) still apply.

Audit Enhanced Measurement automatically

A Snifflytics audit checks which Enhanced Measurement events are enabled, whether they're producing data that matches your traffic patterns, and whether any auto-events are colliding with custom events in your GTM container. Run it alongside the rest of the 25-point GA4 audit checklist. Start a free audit.

Share this post: Twitter LinkedIn