Enhanced Measurement in GA4 is one of the platform's most convenient features for new implementations. Enable it once and GA4 automatically tracks seven categories of user interactions without any code changes or GTM configuration. The problem is that automatic tracking without understanding its limitations leads to data that looks complete but is quietly wrong in specific ways. This article explains what each Enhanced Measurement event actually captures, the specific situations where each one should be disabled or replaced, and how to audit an existing setup for issues.
How enhanced measurement works
Enhanced Measurementevents are triggered by GA4's JavaScript listening to specific browser events: URL changes, scroll position updates, link click events, form interactions, video state changes, and file download link clicks. The tracking happens client-side, subject to all the limitations of browser-side JavaScript: ad blockers can suppress it, SPA navigation can confuse it, and some site architectures may trigger it at incorrect moments.
Go to Admin > Data Streams > click your web data stream. Enhanced Measurement is displayed with a master toggle and individual toggles for each event category when you click the settings button within the stream detail view. Confirm the stream itself is healthy first usingGA4 data stream validation.
Page views
GA4 automatically fires apage_viewevent on every page load. The Enhanced Measurement panel does not include a page_view toggle, but the automatic page_view can be suppressed by settingsend_page_view: falsein the GA4 Configuration tag or gtag config call.
The issue arises with Single Page Applications (SPAs) built with React, Angular, Vue, or Next.js. When users navigate between SPA routes, the URL changes but the page does not fully reload. GA4's page change detection listens for browser history state changes and fires a page_view on these virtual navigations, but accuracy varies significantly depending on the SPA's routing implementation. For SPAs, disable automatic page_view (via send_page_view: false in the GA4 Config tag) and implement custom page_view events in GTM triggered by route change events — see ourGA4 property configuration checksguide for the related stream and tag settings to review.
Scrolls
Thescrollevent fires when a user scrolls to 90% of the page depth for the first time on a page load. The 90% threshold is fixed and cannot be changed through the Enhanced Measurement panel. Keep it for any site that wants a basic engagement signal. Disable it and use a GTM Scroll Depth trigger if you need configurable thresholds (25%, 50%, 75%, 90%).
Outbound clicks
Theclickevent fires when a user clicks a link to a different domain. The parameteroutboundis set to true for these events. If you have cross-domain tracking configured, GA4 excludes configured domains from outbound click tracking automatically. Build a custom GTM implementation if you need custom parameters beyond what Enhanced Measurement provides per click.
Site search
Theview_search_resultsevent fires when a URL contains one of five default query parameters: q, s, search, query, or keyword. Keep it if your site uses standard search URL formats. Disable it if your search is JavaScript-powered without URL updates, or if your query parameter differs from the five defaults.
Form interactions
Form interactions are one of the riskiest Enhanced Measurement categories for business reporting. GA4 listens to browser-side form behavior, which does not always match your definition of a successful lead, signup, or checkout step. On complex forms, disable Form Interactions and replace them with custom tracking that fires on a confirmed success state you can verify — seeauditing custom events in GA4for the schema and naming patterns to follow.
Video engagement
Video engagement events (video_start,video_progress,video_complete) only work with YouTube videos embedded using the standard iframe API. They do not work with Vimeo, Wistia, JW Player, or any other platform. Disable if non-YouTube videos are present and implement platform SDK tracking instead.
File downloads
Thefile_downloadevent fires when a user clicks a link with a file extension matching a predefined list including pdf, xls, xlsx, doc, docx, zip, and common media formats. This is one of the most reliable Enhanced Measurement events because it detects file extensions in href attributes. Keep it enabled unless you need custom parameters like document title or category that Enhanced Measurement does not provide. Validate that file_download is firing as expected usingGA4 debug modebefore assuming it is reliable on every page template.
Not sure which Enhanced Measurement settings are causing issues on your site?
Enhanced measurement: validate, fix, and monitor
Validate
- Review each enabled Enhanced Measurement setting against your site type. SPAs, JavaScript-powered search, and non-YouTube video all need special attention
- Check for double-counted events: if you have a custom GTM tag and the same Enhanced Measurement event both enabled, events will fire twice
Fix
- Disable Form Interactions and replace with a custom GTM tag that fires on thank-you page load or a dataLayer event from your form processor
- Disable Enhanced Measurement events that fire false positives for your site type, each one can be toggled individually without affecting the others
Watch for
- Double-counted events after deploying new GTM tags, if you add a custom page_view or scroll event tag without disabling the Enhanced Measurement equivalent, both will fire
Enhanced measurement audit checklist
- Form Interactions is disabled and replaced with custom GTM tracking that fires on successful form submission only
- Site Search configuration is tested to confirm it correctly captures search terms from your URL format
- Video Engagement is disabled if non-YouTube videos are present and replaced with platform-specific tracking
- Scroll tracking is supplemented or replaced with multi-threshold custom tracking if scroll depth beyond 90% is needed
- SPA sites have disabled automatic page_view and implemented custom route-change-triggered page views
- No Enhanced Measurement event is double-firing with a custom GTM implementation of the same event
Related guides to read next
GA4 DebugView and Debug Mode in Production
Use DebugView to validate Enhanced Measurement events are firing correctly and check that debug mode is not leaking into production.
GTM Preview vs GA4 Reports: Why Numbers Differ
Understanding why events visible in GTM Preview mode don't always appear in GA4 reports as expected.
GA4 Data Stream Validation
A systematic approach to validating your data stream configuration catches Enhanced Measurement issues early.
Consent Mode v2 Guide
Enhanced Measurement events are also subject to consent restrictions, understand how Consent Mode affects each event type.
Audit your enhanced measurement configuration
GA4 Audits checks each Enhanced Measurement setting against your site type and flags double-firing events, PII risks, and SPA issues.