One of GA4's new features on Enhanced Measurement.
When you installed a new property in Universal Analytics (AKA GA3), you could only track page views by default. If you wanted to collect data from other types of interactions, for example scrolling a page, and display them in your reports, you had to implement additional events and event tracking.
As I've mentioned in previous articles, Google Analytics 4 is event-driven. This has meant that, by default, it offers a set of functions already configured to be able to track without the need to add a single line of code or add tags to Google Tag Manager. This set of automatic features is called Enhanced Measurement.
Obviously there are a number of recommended and customised events that will help you get the most out of GA4. But if your measurement needs are more basic, Enhanced Measurement will help you without having to rack your brains... with nuances.
Table of contents
Event tracking with Google Analytics 4
The Enhanced Measurement (enhanced measurement) is only a small part of the event tracking elements provided by Google Analytics 4. As I mentioned in a previous paragraph, we also have recommended events and custom events.
Within the automatic events, but outside the Enhanced Measurement, GA4 tracks a significant number, both Web and App events. You can see all the events that Analytics 4 logs automatically on this Google Analytics 4 support page : [GA4] Events that are logged automatically.
Within these events, and always talking about a website, I am going to highlight three:
- first_visit. This event fires the first time a user/device visits the website for the first time.
- session_start. This event occurs when a user/device starts a new session on the website.
- user_engagement. This event is still unclear. From the information I've managed to find, it seems to be triggered within 10 seconds of arriving at a page or when the user scrolls (the latter is less clear). It also seems to be activated periodically while the page/screen is in the foreground. But it is something that, as I said before, is not entirely clear to me.
I do have a clear objective, and that is to modify the concept of bounce that we had until now. Obviously, if an event occurs, for Google Analytics something has happened on the page, i.e. there has been a change, which means that there is no longer a bounce as it was understood until now. In previous versions of Analytics, one trick was to create a timer event in order, on the one hand, to measure the time spent on the page more precisely and, on the other hand, to reduce the bounce rate.
To understand the latter, nothing better than an example: In GA3 if someone came to this article, read it and left, the bounce was 100% and the time on the page was zero seconds. If you set a timer of 30 seconds, when the event was triggered there was no bounce and the time was as many units of 30 seconds as times the event was repeated, i.e. if someone was on the page 3 minutes 28 seconds, the time would be at least 3 minutes.
There is an automatic event that I haven't mentioned, and that is the page_view event. Let's see, although it is true that it is an automatic event, and it cannot be disabled, it is one of the events that appears in the Enhanced Measurement, and I will talk more in depth about it a little later on.
What is Enhanced Measurement?
So let's get down to the nitty-gritty What is enhanced measurement? Enhanced Measurement or enhanced measurement?
Well, they are actually a set of tracking functions that are already defined in GA4 and that will allow us to collect data in a simpler way. Except for one of them, page_view, which was already by default in Universal Analytics, if we wanted to track the rest, we had to configure this event tracking by customising the configuration, either with the ga.js code or with Google Tag Manager. Now we just need to enable or disable a button in our GA4 property settings.
However, these events on Enhanced Measurement have a very basic configuration. If we want to go further in the measurement of some of them, it may be necessary to make some adjustments. We will see which events and which adjustments may be necessary later on.
Configuring Enhanced Measurement is simple and will be available from the moment we define a new web data flow in GA4. Once created, it is as simple as going to the Manage section and in the Property column select Data Flow and, obviously, select the data flow we want to work on, once this is done, we will see in the new screen a section named Enhanced Measurement which we can activate or deactivate. In this second case, we will only be able to measure page views.

