Google Tag Manager event tracking works by pairing a trigger (a click, a form submission or a custom dataLayer event) with a tag that sends the event to GA4 or Google Ads. For most business sites, click triggers filtered by link or CSS selector and dataLayer events for forms cover nearly everything. Google’s new no-code visual tagging is still a beta for Google Ads purchase conversions only, as of October 2026.

What You Need Before You Start

Event tracking sits on top of a working base install. Check these first.

  • GTM installed on every page, with the container published (see our Google Tag Manager setup guide).
  • A Google tag for GA4 in the container with your G-XXXXXXX ID (covered in setting up GA4 with GTM).
  • Edit and publish access to the container.
  • A short list of the actions that matter: calls, form leads, bookings, WhatsApp taps, key buttons.
  • Access to the site’s developer or form plugin settings if you want dataLayer events.

Google’s August 2026 update redesigned the container Overview. Triggers, Variables, Templates and Folders now sit in a collapsible Advanced section, but they work the same way.

Choose by what the visitor interacts with. Google’s click trigger guide says Just Links tracks only HTML link elements, while All Elements tracks clicks on any element, including buttons and images.

ActionBest triggerWhy
Phone, email, WhatsApp linksClick – Just LinksThey are links with a tel:, mailto: or WhatsApp URL
Button that isn’t a linkClick – All ElementsButtons aren’t link elements
Form that reloads to a thank-you pagePage view on the thank-you URLSimple and reliable
Form that stays on the pageCustom eventFires only on real success
Booking or checkout widgetCustom eventVendor or developer pushes it
Section seen on screenElement visibilityTracks views, not clicks

Two options on Just Links are worth knowing. Wait for Tags holds the click until tags fire or a timeout passes, and Check Validation fires only for clicks that count as valid. Google notes both apply to Just Links only.

How Do You Track a Button Click in GTM Without Writing JavaScript?

Turn on the built-in Click variables, create a click trigger limited to the right element, and attach a GA4 Event tag. No code is needed for most links and buttons.

Step 1: Enable the Click Variables

In the Variables area, make sure Click Element, Click Classes, Click ID, Click URL and Click Text are enabled. Google’s built-in variables guide lists these as the values click triggers fill in.

Step 2: Create a Filtered Click Trigger

Create a click trigger, set it to Some Clicks, and add one condition that matches only your element. Google recommends this over firing on all clicks for performance reasons too. For a phone link:

Trigger name: Phone Click
Type: Click - Just Links
Fires on: Some Link Clicks
Condition: Click URL starts with tel:

Step 3: Add the GA4 Event Tag

Create a GA4 Event tag named by platform and event, such as “GA4 – Phone Click – Tag”, with event name phone_click and the Phone Click trigger. Keep one tag per event so each one is easy to find and test.

Step 4: Preview and Publish

Open Preview, click the link on the site, and check that the tag fired on the Click event and the Click URL value is right. Then publish with a clear version name.

Examples by business type: a plumbing company tracks tel: clicks from the header, a dental clinic tracks the “Book online” button, and a B2B software firm tracks “Request a demo” clicks that open a scheduler.

Should You Use Click Classes or a CSS Selector?

Use a CSS selector when you can. Click Classes reads the class attribute of the exact element clicked, which often breaks when a visitor taps the icon or text inside a button instead of the button itself.

A selector condition can match the button and anything inside it, so taps on child elements still count:

Condition: Click Element matches CSS selector
a[href^="tel:"], a[href^="tel:"] *
MethodGood forWatch out for
Click TextQuick testsBreaks when copy changes
Click ClassesUnique classesChild elements, shared classes
Click IDElements with stable IDsBuilders that generate IDs
CSS selectorMost real sitesNeeds a stable attribute

If the same class is used on buttons across many pages, add a second condition such as Page Path, or ask the developer for a dedicated attribute like data-track=”quote”. That attribute survives redesigns better than styling classes.

How Do You Track a Form Without a Thank-You Page?

Ask the form to push a dataLayer event when it submits successfully, then fire your tag on a custom event trigger. Google’s custom event guide uses exactly this case: forms that override the browser’s normal submit.

