Unlike Universal Analytics bounce rate, Google Analytics 4 uses user engagement as the primary behaviour metric. This metric should lead you to what content you should improve to get even more visitors, conversions and transactions.
User Engagement in Google Analytics 4 comes with a set of metrics that we will explore in this article:
- engagement rate
- bounce rate
- average engagement time
- average engagement time per session
- engaged sessions
- engaged sessions per user
- user engagement
- lifetime engaged sessions
- lifetime engagement duration
Along with that, Google Analytics 4 allows you to adjust the timer to consider a session as an engaged session. Let’s start with the definition.
What’s User Engagement in Google Analytics 4?
As mentioned above, User Engagement is a core aspect of Google Analytics 4. Therefore it’s valuable to understand what it stands for properly. According to Google’s documentation:
“User engagement’ is the amount of time someone spends with your web page in focus or app screen in the foreground, which allows you to measure when users actively use your site or app.
In simple words, the amount of time users actively interact with your website. If they leave your website for 5 minutes to search for something on Google or do their home duties, Google Analytics 4 won’t record this time. Google Analytics 4 records only the time users spend on your website.
User engagement is about your actual users’ interactions with your website (clicks, reading content, buying products, etc.) or your app. If they are on your website or in your app but don’t take any action because they opened another Google Chrome tab, GA4 doesn’t record this time as user engagement.
How is User Engagement calculated in Google Analytics 4?
Therefore, to make this metric accurate, the amount of time is sent to Analytics whenever any of the following aspects happen:
- The user generates an event
- The user moves the app screen to the background
- The user focuses away from your web page
- The user navigates away from the app screen or web page (e.g., the user closes the tab, window, or app; the user navigates to another screen or page)
- The site or app crashes
In order to calculate this time correctly, Google Analytics 4 adds the engagement time as “engagement_time_msec” parameter to the next event except for session_start, page_view and first_visit. It doesn’t add time to these events because, usually, no other events happened before them. Therefore there is no engagement time, and there is nothing to add.
Let me give you three examples to understand it better.
Example 1
Suppose a user lands on the blog post for the first time, so this user generates first_visit, session_start, and page_view, after that a user spends 7310 milliseconds of engagement time reading the article before meeting the scroll 50% (second event), and after that, he reads the rest of the article and generates additional engagement time of 11586 and meets 90% of the page scroll. After reading the whole article, the user leaves the website, and because of that, GA4 receives “user_engagement” event that collects the total engagement time after 90% scroll, which equals 1000 for this case.
User… | Event name | user_engagement_msec |
lands on home page | first_visit, page_view, session_start | N/A |
scrolls a half of the page | scroll | 7310 |
scrolls the rest of the page | scroll | 11586 |
leaves the website | user_engagement | 1000 |
So, in this context, the total engagement time for this user’s session will be 19896 milliseconds or ~ 20 seconds.
Example 2
Let’s extend example 1 with a few more actions to see how user engagement is calculated for users who visited many pages and made a transaction(conversion).
Suppose a user lands on the blog post for the first time, so this user generates first_visit, session_start, and page_view, after that a user spends 7310 milliseconds of engagement time reading the article before meeting the scroll 50% (second event), and after that, he reads the rest of the article and generates additional engagement time of 11586 and meets 90% of the page scroll.
After that, a user clicks on the pop-up with your product coupon code. This action sends a custom GA4 event “blog_popup” with “engagement_time_msec” equals 412.
The user arrives on the product page, where he generates 50812 milliseconds of engagement time sent with “add_to_cart” ecommerce event when he clicks on “Add to cart” button.
After that, the user lands on the checkout pages. At that moment, the website sends “begin_checkout” event with “engagement_time_msec” equals 132. After that, the user provides all details such as (address, credit card details, etc.) and, in total, generates 183213 milliseconds of engagement time. This time is sent when he clicks on “purchase” button and leaves the checkout pages.
Once he lands on thank-you page, he generates “page_view” event without user_engagement_msec parameter and “purchase” ecommerce vent with 132 as “user_engagement_msec”.
Because the user made the transaction successfully, he decided to leave the website, and at that moment, the last “user_engagement” event is sent with “35” in “user_engagement_msec” parameter.
User… | Event name | user_engagement_msec |
lands on home page | first_visit, page_view, session_start | N/A |
scrolls a half of the page | scroll | 7310 |
scrolls the rest of the page | scroll | 11586 |
clicks on the product popup | blog_popup | 412 |
visits another page | user_engagement | 0 |
lands on the product page | page_view | N/A |
clicks on “Add to cart” button | add_to_cart | 50812 |
visits another page | user_engagement | 0 |
lands on the checkout page | page_view | N/A |
provides all data on checkout page | begin_checkout | 132 |
visits another page | user_engagement | 183213 |
lands on thank-you page | page_view | N/A |
successful transaction | purchase | 132 |
leaves the website | user_engagement | 35 |
In this case, the total engagement time for the session is 253632 milliseconds or ~ 254 seconds.
Example 3 (Practical)
Since the best example is a practical one. I decided to check how user engagement is reported in Google Analytics 4 DebugView. You can replicate the same experiment using your GA4 account, Google Tag Manager and DebugView instructions.
For this experiment, I took the following actions:
- landed on the article about how to import data into ga4
- scrolled it up to the bottom
- changed the browser tab and searched for something on Google (3-5 seconds)
- returned to my website and visited the contact page
- after that, I completed the form and left the website.
After I took these actions, I checked DebugView and it’s what it showed:
User… | Event name | user_engagement_msec |
lands on the article | session_start, page_view, | N/A |
scrolls 10% of the page | scroll | 3634 |
scrolls 25% of the page | scroll | 3950 |
scrolls 50% of the page | scroll | 4173 |
scrolls 75% of the page | scroll | 2267 |
scrolls 90% of the page | scroll | 1179 |
searched on Google for 22 seconds | ||
clicked on contact page link | user_engagement | 7560 |
lands on the contact page | page_view | N/A |
scrolls 10% of the page | scroll | 181 |
scrolls 25% of the page | scroll | 7 |
scrolls 50% of the page | scroll | 9 |
started to complete the form | form_start | 2907 |
scrolls 75% of the page | scroll | 4599 |
scrolls 90% of the page | scroll | 7 |
submitted the contact form (conversion) | contact_form_submitted | 2348 |
submitted the contact form (conversion) (duplicated event, thing that I fixed after this article 🙂 ) | contact_form_submitted | 2 |
leaves the website | user_engagement | 4297 |