What events are tracked?
By default, when activating Enhanced Measurement, the following events will be tracked:
- Page views. The name of the event is page_view.
- Scroll. The name of the event is scroll.
- Outbound clicks. The name of the event is click and carries an additional outbound parameter with the value set to true.
- Search the site. The name of the event is view_search_results.
- Interaction with videos. In this case there are three events: video_start, video_progress and video_complete.
- File downloads. The name of the event is file_downloads.
Except for the first of these for obvious reasons, the rest can be enabled or disabled and in the case of site searches can / should be configured. To do this, simply click on the cogwheel at the bottom right of the manage section and choose which events you want to enable or disable from Enhanced Measurement.
Let us now take a closer look at each of the elements.
Page views
Every time a page of our website is loaded, Google Analytics generates and sends to our GA4 property a page_view event that is part of the Enhanced Measurement. This event is the only one that cannot be deactivated. Moreover, as with the rest of the events, page_view contains several parameters:
- Language
- url of the page (page_location).
- Previous page (page_referrer).
- Title of the page (page_title).
- Screen resolution (screen_resolution).
These parameters are collected by default in almost all events, while those marked in bold are inherent in page_view.
If you use Google Tag Manager to set up GA4, which I recommend and will talk about shortly, you can control the page_view event in two ways: either by checking the "Send a pageview event when this configuration loads" checkbox in the GA4 tag configuration template or by setting up a page_view event in the new GA4 event tag. However, one or the other, never both, as you would then send the page view twice.


