Skip to content

Guide 115 · Container · GA4 + Tag Manager

Build a timer trigger: fire a tag on a schedule, not on a click

Checked 11 November 2026 · Verification: container fragment validated structurally (12 checks, all passed) · Steps traced to Tag Manager Help, opened 11 November 2026 · 5-minute read

Some behaviour is measured by time, not by clicks: how long a reader stays, whether a video is still playing after a minute, whether a form is still open after five. A timer trigger fires on a schedule you set — an interval in milliseconds, and a limit on how many times it fires. Google's trigger page lists the Timer trigger; the interval and the limit are its only two settings. The worked example fires every 30 seconds, 10 times, which covers 5 minutes of a session.

Expected signal

After step 4, Preview mode shows the tag under Tags Fired on the gtm.timer event — once every 30 seconds, 10 times in all, then never again for that page load.

Download the container fragment: the timer trigger fragment (JSON) (export format version 2, 1197 bytes, MD5 f61eb98b32b556498781cea8b3dd55a1). It holds the timer trigger with a 30,000-millisecond interval and a limit of 10 firings, and a GA4 event tag that fires on it. The file is a hand-built import template, validated structurally — it was not exported from a live container.

What you need

  • An interval in milliseconds. The worked example uses 30,000 milliseconds — 30 seconds. The trigger counts in milliseconds, so a 30-second interval is written as 30000, not 30.
  • A limit on firings. The worked example uses 10. Without a limit, the trigger fires for as long as the page stays open.
  • Edit access to the container. Creating a trigger is a container edit.

The trace

  1. Go to Triggers and click New. Triggers live in their own list in the left navigation. Click New and name the trigger Timer - 30 seconds x 10 — the name carries both settings, so nobody has to open it to know them.
  2. Click Trigger Configuration and choose Timer. The configuration shows the interval and the limit. The event name is fixed: the trigger pushes a gtm.timer event to the data layer each time it fires.
  3. Set the interval to 30000 and the limit to 10. The interval is in milliseconds: 30,000 is 30 seconds. The limit is a count: 10 firings. The arithmetic of the worked example is 30,000 × 10 = 300,000 milliseconds, which is 300,000 ÷ 1,000 = 300 seconds, which is 300 ÷ 60 = 5 minutes of measurement per page load.
  4. Attach the trigger to the tag and save both. Open the GA4 event tag, click Triggering, pick the new trigger, and save. In Preview mode the tag fires at 30 seconds, 60 seconds, 90 seconds, and so on up to the tenth firing at 300 seconds — then it stops, even if the page stays open for an hour.

Dead ends

DEAD END — SECONDS TYPED AS MILLISECONDS. The interval is milliseconds. Typing 30 for a 30-second interval sets a 30-millisecond interval, and the trigger fires 10 times in less than a second. Multiply the seconds by 1,000 first: 30 seconds is 30000.

DEAD END — NO LIMIT ON A LONG PAGE SESSION. Without a limit, the trigger fires every interval for as long as the page stays open. A reader who leaves a tab open for a day fires the tag thousands of times. Set a limit that matches the question you are asking.

DEAD END — A TIMER FOR SOMETHING A TRIGGER ALREADY MEASURES. Time on page is not the same as engagement. A timer that fires every 30 seconds also fires while the reader is on another tab. If the question is whether the reader scrolled, the scroll depth trigger answers it — that is the scroll depth guide.

End state

One timer trigger, Timer - 30 seconds x 10, firing 10 times over 5 minutes, attached to one GA4 event tag. The tag now reports how long the page stayed open in 30-second steps.

Sources

Checked 11 November 2026. The click paths above are the ones in Google's help pages, opened 11 November 2026. No step in this guide was run inside a live Analytics property or a live Tag Manager container, because both need a Google sign-in and this site does not sign in as anyone. The container file was validated structurally instead: export format version 2, every tag's firing trigger resolves, every variable the tags reference exists in the file, and the tag types are the documented ones. Google moves menu items without warning; if a path on this page no longer matches, the linked help page is the current map. The container fragment for this guide is 1197 bytes (1.17 KB, 0.58% of the reported 200 KB container size limit), MD5 f61eb98b32b556498781cea8b3dd55a1, and passed 12 structural checks.