As you can see, in every case, user engagement was sent as a “user_engagement_msec” parameter and was attached to the next event. The total engagement time for this session will equal 37120 milliseconds or 37.12 seconds.
What are the core User Engagement metrics used in GA4?
Now after we figured out what’s user engagement in Google Analytics 4, how it’s calculated, and what’s the goal of the event parameter “user_engagement_msec”, we can move to other metrics and Google Analytics 4 elements that are based on user engagement and were mentioned at the beginning of this article.
What’s considered an engaged session in Google Analytics 4?
The first and one of the most popular questions is about what’s considered an engaged session in Google Analytics 4. Someone can tell you that’s a session in which a user spends at least 10 seconds on your website. Is this right or wrong?
It’s instead neither wrong nor correct. First, a session is considered engaged if it meets at least one of the following criteria:
- the minimum engagement time threshold an analyst defined in Google Analytics 4 Data Stream settings
- the session has two pageviews (screenviews) or has at least one conversion.
By default, the minimum threshold is 10 seconds, but it’s 10 seconds of engagement time. Therefore, it doesn’t mean that a user needs to spend 10 seconds on your website but rather spend 10 seconds actively engaging in the content or product.
Someone can tell you that 10 seconds is not enough to consider a session as an engaged session, and it’s also right and wrong. 10 seconds is not entirely about engagement; it’s about whether the website content is relevant. If someone spends less than 10 seconds on your website, it means that the website content is irrelevant to the ad or organic search query. Therefore, Google Analytics 4 uses 10 seconds.
Although GA4 uses 10 seconds by default, you can adjust this number easily. To do that, take the following steps:
- Open Google Analytics 4 and go to Admin
- Select Data Streams and Go to Data Stream Details
- Click on “Configure Tag Settings” and click on show all
- Click on “Adjust session timeout”
- Modify “Adjust timer for engaged sessions “ and save changes.

