GTM Trigger Types Explained: When to Use Each One | Adslytics

Google Tag Manager Setup & Audit Ultimate Guide

GTM Trigger Types Explained: When to Use Each One

By Muhammad Farooq · January 19, 2026 · 8 min read
GTM Trigger Types Explained: When to Use Each One

Triggers are the heartbeat of Google Tag Manager. They determine when your tags fire — without a trigger, a tag does nothing. GTM offers over a dozen trigger types, each designed for a specific category of user action or page event. Understanding when to use each one — and when not to — is the difference between a clean, reliable container and a chaotic one that fires tags at random.

Page View Triggers

These are the most common triggers and the ones you'll use on almost every implementation.

Page View

Fires as soon as the browser begins loading a new page — before the DOM is fully constructed. Use this for tags that need to load as early as possible, like consent management platform signals or configuration tags. Avoid using it for tags that need to read DOM elements, since the page may not be fully rendered yet.

DOM Ready

Fires when the HTML document has fully parsed and the DOM is available, but before all external resources (images, stylesheets) have loaded. Use this for tags that need to read from the DOM — product details, page metadata, form field values — but don't need the full visual render to be complete.

Window Loaded

Fires after the entire page — including all images and external resources — has finished loading. Use this for non-critical tags where you're happy to wait until the page is fully ready. It's the safest trigger for tags that read complex DOM structures or third-party embedded content.

Click Triggers

All Elements

Fires on a click on any element in the page — buttons, divs, images, spans, and links. Use this for non-link click tracking: CTA buttons (<button> tags), accordion headers, modal openers. Always add conditions to restrict it; without conditions, it fires on every click on the page.

Just Links

Fires only on clicks on <a> anchor elements. It has a built-in option to wait for tags to fire before navigating away — critical when you're tracking outbound link clicks and the navigation would otherwise abort the tag before it completes. Use this for outbound links, navigation menu clicks, and CTA links.

Form Triggers

Form Submission

Fires when a form's submit event is triggered — either by a submit button click or by JavaScript calling form.submit(). The trigger fires before the form data is sent, so you can use it to capture form field values. Add a Check Validation option to only fire when the form passes HTML5 validation, avoiding events on form submission attempts with empty required fields.

Limitation: many modern forms (React, Vue, custom AJAX forms) handle submission without triggering the native submit event. For those, you need a Custom Event trigger tied to a developer-pushed data layer event.

Engagement Triggers

YouTube Video

Fires on YouTube iframe interactions: video start, pause, complete, and percentage milestones. Requires the YouTube JS API to be enabled on the iframe. Use this for any site with embedded YouTube content where you want to measure video engagement.

Scroll Depth

Fires when a user scrolls to defined percentage or pixel thresholds. Use percentage-based thresholds for content pages (blogs, landing pages) and pixel-based thresholds for specific page landmarks. Restrict to the page types where scroll depth is meaningful — firing scroll events on your homepage and checkout page generates noise without insight.

Element Visibility

Fires when a specified CSS selector enters the user's viewport. More powerful than scroll depth for specific elements — it tells you whether a particular section was actually seen, regardless of scroll position. Use for tracking whether users see key conversion elements like pricing tables, lead magnets, or testimonial sections.

Timer

Fires at specified millisecond intervals, optionally limited to a set number of times. Use for time-on-page tracking (fire every 30 seconds, limit to 4 times) and for polling scenarios where you need to check whether an element exists before firing a tag. Be careful not to create timers that fire indefinitely — always set a limit.

Other Trigger Types

Custom Event

Fires when a specific event name is pushed to the data layer via dataLayer.push({event: 'your_event_name'}). This is the most flexible and most reliable trigger type for custom implementations. If your development team pushes structured data layer events for key user actions (add to cart, checkout step, lead form submit), Custom Event triggers are how you capture them in GTM. Always prefer this over DOM scraping when developers are available.

History Change

Fires when the browser's URL history changes without a full page load — exactly what happens on Single Page Applications (SPAs) built with React, Vue, or Angular. Without a History Change trigger, GTM only fires its Page View trigger on the initial hard load, missing all subsequent virtual pageviews. This trigger is essential for accurate analytics on any SPA.

JavaScript Error

Fires when an uncaught JavaScript error occurs on the page. Use this to send error events to GA4 with parameters like the error message and script URL. Building a GA4 report on this data lets you monitor front-end error rates across your site and spot regressions after deployments.

Trigger Priority and Blocking

GTM allows you to set trigger priority (higher numbers fire first) and to create Exception triggers that block a tag from firing under specific conditions. For example, fire a purchase event tag on all pages where the purchase confirmation event fires, but block it on the order confirmation page during admin test orders.

Choosing the Right Trigger

A quick decision framework:

  • Tracking a link click → Just Links
  • Tracking a button click → All Elements with CSS selector condition
  • Tracking a form submission → Form Submission or Custom Event for AJAX forms
  • Tracking page content engagement → Scroll Depth or Element Visibility
  • Tracking video → YouTube Video
  • Tracking SPA virtual pages → History Change
  • Tracking developer-defined events → Custom Event
  • Tracking time on page → Timer

Conclusion

Choosing the right trigger type isn't just a technical detail — it determines the accuracy, reliability, and performance of your entire tracking setup. Using the wrong trigger (like Form Submission for an AJAX form) means silently missing events without any obvious error to debug.

If your GTM setup needs a full review to ensure triggers are correctly matched to their use cases, Adslytics offers comprehensive GTM audits. Get in touch to find out what's firing correctly and what isn't.

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 →