If you run lead-gen, your most important conversion is a form submit. Here's how to track it in GTM and - the part most people miss - how to make sure the lead actually reaches every ad platform.
For a lead-gen business, the "purchase" is a form submit, a phone call or an email - and it's tracked far more sloppily than e-commerce checkouts. The pattern is almost always the same: GA4 sees some leads, Google Ads sees fewer, Meta sees none, and nobody notices because the form still says "thank you". This guide covers how to track leads in Google Tag Manager end to end, and - the part most setups skip - how to verify the lead actually reached every platform.
This is where most lead tracking fails. GTM's built-in Form Submission trigger only works for classic HTML forms that fire a native submit event. Modern forms usually don't:
The reliable approach: push a custom event to the dataLayer on success, and trigger GTM on that. Ask your developer (or the form tool's callback) to add:
Then in GTM create a Custom Event trigger matching lead_submit. This fires only on genuine success, not on validation errors or attempts.
One trigger, three tags - one per active platform. Send each with meaningful parameters:
On many lead-gen sites half the enquiries never touch a form. Phone (tel:) and email (mailto:) clicks, and WhatsApp links, are real leads. Add GTM Click - Just Links triggers matching tel: and mailto:, and fire the same lead conversions. Otherwise you're blind to a huge share of your pipeline and under-crediting the campaigns that drive calls.
Setting it up is not the same as it working. Do a real end-to-end test:
Submit the form and confirm lead_submit appears and all three tags fire once (not zero, not twice).
In DevTools → Network, check the GA4 (/g/collect), Meta (/tr/) and Google Ads (/pagead/conversion) requests each go out with the right parameters.
Look for the lead in GA4 DebugView, Meta Events Manager (Test Events) and Google Ads conversion diagnostics. If it's not in all three, one path is broken.
duckmetric automates this: it detects the form, checks whether a submit triggers an event, and shows which platforms actually receive the lead and with what data - so you catch the missing Meta Lead before you spend on it.
Most likely the form is JavaScript or iframe-based (HubSpot, an SPA, an AJAX form) and never fires the native submit event GTM's Form Submission trigger listens for. Push a custom lead_submit dataLayer event on success and trigger on that instead.
Use one trigger (the custom success event) and three tags - a GA4 generate_lead, a Google Ads conversion, and a Meta Lead event - so a single submit fires all three. Then verify each independently.
Yes, for most lead-gen sites they're a large share of enquiries. Add GTM link-click triggers for tel: and mailto: and fire the same conversions, or you'll under-count leads and mis-credit campaigns.
Test end to end: GTM Preview to see the tags fire, DevTools Network to confirm the requests go out, and each platform's debug view (GA4 DebugView, Meta Test Events, Google Ads diagnostics) to confirm it arrived.
Related: how to check GTM tracking · funnel coverage · Google Ads conversion tracking
Paste your contact page and see whether form submits fire a lead on every platform.