So, in a nutshell, a session is considered engaged if a website or app user spends more than 10 seconds of engagement time on your website sent to Google Analytics 4 via “user_engagement_msec” event parameter or have at least two page views (screen views) or a user made at least one conversion.
As a result, Google Analytics 4 uses a few metrics based on engaged sessions. They are:
GA4 metric | Definition |
engaged sessions | number of engaged sessions that meets the minimum threshold defined by GA4 user in GA4 interface, at least 2 pageviews or 1 conversion |
engaged sessions per user | number of engaged session generated by the specific user |
lifetime engaged sessions | number of engaged sessions generated by the specific user for users’ lifetime |
lifetime engagement duration | amount of engagement time spent by user on your website for users’ lifetime |
Now, after we discussed engaged sessions, let’s look at the second metric – engagement rate.
What’s the engagement rate and bounce rate in Google Analytics 4?
Unlike Universal Analytics, Google Analytics 4 uses engagement rate instead of bounce rate, and even though Google added bounce rate into Google Analytics 4 on July 11, 2022, the primary metric is still engagement rate.
In two words, the engagement rate is defined in terms of engaged sessions, which we discussed early.
The engagement rate is the percentage of engaged sessions on your website or mobile app, while the bounce rate is the opposite of the engagement rate.
Therefore, you can find the bounce rate or engagement rate using the following formulas:
Engagement rate = Number of Engaged Sessions / Total Number of Sessions
Bounce rate = 1 - Engagement rate
You can also find the following metrics in GA4 besides the engagement and bounce rates.
GA4 metric | Definition |
average engagement time | The average length of time that the app was in the foreground, or the web site had focus in the browser for the specific number of users. It’s mainly used in users-scope reports. |
average engagement time per session | Average user engagement duration per session. It’s mainly used in session-scope reports. |
Where to find User Engagement metrics in Google Analytics 4?
As mentioned above, some engagement metrics are user-scope metrics, while other metrics are session-scope metrics. Therefore, you can’t find and use all metrics in the same report.
The main report in Google Analytics 4, where you can find session-scope metrics, is “Traffic acquisition report”. It includes the following metrics:
- Engaged sessions
- Average engagement time per session
- Engaged sessions per user
- Engagement rate
To find user-scope engagement metrics, you should use “User acquisition report”. It includes such metrics as:
- Engaged sessions
- Engagement rate
- Engaged session per user
- Average engagement time
In order to find other metrics that were mentioned early but are not available in these two acquisition reports, you should use Google Analytics 4 Explorations, for instance, a free form report. It will also allow you to access such metrics as lifetime engaged sessions and lifetime engagement duration.
How to work with GA4 User Engagement metrics in BigQuery?
Besides working with engagement metrics in the Google Analytics 4 interface, GA4 uploads this data in BigQuery if you have active product linking. Therefore, it’s also necessary to cast light on how to work with these metrics there.
First, Google Analytics 4 data in BigQuery includes “engagement_time_msec” parameter in every event besides session_start, page_view and first_visit. Besides that, every GA4 event in BigQuery also has the “ga_session_id” parameter. This parameter is the unique id of the users’ session that allows you to quickly calculate the number of sessions for the specific date and select the events users performed within the specific session.
Thus, in order to calculate the total amount of engagement time of the specific session, you can use this SQL example:
SELECT
(SELECT params.value.int_value FROM UNNEST(ev.event_params) params WHERE params.key = 'ga_session_id') as session_id,
SUM(CASE WHEN (SELECT params.value.int_value FROM UNNEST(ev.event_params) params WHERE params.key = 'engagement_time_msec') > 0 THEN (SELECT params.value.int_value FROM UNNEST(ev.event_params) params WHERE params.key = 'engagement_time_msec') ELSE 0 END) / 1000 as engagement_time
FROM `{Your BigQuery Project table with GA4 data}` as ev
GROUP BY
1

