How-to
Track Scroll Depth, Outbound Clicks & Downloads with GTM
Pageviews tell you someone arrived; engagement events tell you whether they actually did anything.Scroll depth, outbound link clicks and file downloads are three of the easiest, highest-value engagement signals to add, and GTM has built-in triggers for all of them. Here's how to set each up cleanly.
Scroll depth tracking
Scroll depth shows how far down a page people actually read, invaluable for long content, landing pages and articles. GTM has a built-in Scroll Depth trigger, so no code needed.
- Enable the built-in Scroll Depth variables (Scroll Depth Threshold, etc.).
- Create a Scroll Depth trigger with vertical percentages
25, 50, 75, 100. - Fire a GA4 event (e.g.
scroll) with the threshold as a parameter.
Don't over-fire
Outbound link clicks
Outbound clicks (links to other sites, affiliate links, partner sites) show where you're sending traffic. Use the built-in Just Links click trigger with a condition on the link URL.
- Enable the built-in Click variables (Click URL, etc.).
- Create a Just Links trigger that fires when
Click URLdoes not contain your own domain. - Fire a GA4 event (
clickwithoutbound: true) and pass the Click URL. - Tick Wait for Tags so the hit sends before the browser navigates away.
File downloads
Same mechanism, different condition. Fire a Just Links trigger when the Click URL ends in a file extension you care about (pdf, zip, xlsx), and send a GA4 file_download event with the file URL.
Practice this on a real container
Scroll, outbound and download tracking all lean on GTM's built-in triggers and click variables. Practice them on a live page so the conditions and the 'wait for tags' timing click into place.
Practice engagement triggers →Gotchas
- Navigation races the hit. For outbound clicks and downloads, use Wait for Tags (and rely on GA4's sendBeacon) so the event isn't cancelled.
- Subdomains. Make your "own domain" condition account for subdomains so internal links aren't logged as outbound.
- GA4 already has some of this. Enhanced Measurement covers scroll (90%), outbound clicks and file downloads automatically, check what you already get before duplicating it.
Worth knowing
Now go practice it
Reading sticks when you do it. These hands-on lessons load your own GTM container and let you debug in Tag Assistant.
Frequently asked questions
How do I track scroll depth in Google Tag Manager?
Enable the built-in Scroll Depth variables, create a Scroll Depth trigger with vertical thresholds of 25, 50, 75 and 100 percent, and fire a GA4 event with the threshold as a parameter. Four thresholds per page is plenty, tracking every 10% floods GA4 with low-value events.
How do I track outbound link clicks in GTM?
Enable the built-in Click variables, create a Just Links trigger that fires when Click URL does not contain your own domain, and fire a GA4 event passing the Click URL. Tick Wait for Tags so the hit sends before the browser navigates away, and account for subdomains so internal links aren't logged as outbound.
How do I track file downloads with GTM?
Use a Just Links trigger that fires when the Click URL ends in a file extension you care about (pdf, zip, xlsx, etc.), then send a GA4 file_download event with the file URL. Use Wait for Tags so the download navigation doesn't cancel the hit.
Does GA4 already track scroll and outbound clicks?
Yes. GA4's Enhanced Measurement automatically collects a 90% scroll event, outbound clicks and file downloads with no GTM setup. Build custom versions in GTM only when you need different scroll thresholds, extra parameters, or more control than the automatic events provide.
Related posts
How-to
How to Set Up Google Tag Manager on Shopify (Storefront + Checkout)
Shopify GTM is two jobs, not one: the storefront installs normally, but the sandboxed checkout needs a custom pixel. The full storefront + checkout setup, GA4 mapping and testing.
Read →How-to
How to Track Form Submissions in Google Tag Manager (Without Losing Conversions)
Form submissions are leads, and the easiest tracking to get wrong. Three reliable methods, plus the redirect gotcha that silently loses conversions and how to beat it.
Read →How-to
How to Set Up GA4 Ecommerce Tracking with Google Tag Manager
GA4 ecommerce is one pattern repeated across a few events. Walk the full funnel in GTM (from the base tag to a deduplicated purchase with revenue) with copy-paste dataLayer examples.
Read →About the author

Analytics & Tag Management Consultant
Nathan Gage got his start in marketing through Google Tag Manager. Seeing how tracking customer behavior could turn raw clicks into insight you can actually act on is what pulled him into the field. Since then he has worked both full time and as a consultant with 15 marketing agencies, supporting brands that spend anywhere from a thousand dollars a month to over a million. Along the way he built a multi-touch attribution app, and he created The Happy Tagger so anyone can practice GTM, GA4 and server-side tracking on a real container instead of a production site.