December 8, 2022
Enhanced Measurement in Google Analytics 4: The Guide
Updated: December 8th, 2022
When installed on a website (without any additional configurations), Universal Analytics (a.k.a. GA3) was tracking just page views. If you want to see any other interactions in your reports, you’d have to implement additional event tracking.
To improve that, Google Analytics 4 offers more out-of-the-box interactions that are tracked without the need to change the website’s code or configure a GTM container. That suite of auto-tracking features is called Enhanced Measurement.
Of course, you will still need to implement a bunch of recommended or custom events to get the most out of GA, but the enhanced measurement is a welcome addition for those who are just looking for very basics. However, there are some nuances as well (that I’ll also talk about).
Table of Contents
– Hide table of contents –
- Event tracking in GA4
- What is Enhanced Measurement in GA4?
- What kind of events are tracked by it?
- Page views
- Outbound clicks
- Site search
- Video engagement
- File downloads
- Form interactions
- Final words
If you prefer video content, I have recorded a tutorial about Enhanced Measurement on my Youtube channel. As always, to learn the most about this topic, I recommend doing both: reading the guide and watching the video.
Note: GA4 interface has slightly changed since I recorded this video. Debugview is not located at Admin > Debugview.
Event tracking in GA4
Enhanced Measurement is just a small part of event tracking in Google Analytics 4. There are also things like recommended events and custom events. So if you want to learn more (and see a clearer picture), please read this guide (+ watch a video tutorial).
Speaking of automatic events (but excluding enhanced measurement), there are some additional events that GA4 tracks automatically as well. You can find a full list here. On that list, you will find both app and web events.
The list of automatic website events:
- first_visit. This is the first time a user visits a website or launches an app.
- session_start. When a user engages the app or website and starts a new session
- user_engagement. This event is fired 10 seconds after the visitor has stayed on a page. But it also might periodically fire while the app is in the foreground. You can learn more here.
I didn’t mention the page_view here because I added it to the Enhanced Measurement section. And once again, if you want to see the app events, you can check them here.
That was a very brief introduction to automatically tracked (but non-enhanced-measurement) events. And now, let’s move to the main topic.
What is Enhanced Measurement in Google Analytics 4?
Enhanced Measurement is a suite of automatic event-tracking features that allow marketers/analysts to collect more data out of the box. In the previous version of GA (called Universal Analytics), we had only pageviews. If you wanted to track some events, you had to customize your setup.
Now, with Enhanced Measurement, you can have more events without configuring Google Tag Manager or editing your website’s code. Although, it’s worth noting that some of the EM events might be limited, and you will probably need to do tweaks here and there (more about that – later).
When you configure a web data stream in Google Analytics 4, you have the option to use Enhanced Measurement. It is designed to help marketers get as many events in the reports as possible without the need to cooperate with developers or configure in Google Tag Manager.
If you go to Admin > Data Streams > Select the web data stream, the following window will open where you will see a section called Enhanced Measurement.
What kind of events are tracked by Enhanced Measurement?
By default, this feature is enabled and will automatically track the following events:
- Page view (event name: page_view)
- Scroll (event name: scroll)
- Outbound link click (event name: click with the parameter outbound: true)
- Site search (event name: view_search_results)
- Video Engagement (events: video_start, video_progress, video_complete)
- File Download (event name: file_download)
- Form interactions (event name: form_start, form_submit)
If you want, you can disable/enable events individually, and you can do that by clicking the gear icon in the Enhanced Measurement section and then clicking the toggle buttons.
Let’s take a closer look at each of those events. In some examples, I will show how to add some additional customizations with Google Tag Manager.
When the page view is sent to Google Analytics 4, the event name is page_view. Speaking of regular page views (when the page actually reloads and a browser downloads all the resources), they cannot be turned off in Enhanced Measurement.
Every event tracked with GA4 (client-side) tracks also contains several parameters (they also apply to custom events):
If you want to see the full list, take a look here.
Speaking of GA4 implementation via GTM, regular pageviews are controlled via this checkbox in the GA4 Configuration tag:
… or by manually sending the page_view as an event:
As for page_view events, GA4 is now also capable of tracking History Change events (in other words, when the URL changes without the page reloading). These are very common in single-page applications/websites. However, there are some nuances here. What I’ve noticed is that a page_view event is sent to GA4 only if the URL change does not include URL fragments (#). If you notice a different behavior, please let me know.
If a URL changes (without reloading the page) like this: example.com –> example.com/something, then the event will be automatically tracked by enhanced measurement.
But if the URL changed from example.com to example.com/#something (contains #), then the event will not be sent (even though you might see the “History” event in the data layer). Also, it looks like even in the latest version, GA4 still cannot display the URL fragments in reports.
If a URL contains #, everything that comes after it will not be displayed in the reports (you can check that in the DebugView).
So if your URL contains #, it looks like you will have to use the History Change trigger in GTM. Hopefully, this will change in the future.
When a visitor scrolls below 90% of the page height, a scroll event is sent to Google Analytics. If you want to add some additional thresholds (such as 25%, 50%, etc.), you can’t do that in Enhanced Measurement.
So, before you start looking into it, think about how (and if) you will use scroll data. Yes, this is quite a popular thing to implement (because of its simplicity), but for me, it’s very difficult to remember a case where I found scroll tracking in GA useful.
Rants aside, if you are happy with just the 90% scroll event, then keep it enabled in Enhanced Measurement. But if you want to track additional thresholds, you can disable that feature in GA4 and send scroll events configured in GTM. Here is a full guide about it.
Here’s an example of the trigger that you could use:
And then, create a GA4 event tag with the following settings.
I specifically used scroll as the event name and percent_scrolled parameter because that’s what the default Enhanced Measurement scroll event contains. So we are just using the same naming convention.
Also, if you want to see percent_scrolled parameter in your GA4 reports, you will need to register it as a custom dimension (unless you mainly work with explorations. This dimension is available there by default.).
When a visitor clicks a link on your website, and that link redirects a visitor to another domain, this is considered as an outbound link click.
So, whenever that happens, you will see a click event coming to your GA4 property.
With this event, an additional parameter outbound (with the value “true”) is sent. The event with this parameter means that there was an outbound link click. Together with this event, a bunch of other parameters are sent:
If your business operates on several domains, you can go to Tagging Settings (of that very same event stream) > Configure your domains and then enter the domains of your business. All the domains that are listed there will not trigger the outbound link click event.
If you want to see/use link_classes, link_domain, link_id, link_url in your GA4 reports, you will need to register them as custom dimensions (unless you mainly work with explorations. This dimension is available there by default.).
Another event is view_search_results. This event will be sent to Google Analytics 4 if the page loads and the URL of the page contains a query parameter, such as q, s, search, query, keyword. But if you want, you can include more (up to 10).
If the URL of the search results page is https://www.yourwebsite.com/search?key=my+search+term, then you should enter the word “key” (without quotation marks in the settings of the search event).
Speaking of parameters that are sent with the search event, there is at least one, but you can configure more:
- search_term. This is where the search keyword will be stored.
- q_[additional-query-parameter]. If your search page’s URL contains more useful parameters, you can configure Enhanced Measurement to grab it too. Learn more about this below.
If the URL of the search results contains more useful parameters, you can include them as well. For example, if the URL of your search results looks like this: https://www.yourwebsite.com/search?key=search+term&page=3, you could include the “page” (without quotation marks) in the 2nd field of the configuration. Then this parameter will be automatically tracked by GA4.
One more thing to know. Those additional query parameters will be captured like this:
- Start with q_
- and then the name of the additional parameter that you configured in Enhanced Measurement
In my case of the “page” additional parameter, it was captured as q_page.
If you want to see/use search_term and additional query parameters (e.g. q_page from my example) in GA4 reports, you must register them as custom dimensions.
Update: the search_term dimension is available in Explorations by default (as Search Term).
Also, if built-in search tracking is not enough and you want more (because on some websites, it won’t work), read this blog post.
Enhanced Measurement can track interactions of the embedded Youtube video on your website and then sends “video_…” events to GA4. But those embedded Youtube video players must contain the ?enablejsapi=1 parameter in their URL. And that is not always available on websites. Also, there are many other reasons why Youtube video tracking might not work out of the box. Hence you will need some tweaks.
Because of those nuances, I’d say that this automatic video tracking will not work in as many cases as you might think, hence I’d personally vouch for doing that with GTM.
Speaking of video tracking with Enhanced Measurement, here are the events that are automatically captured:
- video_start. Sent when a visitor starts watching a video.
- video_progress. When a viewer reaches a particular video threshold (10%, 25%, 50%, 75%).
- video_complete. When a visitor reaches the end of the video.
Parameters that are automatically tracked by this feature:
- video_current_time. The current timestamp of the video where the viewer is at (in seconds)
- video_duration. Video duration in seconds.
- video_percent. The threshold of the video (without the % sign)
- video_provider. The value of this parameter is always “youtube”.
- video_title. The title of the video.
- video_url. This is the URL of the video.
- visible. Returns “1” if the player is visible on the screen while the video engagement was tracked.
If you want to use/see any of these in GA4 reports, you will need to register them as custom definitions.
This event (file_download) is sent to GA4 when a link is clicked and that link contains one of the following file extensions: .pdf, .xls, .xlsx, .doc, .docx, .txt, .rtf, .csv, .exe, .key, .pps, .ppt, .pptx, .7z, .pkg, .rar, .gz, .zip, .avi, .mov, .mp4, .mpe, .mpeg, .wmv, .mid, .midi, .mp3, .wav, .wma. In other words, if the link opens/downloads a file. It is currently impossible to update the list with other extensions in the GA4 interface.
So if you want to extend the list, you must implement it via Google Tag Manager. Here is an example of how to configure the trigger. But to learn how to configure the GA4 event tag, read this tutorial.
The list of additional parameters that are automatically tracked together with the file_download event are:
- file_extension. The extension of the file, e.g. “pdf”, “docx”, etc.
- file_name. The name of the file. If the clicked URL is example.com/filename.pdf, the parameter’s value will be “filename”).
- link_text. The text of the link (that was clicked) to open/download the file.
- link_url. The URL of the file link that was clicked, e.g. https://www.example.com/filename.pdf
If your website has a form and a visitor interacts with it, Google Analytics 4 can track those interactions. But the key word here is can. Unfortunately, in many cases, it will not be reliable. I will explain this soon.
The list of additional parameters that are automatically tracked together with the form events are:
- form_id.HTML id attribute of the <form> DOM element.
- form_name. HTML name attribute of the <form> DOM element.
- form_destination. URL to which the form is being submitted.
- form_submit_text. This parameter is available only with the form_submit event. It will contain the text of a form submit button.
As I have said, this event is often unreliable, and I would not recommend using form tracking of enhanced measurement.
- It won’t be able to track AJAX forms
- It might track an event when the form was submitted unsuccessfully (e.g., when a required field is left blank)
I recommend building a custom form-tracking solution with Google Tag Manager instead.
Final words regarding Enhanced Measurement in GA4
Enhanced Measurement is a nice little time-saver when configuring events in Google Analytics 4. However, I would not use every single feature in that suite. What I always use:
- File download tracking
- Outbound link clicks
- Site search
What I rarely use (or don’t use at all):
- Video engagement (because it does not work on many websites). I’d rather do that with GTM.
- Scroll (I always have mixed feelings here. At the moment of writing this blog post, I actually have scroll tracking implemented on my blog + enhanced it with additional events with GTM, but that is just for playing around with GA4. But on real projects, it’s always a topic for discussion.)
- Form interactions. I never use that because of its unreliability.
I also haven’t yet decided what to do with History change events automatically tracked by Enhanced Measurement. If your URL contains #, you will still need to configure virtual pageview tracking in GTM manually. And what about other cases? Time will show. I’ll keep an eye on it to see if it’s worth taking a shot.