Of course, you can modify this code in order to get the average engagement time per session of the specific date. Besides that, you can adjust this code to calculate the “average engagement time per user” or “lifetime engagement time” using “user_pseudo_id” or “user_id” variables.
Second, apart from “engagement_time_msec” parameter available in BigQuery, it also includes two other parameters that can be not so self-explanatory:
- session_engaged
- engaged_session_event
The first parameter shows whether the session met the minimum threshold and was considered an engaged session or not. If it’s an engaged session, session_engaged will have “1” in event_params.value.string_value. If the session is not engaged, it will be equal “0”. Such events as session_start and first_visit usually don’t have “session_engaged” parameter.
The second parameter includes the number of sessions the user is engaged in. The value usually equals 1, but the value can increase if a user visits your website or app from many devices or browsers and can be recognised as the same user, usually using the “user_id” parameter.
After we have clarified all key definitions of user engagement in Google Analytics 4, it’s an excellent moment to discuss how we can use all of what we have learned to improve your business.
How to use User Engagement to improve your business?
The engagement rate has many similar things to the bounce rate, even if it’s slightly different. Many analysts look at the engagement ratio in Google Analytics 4 as an improved version of Universal Analytics bounce rate because if someone lands on your article, reads 50% of that, spends 20 seconds and finds the information needed and leaves your website, it doesn’t mean that the website wasn’t relevant to the user. In this case, Google Analytics 4 shows a better view of such cases.
Since these two metrics have many things in common, they can also be used similarly to find better insights on improving your business. The critical element of the analysis is segmentation. If you see that the traffic that lands on the specific page has a lower engagement rate than other pages in Google Analytics 4, it can mean one of three things: whether the traffic is low quality, the page they land doesn’t address why they land on it, or there is a problem with the GA4 code implementation.
The same aspect can be extrapolated across many dimensions in Google Analytics 4. Like pages, you can compare default or custom channel grouping, countries, regions, demographic audiences, and so on.

You can even go beyond that and compare custom audiences, see which one has a higher engagement rate and try to find events or patterns that determine it. If you can find a set of events that improve lifetime engagement time, it will also improve retention rate. Thus, it will boost your returning traffic and the overall amount of traffic as well.
Besides that, one of the analysis techniques is to compare your business metric to the metric standard in your niche, which is called benchmark.
What’s the benchmark for Engagement Rate?
Since Google Analytics 4 has existed for a few years, and many companies started to migrate to it in 2023, it can still be early to look at the benchmark of user engagement metrics in your niche.
However, some companies already presented their reports. For instance, according to firstpagesage.com, the average user engagement metric was
71% for B2C websites 63% for B2B websites
Of course, if you have an ecommerce website, you can’t compare it with an entertainment website (games, movies), and it’s much better to look at the engagement rate in your specific niche. Therefore, the firstpagesage.com also looked at the engagement rate in multiple niches: ecommerce, industrial IoT, engineering, entertainment and so on.

Apart from this company, Orbit Media conducted its own research and found that the average engagement rate was around 55%. However, the sample included only 65 websites.
Takeaways: User Engagement as a measure of relevance
Unlike Universal Analytics, Google Analytics 4 uses user engagement as the primary metric to detect whether your website or app content is relevant to the users.
If the user spends more than 10 seconds (by default) actively engaging with your website, visits at least two pages or makes at least one conversion, Google Analytics 4 will label a user’s session as engaged.
The high engagement rate means that your content is relevant to the search query or ad a user uses, while the low engagement rate helps you figure out which page or channel should be improved to meet users’ requirements better.
Besides comparing engagement rates between your pages, channels and other dimensions, you can also look at industry benchmarks to calibrate your metric and see how your business performs compared to competitors.
All in all, user engagement is one of the core metrics of Google Analytics 4, and it will be with us for years or decades.
If you found that this article didn’t answer your questions or have a question about something mentioned, please don’t hesitate to comment below.
Frequently Asked Questions
What is user engagement in Google Analytics 4?
User engagement measures the amount of time a user spends on your website or in your app actively engaging with your content.
The engagement rate is calculated as number of engaged session divided by number of total session. Engaged session is session in which users spends at least 10 seconds actively engaging with your content, or visits two pages, or makes at least one conversion.
User Engagement is measured using “engagement_time_msec” parameter, which is added to every next event (besides first_visit, pageview and session_start) and shows the total time spent actively engaging with the content after the previous event. After that, GA4 sums “engagement_time_msec” values of all events in the session, and it’s session engagement time.
It’s a special parameter that shows the engagement time a user spends on your website after the previous event was sent into Google Analytics 4. This parameter is not sent for page_view, first_visit and session_start events because there is no engagement time before them.
This parameter shows whether the session met the minimum threshold and was considered an engaged session or not. If it’s an engaged session, session_engaged will have “1” in event_params.value.string_value. If the session is not engaged, it will be equal “0”. Such events as session_start and first_visit usually don’t have “session_engaged” parameter.
This parameter includes the number of sessions the user is engaged in. The value usually equals 1, but the value can increase if a user visits your website or app from many devices or browsers and can be recognised as the same user, usually using the “user_id” parameter.