How to Track Scroll Depth, Video Views, and Engagement in GTM | Adslytics

Google Tag Manager Setup & Audit How-To

How to Track Scroll Depth, Video Views, and Engagement in GTM

By Muhammad Farooq · January 18, 2026 · 7 min read
How to Track Scroll Depth, Video Views, and Engagement in GTM

Pageviews tell you a visitor arrived. Engagement events tell you what they actually did. Scroll depth, video interactions, and time-on-page signals are the difference between knowing someone opened your blog post and knowing they read it. GTM makes all of this trackable with minimal developer involvement — here's how.

Tracking Scroll Depth

GTM includes a native Scroll Depth trigger type that fires at defined scroll thresholds. You don't need custom JavaScript for basic scroll tracking.

Setting Up the Scroll Depth Trigger

  1. Go to Triggers → New → Scroll Depth
  2. Choose Vertical Scroll Depths
  3. Select Percentages and enter: 25,50,75,90
  4. Set it to fire on All Pages (or restrict to specific pages using Page Path conditions)

Enable the built-in variable Scroll Depth Threshold under Variables → Configure. This variable returns the percentage value (25, 50, 75, 90) that was just reached, letting you use it as an event parameter.

Attaching a GA4 Tag

Create a GA4 Event tag with:

  • Event name: scroll (GA4's recommended naming) or scroll_depth
  • Parameter: percent_scrolled{{Scroll Depth Threshold}}

In GA4, you can then build an Exploration filtering on percent_scrolled = 90 to see what percentage of your blog readers actually reach the bottom — a clean proxy for content quality.

Percentage vs Pixels

Use Percentages for most content. Use Pixels when you care about a specific viewport landmark — for example, firing when the user has scrolled past your pricing section at a known pixel offset. Pixel thresholds break when your page layout changes, so they require more maintenance.

Tracking YouTube Video Views

GTM's YouTube Video trigger works automatically on any embedded YouTube iframe on your page — no code required, as long as you enable the JavaScript API on the iframe.

Enable the YouTube API

In your YouTube embed URL, add ?enablejsapi=1: https://www.youtube.com/embed/VIDEO_ID?enablejsapi=1 If you manage the site via CMS, check whether there's a plugin or setting to enable this globally.

Configure the YouTube Trigger

  1. Go to Triggers → New → YouTube Video
  2. Enable the events you want to capture: Start, Complete, Pause and percentage thresholds (25, 50, 75)
  3. Check Add JavaScript API support to all YouTube videos — GTM will inject the API parameter automatically

Enable the built-in YouTube variables: Video Provider, Video Status, Video URL, Video Title, Video Duration, Video Current Time, Video Percent.

GA4 Tag for Video

Create a GA4 Event tag:

  • Event name: video_{{Video Status}} — this produces events like video_start, video_complete, video_pause
  • Parameters: video_title, video_url, video_percent, video_duration

Tracking Form Engagement

Beyond form submissions, you can track form field interactions — when someone focuses on a field, how many fields they complete before abandoning. This level of insight is particularly valuable for long lead-gen forms.

Form Focus Events

Create a Click – All Elements trigger that fires on form fields:

  • Click Element matches CSS selector input, textarea, select

Pair this with an event parameter using {{Click Element}} to capture which field was focused. You can then see in GA4 which form field has the highest abandonment rate — where users start filling out and then leave.

Tracking Time on Page

GTM's Timer trigger fires JavaScript setInterval events at defined intervals. Use it to track active reading time:

  1. Go to Triggers → New → Timer
  2. Set Interval to 30000 (30 seconds)
  3. Set Limit to 4 (fires four times — at 30s, 60s, 90s, 120s)
  4. Restrict to pages where time-on-page matters (e.g. Page Path contains /blog/)

Create a variable that returns the cumulative elapsed time and use it as an event parameter. This gives you a time-engaged metric that is far more meaningful than GA4's default session duration, which includes time with the tab in the background.

Tracking Element Visibility

The Element Visibility trigger fires when a specified element enters the viewport. Use it to track whether users see key page elements — a pricing table, a testimonial block, a lead magnet CTA:

  1. Select the element using a CSS selector: #pricing-table
  2. Set the minimum visible ratio to 50%
  3. Choose whether to fire once per page or once per element

This answers questions like: "Of all users who visit our pricing page, what percentage actually scroll down to see the pricing table?"

Putting It Together: An Engagement Score

Once you have scroll depth, video interactions, and time-on-page events flowing into GA4, you can build a calculated metric or audience that acts as a content engagement score. Users who scrolled past 75%, watched a video to completion, and spent more than 90 seconds are your most engaged visitors — worth targeting with remarketing or lead-generation CTAs.

Conclusion

GTM's built-in Scroll Depth, YouTube Video, Timer, and Element Visibility triggers make engagement tracking accessible without custom code. The key is choosing the right triggers for your goals, enabling the right variables, and passing meaningful parameters to GA4 so the data is actually useful in analysis.

Adslytics specialises in building comprehensive engagement measurement frameworks that go beyond pageviews. Talk to us about designing the right measurement plan for your site.

Need expert tracking setup?

Our Google Tag Manager experts have delivered 500+ tracking setups with a 98% success rate.

Get a Free Consultation →
← Back to Blog
Muhammad Farooq

Author

Muhammad Farooq GTM & Analytics Expert · Adslytics Founder

Tracking specialist with 10+ years of experience in Google Tag Manager, GA4, Server-Side Tracking, and Google Ads. Founder of Adslytics — a dedicated analytics agency with a 98% success rate across 232+ projects on Upwork.

Top Rated Plus LinkedIn Visit the author's profile →