Fire GTM Tags Once Per Page, Session, or User | Adslytics | Adslytics

Google Tag Manager Setup & Audit How-To Guide

How to Fire GTM Tags Only Once Per Page, Session, or User

By Muhammad Farooq · January 26, 2026 · 6 min read
How to Fire GTM Tags Only Once Per Page, Session, or User

The Problem with Repeated Firing

Some Google Tag Manager tags should fire only once regardless of how many times the trigger condition is met. A "welcome back" user identification event should fire once per session. A video view event should fire once per video, even if the user replays it five times. A scroll depth event should fire once when the user first reaches 75% depth — not every time they scroll past that point.

GTM provides several mechanisms to control firing frequency.

Method 1: Built-In Tag Firing Limits

In the tag configuration panel, under "Advanced Settings" then "Tag Firing Options":

  • Unlimited: fires every time the trigger condition is met (default)
  • Once per event: fires once per trigger event (relevant for custom events with the same name fired multiple times)
  • Once per page: fires at most once per page load, regardless of how many times the trigger condition is met

"Once per page" is the simplest solution for tags that should fire once per page load — for example, a "page deeply engaged" event that should fire once when a user reaches 75% scroll depth, not again if they scroll back up and down.

Method 2: Cookie-Based Deduplication (Once Per Session)

To fire a tag at most once per browser session:

  1. Create a tag that sets a first-party cookie with a session lifespan (e.g. cookie name "gtm_event_fired", value "1", session duration)
  2. Create a GTM Cookie variable that reads this cookie
  3. Add a trigger exception to your event tag: "Cookie Variable does not equal 1"
  4. Set the cookie-setting tag to fire immediately before the event tag (using Tag Sequencing)

This way: first visit in the session → cookie not set → event fires → cookie is set. Second visit in same session → cookie is "1" → exception blocks the event tag from firing.

Method 3: Data Layer State Variable (Once Per Visitor)

To fire a tag at most once per user across sessions (persistent), use a JavaScript variable that persists in localStorage:

// Custom JavaScript Variable: "Has Seen Content"
function() {
  if (localStorage.getItem('seen_content_x') === '1') return true;
  localStorage.setItem('seen_content_x', '1');
  return false;
}

Add a trigger exception to your tag: "Has Seen Content Variable equals true". The variable returns false on first visit (fires the tag and writes to localStorage), then returns true on all subsequent visits (blocks the tag).

Method 4: Session Storage for Per-Tab Control

For once-per-tab-session (not shared across tabs), use sessionStorage instead of localStorage. The same Custom JavaScript Variable approach works — just replace localStorage with sessionStorage.

Common Use Cases

  • Newsletter signup prompt impression — fire once per session, not every page
  • Video view event — once per video ID, not per replay
  • First-time visitor welcome event — once per user (localStorage)
  • Engagement threshold event (scroll 75%) — once per page
  • Exit intent trigger — once per session, not every time the mouse moves to the top of the browser

Summary

GTM's built-in "Once per page" firing limit solves the most common case. For per-session control, use a session cookie with a trigger exception. For per-user control, use localStorage. Choose the right scope for your use case — overusing "once per user" means important events stop firing for returning visitors.

See our Google Tag Manager Setup and Audit service for advanced tag control configuration.

Need help configuring precise tag firing behaviour? Contact Adslytics.

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 →