The built-in Form Submission trigger listens for the browser’s submit event. Many AJAX forms, popups and page builders never send it, or send it before validation. Its Check Validation option helps, but a success event from the form itself is more reliable.

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'generate_lead',
form_name: 'quote_request'
});
  1. Add the push to the form’s success callback or the plugin’s “after submit” hook, not the button click.
  2. Create a Custom Event trigger named “Generate Lead” with event name generate_lead.
  3. Create a Data Layer Variable for form_name and send it as a parameter in “GA4 – Generate Lead – Tag”.
  4. Test a real submission, then a failed one (missing required field), and confirm only the success fires.

Google warns that regex matching with .* in a custom event trigger fires on every event, including Tag Manager’s own. Use exact names or a narrow pattern.

For the GA4 reporting side of lead forms, our guide on tracking form submissions and button clicks in GA4 goes deeper on key events and reports.

How Do You Track Phone, Email, Booking and WhatsApp Clicks?

Most of these are links, so one Just Links trigger per action with a Click URL condition does the job. Keep each action as its own event so you can compare them.

ActionClick URL conditionGA4 event
Phone tapstarts with tel:phone_click
Email clickstarts with mailto:email_click
WhatsApp tapmatches RegEx wa\.me|api\.whatsapp\.comwhatsapp_click
Booking linkcontains your booking domainbooking_click

A tap on a phone link shows intent, not a completed call. If calls drive your revenue, pair click tracking with call tracking; see tracking phone calls in GA4 and Google Ads.

How Do You Track Clicks Inside Iframes Like Calendly, YouTube or Typeform?

Your GTM container can’t see clicks inside an iframe served from another domain, because the browser keeps that content separate from your page. Use the event the embedded tool exposes instead.

  • YouTube: GTM’s YouTube video trigger handles supported embeds.
  • Booking and form tools: many send a browser message when a booking or submission completes; a developer can listen for it and push a dataLayer event.
  • Tools with their own GA4 or Google Ads integration: use it, but don’t also track the same action in GTM.
  • If none of these exist, track the click that opens the widget and treat it as a soft signal.

What Can Google’s No-Code Visual Tagging Do in 2026?

Visual tagging lets you set up tracking by selecting elements on your own site while Google handles the selectors and triggers. As of October 2026, Google describes it as a beta for Google Ads purchase conversions only, with more use cases planned later in the year.

According to Google’s visual tagging guide, you start it from the Conversions Summary using Troubleshoot, then follow a three-step side panel on your site:

  1. Place a test order and confirm you’ve reached the order confirmation page.
  2. Point to the order values on the page: transaction ID, order subtotal, currency and customer details, or ignore the ones you don’t need.
  3. Publish the changes, which creates the tags, triggers and variables in your container.

You need a Google Ads account with a conversion action, a sitewide Google tag, edit access to the container and a card to place a real test order. Google also warns that if a purchase conversion already exists, continuing can double-count. For lead forms, phone clicks and buttons, the manual methods above are still the way to go.

If you run Google Ads, our Google Ads conversion tracking setup with GTM covers purchase and lead conversions the manual way.

How Do You Test New Events Before You Trust Them?

Check each event in three places: GTM Preview, GA4 DebugView, and GA4 reports a day later. Only then mark it as a key event or import it into Google Ads.

  1. In Preview, perform the action and confirm the right tag fired once, on the right event.
  2. Check the variable values (Click URL, form_name) in the event details.
  3. Open GA4 DebugView and confirm the event and its parameters arrive.
  4. Test on a phone as well as desktop, since taps can behave differently.
  5. Publish with a version name that says what changed.

Troubleshooting GTM Event Tracking

ProblemLikely causeFix
Click trigger never firesCondition too strict, or wrong trigger typeCheck Click variables in Preview; loosen the condition
Fires on icon, not on button text (or vice versa)Click Classes or Click Text on a child elementUse a CSS selector with a child match
Fires several times per tapOverlapping triggers or nested elementsUse one trigger; match the outer element only
Form trigger never firesForm doesn’t send a browser submit eventPush a dataLayer success event
Lead counted on failed submitsTrigger on button clickFire on success only
Event in Preview, not in GA4Wrong G- ID, consent, or tag pausedCheck the Google tag and consent state
Clicks in a widget not seenCross-domain iframeUse the tool’s own event or integration

For deeper debugging steps, see Google Tag Manager not working: how to test and fix tags.

When Should You Get Help With Event Tracking?

Get help when leads in GA4 don’t match your inbox or CRM, when tags fire on every click, or when Google Ads bids on events you no longer trust. Our Tracking & Analytics service audits and rebuilds GTM event tracking month-to-month with no lock-in, starting with a free audit.