Free GTM form listeners

GTM form listeners that count real leads, not button clicks

Free, open-source Google Tag Manager listeners for Jotform, Gravity Forms, Elementor Pro, Contact Form 7, WPForms, GoHighLevel, Unbounce, SwipePages, Kartra and Squarespace, plus one Universal tag that covers nine of them. They fire on the confirmation a visitor actually sees, report failed submits, and hand clean email and phone data to Google Ads Enhanced Conversions and Meta CAPI.

11 listeners

MIT licensed

Source on GitHub

Updated October 2026

How every listener works

1. Watch for the real confirmation

Success class, confirmation render, verified iframe message or a referrer only the platform can set.

2. Capture and normalize the lead

Email, phone in E.164 and name, with optional SHA-256 hashing. Removed automatically when PII consent is denied.

3. Push one event with an ID

One success per lead, deduplicated for 5 minutes, with an event ID for Meta CAPI and the detection method for reporting.

Why these are different

Most listeners stop at a GA4 event. These are built for the ad platforms.

A typical listener recipe is a few lines that push one event when the platform says so. That is enough for a GA4 count. It breaks when the form redirects, and it gives Google Ads and Meta nothing to match a lead on.

Capability

Typical listener recipe

IyrexMedia listeners

Success detection

The platform’s JS event, or a button click

The confirmation the visitor sees, with the detection method recorded on every event

Redirect and thank-you forms

Often unsupported, or left to a page-view trigger

Thank-you recall, a pagehide fallback and, for Jotform, a verified submit referrer

Enhanced Conversions data

None, or raw values read from fixed field IDs

Email, phone and name classified and normalized, with optional SHA-256

Meta CAPI deduplication

Not included

ec_event_id on every event plus a 5-minute dedupe ledger

Consent

Not included

Consent Mode v2, OneTrust and Cookiebot detected. PII removed when consent is denied

Failed submissions

Rarely tracked

Failure events that only count after real input, so empty clicks are ignored

Debugging

GTM Preview only

A status() console API and an initialization heartbeat

Hashing, CAPI event IDs and dedupe are built into every listener, including the Universal v3.3.0 tag.

The library

Pick your form platform

Every listener is one GTM Custom HTML tag. Filter by platform type, open the one you need, then download the tag or read the source on GitHub.

Multi-platform

Universal GTM Form Tracker: One Tag for Nine Form Platforms

One GTM tag that detects the form platform on the page and tracks real confirmations for Gravity Forms, Elementor Pro, Contact Form 7, WPForms, GoHighLevel, Unbounce, SwipePages, Kartra and Squarespace.
9 platforms, One tag, CAPI dedupe, Container import
Embedded form builders

Jotform Listener for GTM: Track Redirecting Forms Without Thank-You Page Triggers

Tracks Jotform submissions in GTM even when the form redirects to a thank-you page, and never counts a refresh, back button or direct visit to that page.
Redirect-safe · EC-ready (source embeds) · CAPI dedupe · 88 tests
v3.3.0-jotform.1
WordPress forms

Gravity Forms Listener for GTM: GA4, Enhanced Conversions and Meta CAPI

Tracks real Gravity Forms submissions in GTM, including AJAX confirmations, postback pages and same-domain thank-you redirects, with hashed email and phone for Enhanced Conversions.
EC-ready · Redirect-safe · CAPI dedupe · Tracks failures
WordPress forms

Elementor Pro Form Listener for GTM: GA4, Enhanced Conversions and Meta CAPI

Tracks successful Elementor Pro form submissions, inline messages and redirects in GTM, with failure events and Enhanced Conversions data built in.
EC-ready · Redirect-safe · CAPI dedupe · Tracks failures
WordPress forms

Contact Form 7 Listener for GTM: GA4, Enhanced Conversions and Meta CAPI

Tracks real Contact Form 7 submissions in GTM from wpcf7mailsent, separates validation errors, spam blocks and mail failures, and passes clean email and phone to ad platforms.
EC-ready, Spam-aware, CAPI dedupe, Tracks failures
v3.3.0-cf7.1
WordPress forms

WPForms Listener for GTM: AJAX, Page Reload and Redirect Confirmations

Tracks WPForms submissions in GTM whether the form confirms by AJAX, reloads the page or redirects, with fields keyed by their labels and Enhanced Conversions data built in.
EC-ready, Redirect-safe, CAPI dedupe, Tracks failures
Funnel & CRM platforms

