Broken lead tracking is one of the most common problems I find when I audit a WordPress site. The ads run, the forms work, but Google can’t see which clicks became enquiries. Here’s how to set it up properly.
Why it matters
- Google Ads optimises on conversions. If it can’t see leads, it optimises for clicks, which are cheap and often useless.
- You can see which pages, keywords and campaigns actually bring enquiries, not just traffic.
- You can calculate cost per lead and decide where to spend.
Step 1: Decide what counts as a lead
Usually it’s a successful submission of your contact, quote or booking form. Clicks on a phone number or WhatsApp button can be tracked too, but keep them as separate events so you can tell them apart.
Step 2: Fire the event on success, not on click
The most common mistake is tracking clicks on the submit button. That counts failed submissions, validation errors and double clicks. Use one of these instead:
- A thank you page: redirect after submission and fire the event when that page loads. It’s the simplest and most reliable option. See why every lead form needs a thank you page.
- The form plugin’s success event: most form plugins (Elementor Forms, Gravity Forms, WPForms, Contact Form 7, Fluent Forms) trigger a JavaScript event on successful submission that Google Tag Manager can listen for.
- A built-in integration: some form plugins and Site Kit can send events to GA4 directly.
Step 3: Set it up in GA4
- Send the event as
generate_leadthrough Google Tag Manager or your plugin. You can add parameters such as the form name. - Submit a test lead and check it appears in GA4 under Admin, DebugView or the Realtime report.
- Go to Admin, Events (or Key events) and mark
generate_leadas a key event. GA4 renamed “conversions” to “key events” in 2024.
Step 4: Get it into Google Ads
There are two common ways:
- Import from GA4: link GA4 and Google Ads, then import the key event as a conversion. Easy, and it keeps one source of truth. Data can take a little longer to appear.
- Google Ads conversion tag: create a lead conversion action in Google Ads and fire it with the Google tag or Tag Manager on the same success trigger. This is usually more precise for bidding.
Pick one as the primary conversion for bidding so the same lead isn’t counted twice.
Step 5: Turn on enhanced conversions for leads
Enhanced conversions send a hashed version of the email or phone number from the form with the conversion. It helps Google match more leads to ad clicks, especially when cookies are blocked, and lets you upload offline results later, such as which leads became paying customers.
Step 6: Respect consent
If you have visitors in the UK or EU, use a consent banner that supports Google Consent Mode, so tags behave correctly based on each visitor’s choice.
Step 7: Test it
- Submit your form on desktop and mobile.
- Check the event in GA4 Realtime or DebugView.
- Use Tag Assistant to confirm the Google Ads conversion fires once.
- Check the Google Ads conversion status after a day or two.
Common mistakes
- Tracking button clicks instead of successful submissions.
- The same lead counted twice by both GA4 import and an Ads tag set as primary.
- Page views of the contact page counted as leads.
- Tracking that broke after a theme or form plugin update and nobody noticed.
- Thank you page indexed in Google, so visitors land on it from search.
If you run Meta ads as well, set up the Meta side with the same event: see Meta Pixel and Conversions API on WordPress.
If you’re not sure your leads are being tracked, get in touch. I’ll check your setup and fix what’s missing.