
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
- Scrolls
- Outbound clicks
- Site search
- Video engagement
- File downloads
- Form interactions
- Final words
Video tutorial
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.
Page views
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):
- language
- page_location
- page_referrer
- page_title
- screen_resolution
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.
Scrolls
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.).
Outbound clicks
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:
- link_classes
- link_domain
- link_id
- link_url
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.).
Site search
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.
Video engagement
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.
File downloads
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 you want to use/see any of these in GA4 reports, you will need to register them as custom definitions. However, these dimensions are available by default in explorations.
Form interactions
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.
14 COMMENTS
HI,
thanks for all the explanation. I am searching for an answer why "Page loads" is disabled and can not be enabled in "Page views" of the "Enhanced measurement". All screenshots I see on your site and other have an active state, in my implementation the state is disabled.
See this screenshot for more clarification:
https://www.dropbox.com/s/vh1zin4itimms1i/2021-04-02_08-11-05.png?dl=0
Thanks
But do you see pageviews in reports/debugview?
Yes, At least I think I do.:) "Engagements > Pages / Screens" shows results.
May the reason be that this GA4 property is connected with an Universal Analytics property?
Maybe :) I always install GA4 clean with GTM, without connecting UA gtags
OK, we will give that a try and let you know.:)
PS: Creating a clean property it is as outlined here, so pretty sure that the missing option is because it is an associated property.
Thanks much for sharing your knowledge. It is very valuable.
I'm starting a new Google Analytics implementation. I'm having the developers install a GTM container instead of the Global Site Tag. I'm going to implement both Universal Analytics and GA4 properties and configure them both and drop UA once GA4 matures and the users all feel comfortable with it. Might take some time.
I understand that to get any data collection into my Google Analytics GA4 property then I need to create a GA4 configuration tag in GTM with the "All Pages - Page View" trigger, preview, debug then publish. Once in place, then it will send back to Google Analytics what you are calling "automatic events" plus enhanced measurements that I turn on. So that tag is the equivalent of the gtag.js Global Site Tag, so to speak.
What is the equivalent of the GA4 config tag in Universal Analytics? Is it just the tag type of "Google Analytics: Universal Analytics" with "Page View" track type and same "All Pages - Page View" trigger the same? Does that send back all the data needed for the "automatic events" and I know UA doesn't have Enhanced Measurements.
Also, besides that initial all page view tag, is the "Google Analytics: Universal Analytics" tag type used for anything else in UA? I believe the event tag is used for any other tags?
My ques
Hello, I am working on GA4 and My website is created on Salesforce Health cloud and I want to track pdf downloads with the name of the file downloaded but it's not happening even when the Enhanced Measurement is turned On. What could be the possible reason for that?
Hello,
GA4 Enahnaced Measurements automatically tracks a page_view event. So why then does the GA4 Configuration Tag in GTM also have an option to send a page view when the tag loads? Won't this double-count page views?
The default File Download tracking in Enhanced Measurement for GA4 seems to truncate URLs at 100 characters? Our CMS makes long URLs, so most get truncated, making these reports useless. Is it possible to modify the way this works eg. to just store the filename and not the full path? Or can I create another custom event to store this somehow without double-counting them?
Hi, you cannot modify what enhanced measurement tracks here. You would need to build a custom solution in GTM that takes only the last part of the file URL. But that is much more advanced to answer/describe in the comment.
Hi Julius,
I'm comparing GA4 and GA3 data for the file_download event, and GA4 is missing PDF downloads for some pages altogether.
I compared the click URLs for the PDFs, and the format is identical, except for the path name:
1. https://www.example.com/images/Abc-123-789.pdf (tracks in GA3 only)
2. https://www.example.com/images/def-567-8910.pdf (tracks in both GA3 and GA4)
Both use lowercase ".pdf" at the end of the document name.
The only differences I see are that 1. the first URL uses upper and lower case letters in the path name, and 2. the first URL does not open the PDF in a new tab while the 2nd URL does.
Have you come across anything like this? Not sure why GA4 isn't picking this up.
Thank you!
Hi Julius,
Checking in on this scenario ^^ - thanks for your help!
Hi, I haven't noticed a scenario like this. This would require more thorough troubleshooting.