GoHighLevel Form Listener for GTM: Inline and Iframe Embeds

Tracks GoHighLevel (LeadConnector) inline and iframe form submissions in GTM, reading the verified lead message from cross-origin iframes and excluding calendar bookings.
EC-ready · Iframe-aware · CAPI dedupe · Tracks failures
Landing page builders

Unbounce Form Listener for GTM: GA4, Enhanced Conversions and Meta CAPI

Tracks Unbounce form submissions in GTM from the confirmation render or redirect, not the button click, with failure events and Enhanced Conversions data.
EC-ready · Redirect-safe · CAPI dedupe · Tracks failures
Landing page builders

SwipePages Form Listener for GTM: GA4, Enhanced Conversions and Meta CAPI

Tracks SwipePages form submissions in GTM from the native AMP success class, with Tatsu validation warnings reported as failures.
EC-ready · CAPI dedupe · Tracks failures
Funnel & CRM platforms

Kartra Opt-in Form Listener for GTM: GA4, Enhanced Conversions and Meta CAPI

Tracks Kartra opt-in form submissions in GTM from the confirmation, form replacement or redirect, with failure events and Enhanced Conversions data.
EC-ready · Redirect-safe · CAPI dedupe · Tracks failures
Website builders

Squarespace Form Listener for GTM: Track the Native Form Block

Tracks Squarespace native form block submissions in GTM from the form API's own success response, without relying on hashed class names, with Enhanced Conversions data built in.
EC-ready, Network-confirmed, CAPI dedupe, Tracks failures

New: Contact Form 7, WPForms and Squarespace listeners, and Universal v3.3.0 now covers nine platforms. Sign up for update alerts below to hear when a listener changes.

Install in about 10 minutes

The same four steps for every listener

1

Download the tag

Grab the GTM tag from the listener page, or copy it from the GitHub repository.

2

Paste it into GTM

Create a Custom HTML tag, paste the file in and trigger it on All Pages.

3

Trigger on success

Add a Custom Event trigger for the listener’s success event and attach your GA4, Google Ads and Meta tags.

4

Check it in Preview

Submit a real test, confirm one success event, then retire the old click or thank-you trigger.

Questions

Before you install

Still stuck after reading the listener page? Book an audit and we will check the setup with you.

A small script that runs in a Google Tag Manager Custom HTML tag, watches for a specific interaction (here, a successful form submission) and pushes an event into the dataLayer. GTM triggers then use that event to fire GA4, Google Ads, Meta or server-side tags.

Most modern form plugins submit with AJAX, iframes or JavaScript, so the built-in trigger often never sees the submit, or fires before validation has passed. A listener reads the platform’s own success signal instead.

Yes for most platforms. The listeners store the form data at submit and recall it on a same-domain thank-you page, and the Jotform listener checks that the visitor arrived from Jotform’s submit server. Each listener page lists exactly which redirect paths it covers.

Yes. The listeners capture email, phone and name, normalize them and can add SHA-256 hashes. Each event also carries ec_event_id, which you send as the event ID on both the browser and server Meta events so a lead is counted once. Keep raw PII out of GA4.

They detect Google Consent Mode v2, OneTrust and Cookiebot. With analytics consent denied nothing fires, and with PII consent denied events fire without contact data. Other consent tools can be connected with one function. If no consent tool is found they assume full consent, so check that matches your own requirements.

Both run the same v3 core, so hashing, dedupe and event IDs are the same. Use a single-platform listener when a site runs one form platform, because it is roughly half the size. Use the Universal tag when one site mixes Gravity Forms, Elementor Pro, Contact Form 7, WPForms, GoHighLevel, Unbounce, SwipePages, Kartra or Squarespace and you want one install. Never run both for the same platform on one page.

Yes. Every listener is MIT licensed, so you can use and modify it on your own and client sites. Keep the license notice in the file.

Each single-platform tag is a single script of roughly 38 to 47 KB uncompressed, and the Universal tag is about 83 KB. They run once per page, make no external requests and have no dependencies. Load only what the site needs.

Update alerts

Get told when a platform update breaks tracking

Form platforms change their markup without notice. Leave your email and we will tell you when a listener changes or a platform update affects tracking.

    Only used to tell you about listener updates and breaking platform changes. No spam, unsubscribe any time.

    Rather have it installed and verified?

    We install the listener, connect GA4, Google Ads Enhanced Conversions and Meta CAPI, and check the numbers against your CRM so every lead is counted once.