An additional detail of the page_view event that is positive, in certain cases, is now able to track history change events, i.e. when the URL changes without the page being reloaded. This can be useful, for example, on single-page websites.
I was saying that in certain cases as there is some nuance in this new capability it only works if there is a change in the url of the page that does not include a URL fragment, for example "#". In this case, page_view will not be sent.
This way, if in a single page website we go from carlosmd6.sg-host.com to carlosmd6.sg-host.com/footer (for example) a page_view event will be sent, but if we go from carlosmd6.sg-host.com to carlosmd6.sg-host.com/#footer the page_view event will not be sent. In this second case you would have to use a history change trigger in Tag Manager in order to trigger the event. We'll see if this changes in a future version of GA4.
Scroll
Every time a user scrolls below 90% of a web page, a scroll event is generated and sent to GA4. This type of event is somewhat limited in that it is only triggered when the scroll threshold is exceeded. Also, this is one of the few events in Google Analytics 4 that has no parameters.
Previously, if you wanted to measure the scroll of a page you had to create an event, for example with an event tag in Google Tag Manager that is activated with a trigger of the type "Scroll Dept", in which you configure the percentages you want to trigger this tag (Grandpa's note: I still remember when you had to do this based on JavaScript tags).


If you want to configure the scroll percentage in GA4 from Google Tag Manager I recommend you to use the scroll event name and the parameter percent_scrolled. This way you will keep the nomenclature used by the event of Enhanced Measurement.
Remember also that if you want to measure the percent_scrolled parameter you will have to register it as a Custom Dimension in GA4.
I also recommend that if you want to measure by thresholds, it would be best to disable the scroll event offered by GA4 at Enhanced Measurement.
Now, I recognise that this type of measurement is very sweet, and easy to set up. But, frankly, except in previous versions that came in handy to launch an event that broke with the bounce measurement (this scroll event and the timers were the favourites to do this), if scroll measurement is of no use to you, it's almost better to save it.
Outgoing clicks
If a user clicks on a link on your website that takes them to another website, this is an outbound link. This will trigger a click event in your GA4 property that will be accompanied by an additional parameter: outbound=true. Also, in this case we will have more information thanks to other parameters:
- link_classes. The class of the outgoing link
- link_id. The ID of the outgoing link
- link_domain. The domain to which the outgoing link is pointing
- link_url. The full url to which the outgoing link leads.
As in the previous case, if you want to measure these parameters, you should record them as dimensions in GA4.
If for some reason you have several websites and you don't want the outgoing click event to be triggered when jumping from one to another, you should exclude those domains in the data stream. To do this, go to "More tagging settings" and choose the option "Configure your domains" and add the domains you want to exclude as outgoing links.

Site search
One of the configuration options you have in Universal Analytics, within views, is to enable site search tracking. Well, in GA4 this becomes an event called view_search_results.
Este evento se lanza cuando la url de la página contenga un parámetro de consulta (q, s, search,keyword…), es decir algo del tipo https://carlosmdh.es/?q=analytics. En la configuración puedes incluir hasta 10 parámetros, todo ellos separados por coma. Para identificar el valor del parámetro que usa tu sitio web para devolver los resultados de una consulta, haz una búsqueda e identifica el parámetro que se genera en la url entre «?» e «=». En mi caso es la letra q.
As in previous cases the view_search_results event is sent with several parameters:
- search_term. The query term used by the user (in the case of my example above it is "analytics".
- q_[additional-query-parameter]. In the case of introducing additional parameters that may be useful you can configure the site's query event to capture them. We would do this as follows.
Si en el caso anterior la página de los resultados de la búsqueda devuelve más de una página, y queremos realizar un seguimiento de la página de resultados a la que llega el usuario, podríamos encontrarnos con una url del siguiente tipo https://carlosmdh.es/?q=analytics&page=2. En este caso, tenemos un parámetro adicional (page), que deberemos de incluir en el segundo campo de la configuración cómo «page» (sin las comillas). De esta forma Google Analytics 4 capturará el valor de ese parámetro. Al igual que antes, podemos incluir hasta 10 parámetros adicionales.

By the way, in this case the query parameter will be captured as follows: q_page.
As always, if you want to use these parameters(search_term and q_page) in Analytics 4 reports, you will need to register both as custom dimensions.
Video playback
It is one of the most complete events in GA4, and perhaps one of the least useful right now. Not for nothing, but because it only works with embedded Youtube videos... and not always.
LA Enhanced Measurement is able to capture the interactions that occur with Youtube videos embedded in your website and send different events of the type "video_...". To do this, embedded Youtube videos must contain the parameter ?enablejsapi=1 within their URL. There are also other reasons that may cause this tracking not to work and additional adjustments may be necessary. This is why, if you need to track videos, it might be best to do it with Google Tag Manager.
The tracking implemented with Enhanced Measurement captures three events automatically:
- video_start. Sent when a user starts watching the video.
- video_progress. Sent when a user reaches a video viewing threshold (10, 14, 50 or 75%).
- video_complete. Sent when the user watches the entire video.
In addition, as in previous cases, the following parameters are tracked:
- video_current_time. The time stamp the user is at (in seconds).
- video_duration. The total duration of the video (in seconds).
- video_percent. The percentage of video viewed, if the % symbol.
- video_provider. In this case: youtube. It couldn't be anyone else, could it? 🙂 🙂
- video_title. The title of the video.
- video_url. the URL of the video.
- visible. This parameter can be very useful as it returns a boolean value depending on whether the video was visible on screen while the video was being tracked (1 if it was visible and 0 if it was NOT visible).
As always, in order to see any or all of these parameters in GA4 reports, you will need to register custom dimensions.
File download
The last event we found defined in the GA4 advanced measurement is file_download.
This event is logged each time a user clicks on a link that leads to one of the following file types:
- Document.
- Text.
- Executable.
- Presentation.
- Compressed file.
- Video.
- Audio.
The regular expression defining the file extensions that trigger this event is as follows:
pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma
At the time of writing this article (May 2021) there is no possibility to edit / modify this list of extensions... Except for Google Tag Manager.
file_download is accompanied by the following parameters which are also tracked:
- file_extension. the extension of the downloaded file.
- file_name. The name of the file, without the extension.
- link_text. The text of the link that is clicked to download the file, known in SEO as "Anchor Text".
- link_url. The URL of the link clicked to download the file.
- link_classes. The class of the link.
- link_domain. Link domain.
- link_id. The ID of the link.
And you know, if you want to measure any of these parameters... you have to register them as custom dimensions in GA4.
Don't go yet
Thanks to the Enhanced Measurement we will save time when configuring certain events in GA4. Of the six events, I think three are the most recommendable to activate:
- Download tracking.
- Clicks on outbound links
- Site search tracking.
Two, in principle I would think about whether it is good to activate them or better to configure them with Google Tag Manager:
- Interaction with videos. As it is limited to Youtube videos and does not always work.
- Scroll. In my experience this event used to make sense, because of what I said about "breaking" the bounce rate of certain pages, but now, I really don't know how far it can be useful, at least as it is thought in the Enhanced Measurement.
And yes, I left out the pageview event, but that event can't be disabled 😉 So that one is always there. The only case in which you will have to do something additional is if you have URLs that start with # and you want to track websites with a "One page" format. In that case, you will have to configure it from Google Tag Manager.
I invite you to leave your impressions and/or doubts in the contact form and to suggest new topics that you would like me to cover in these tutorials. I will be happy to answer you by email and write in this blog.