← All resources Tutorial

Enhanced measurement in GA4, toggle by toggle

Enhanced measurement is the set of events GA4 collects on its own, with no tagging: scrolls, outbound clicks, site search, video, file downloads and form interactions. It is on by default when you create a web data stream, and that default is mostly fine. The problem is the word "mostly": two of the seven toggles produce numbers that look like engagement and are not, and one needs a setting before it works on your site. This article goes through all seven, says what fires when, and gives a recommended state for each.

Where to find it: Admin › Data collection and modification › Data streams, open the web stream, click the gear next to Enhanced measurement. Part of the GA4 setup guide, step 4.

Page views · keep on

Sends page_view on every page load. This toggle cannot really be turned off (it greys out), but its advanced setting matters for single-page apps: Page changes based on browser history events sends a page view when the URL changes without a reload. Leave it on for apps built with React, Vue or similar; turn it off if you send virtual page views from Tag Manager yourself, or every route change counts twice.

Scrolls · keep on, read with care

Sends scroll once per page when the visitor reaches 90 percent of the page height. It is one threshold, not a depth distribution, and on a short page it fires the moment the page renders. That makes "scroll rate" meaningless on landing pages that fit one screen and useful on long articles. If you want 25/50/75 percent steps, build a Scroll Depth trigger in Tag Manager and turn this toggle off so the two do not overlap.

Outbound clicks · keep on

Sends click with link_url, link_domain and outbound: true for links that leave your domain. Handy for seeing which partner links, app store buttons or social profiles people use. Cross-domain setups are the exception: a link to a domain you added under "Configure your domains" is not counted as outbound, which is what you want.

Site search · keep on, add your parameter

Sends view_search_results with search_term when the page URL carries a search query parameter. GA4 looks for q, s, search, query and keyword by default. If your site uses something else (zoekterm, k, term), open Show advanced settings and add it; up to ten parameters, comma separated. Then search for something on your site and check DebugView for the event. The search terms report under Engagement › Events is one of the cheapest sources of content ideas you have.

Video engagement · on if you embed YouTube

Sends video_start, video_progress (at 10, 25, 50, 75 and 100 percent) and video_complete for embedded YouTube players that have the JS API enabled. It does nothing for Vimeo, self-hosted video or players without the API flag. Harmless when on; turn it off only to keep the event list short.

File downloads · keep on

Sends file_download with file_name and file_extension for links to PDFs, documents, archives, audio and video files. Brochures, price lists and whitepapers show up here without any work. If downloads are a lead signal for you, this is a good candidate for a key event.

Form interactions · off until you have checked it

This is the toggle to be careful with. It sends form_start when a visitor first interacts with any form and form_submit when a form is submitted. Both sound like lead tracking; neither is. Search boxes are forms, newsletter widgets are forms, cookie banners can be forms, and many modern form tools submit through JavaScript in a way GA4 either misses or double counts. The result is a form_submit count that bears no relation to the leads in your inbox.

Turn it off and track the forms that matter explicitly: a Tag Manager trigger on the form tool's own success event (or the thank-you page), sending a named event such as generate_lead with the form's name as a parameter. That event is the one to mark as a key event. If you leave the toggle on, treat form_submit as a diagnostic, never as a conversion.

Why the defaults are set this way

Enhanced measurement exists so a site without a tagging plan still produces engagement data. Every toggle is a trade-off between coverage and precision, and Google chose coverage. Your job is the opposite: keep the events whose meaning you can explain in one sentence and build the rest yourself. The recommended state, in one line: page views, outbound clicks, site search and file downloads on; scrolls on for content sites; video on if you use YouTube; form interactions off.

One more reason to be deliberate: enhanced measurement events count toward the 500 distinct event names a property allows and appear in every event list your colleagues scroll through. Fewer, named events make GA4 easier to read for everyone.

When you run GA4 through a server container

Nothing changes in this panel. Enhanced measurement events are generated in the browser by the Google tag and travel to the server container like any other GA4 hit, so scrolls, searches and downloads arrive complete. Two side effects are worth knowing. First, because the hits go to your own domain, ad blockers do not filter them, so the share of visitors with these events goes up after the switch; that is recovered data, not a change in behaviour. Second, the server container can enrich or drop them: Measurebase's Data Enrichment adds geo and device fields to every event, and the IP Filter drops your own team's scrolls along with their page views.

Frequently asked questions

Can I turn individual enhanced measurement events into key events?

Yes. file_download and view_search_results are common choices. Mark them under Admin › Data display › Events like any other event, and set the counting method to once per session so a visitor opening five PDFs counts once.

Do enhanced measurement events need Consent Mode?

They follow the same consent as the Google tag that sends them. With analytics storage denied, GA4 either sends nothing or cookieless pings, depending on your Consent Mode setup; enhanced measurement has no separate switch.

Why do I see scroll events on pages nobody scrolls?

The threshold is 90 percent of the document height. A page shorter than the viewport reaches it on load. Either accept that scroll is only meaningful on long pages, or replace the toggle with a Tag Manager scroll depth trigger that requires a minimum page height.

Can I rename form_submit to generate_lead?

You can create a modified event in GA4 (Admin › Events › Create event) that fires generate_lead when form_submit arrives with a specific form_id. It works, but the underlying detection problems stay. A dedicated Tag Manager trigger on the form tool's success event is more reliable.

Does enhanced measurement work with Tag Manager installs?

Yes. The toggles live in the data stream, not in the tag, so they apply whether the Google tag comes from Tag Manager, gtag.js or a plugin.

Will turning a toggle off delete past data?

No. It stops new events from being collected; everything already in the property stays for the data retention period.

Continue reading

Ready to move your tagging to Europe?

Start free, no credit card required. Live in about 15 minutes.

Start free