How-to

Track Scroll Depth, Outbound Clicks & Downloads with GTM

Track Scroll Depth, Outbound Clicks & Downloads with GTMscroll deptharticle25%50%75%100%outbound clickpartner-site.comfile downloadguide.pdf ↓

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.

  1. Enable the built-in Scroll Depth variables (Scroll Depth Threshold, etc.).
  2. Create a Scroll Depth trigger with vertical percentages 25, 50, 75, 100.
  3. Fire a GA4 event (e.g. scroll) with the threshold as a parameter.

Don't over-fire

Four thresholds per page is plenty. Tracking every 10% floods GA4 with low-value events and can hurt your data quality more than it helps.

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.

  1. Enable the built-in Click variables (Click URL, etc.).
  2. Create a Just Links trigger that fires when Click URL does not contain your own domain.
  3. Fire a GA4 event (click with outbound: true) and pass the Click URL.
  4. 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

GA4's Enhanced Measurement auto-collects a 90% scroll, outbound clicks and file downloads with no GTM work. Build custom versions in GTM when you need different thresholds, extra parameters, or more control than the automatic events give you.

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

About the author

Nathan Gage
Nathan Gage

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.