WordPress lead tracking

WordPress Lead Tracking: Forms, Calls, WhatsApp & Bookings in GA4

This is for service businesses with a WordPress site, where a lead is a form fill, a phone call, a WhatsApp message or a booked appointment. Most WordPress forms submit without leaving the page, so standard form triggers and thank-you page rules often miss leads or count spam and failed submissions. I track each lead action properly and send it to GA4, Google Ads and Meta with the data needed for enhanced conversions.

WordPress · Lead generation
  • Form tracking built for your form plugin, counting only successful submissions
  • Click-to-call, WhatsApp and email clicks tracked as separate lead types
  • Calendly and other booking embeds tracked when a meeting is actually booked
  • Enhanced conversions for leads, ready for offline conversion imports later
Quick answer

Proper WordPress lead tracking means listening for your form plugin's own success event (or a thank-you page that can't be reached directly), tracking call, WhatsApp and booking actions separately, loading tags through one Google Tag Manager container, and sending hashed email or phone with Google Ads conversions so enhanced conversions for leads work.

Tracking flow

How tracking works on WordPress

The events I set up on WordPress, and where each one is sent.

Why it breaks

Why WordPress tracking goes wrong

AJAX forms don't trigger form submission tags

Contact Form 7, WPForms, Gravity Forms and Elementor forms often submit in the background and show a message on the same page. GTM's generic form trigger then fires on failed attempts or not at all.

Thank-you pages that anyone can open

Redirecting to a thank-you page works until it's bookmarked, refreshed, indexed by Google or linked in a menu. Each visit counts as a lead, so conversion numbers creep up with no real enquiries behind them.

Calls and WhatsApp clicks go unmeasured

For many local businesses most leads come by phone or WhatsApp. Floating chat buttons from plugins and tel: links in headers are often not tracked, or are tracked as one lumped 'click' event.

Booking embeds are iframes

Calendly and similar schedulers load inside an iframe, so GTM on your page can't see the booking unless it listens for the messages the embed sends back.

Duplicate tags from plugins and page builders

Site Kit, a header-scripts plugin, the theme and a page builder can each add Google tags. That leads to double-counted page views and conversions and makes debugging slow.

What I set up

My WordPress tracking setup

Form tracking

  • Success-event listeners for Contact Form 7, Gravity Forms, WPForms or Elementor
  • Form name and page passed as event parameters
  • Thank-you pages protected from direct visits, where used
  • Spam and failed validation excluded from conversions
  • User-provided email and phone captured for enhanced conversions

Calls, WhatsApp and bookings

  • Click-to-call tracking on tel: links across the site
  • Google Ads call conversions from website, where you use call forwarding
  • WhatsApp button and wa.me link tracking
  • Calendly embed tracking on confirmed bookings
  • Email link clicks as a secondary action

GTM, GA4 and ads

  • Single GTM container replacing scattered plugin tags
  • GA4 key events for each lead type
  • Google Ads conversion actions with primary vs secondary set correctly
  • Enhanced conversions for leads
  • Meta Pixel and Conversions API Lead events with deduplication
  • Consent Mode v2 linked to your cookie banner

Lead quality and CRM

  • GCLID and UTM capture into hidden form fields
  • Lead details passed to your CRM or email tool
  • Offline conversion import plan for qualified leads and sales
  • Looker Studio lead report by source and lead type
Event map

Events I track on WordPress

EventWhen it firesSent to
generate_lead / LeadForm plugin reports a successful submissionGA4, Google Ads, Meta Pixel + CAPI
phone_clickVisitor taps a tel: linkGA4, Google Ads (secondary or primary)
whatsapp_clickWhatsApp button or wa.me link clickedGA4, Google Ads, Meta
booking_complete / ScheduleCalendly embed confirms a scheduled meetingGA4, Google Ads, Meta
email_clickmailto: link clickedGA4
form_startVisitor first interacts with a lead formGA4
qualified_lead (offline)Lead marked qualified or won in your CRMGoogle Ads offline conversions
Process

How the setup works

  1. 01

    Audit

    I map every way a visitor can contact you, find which form and chat plugins you use, and check which tags are already on the site and what they count.

  2. 02

    Define what a lead is

    We agree which actions count as primary conversions for bidding and which are secondary signals, so Google Ads optimises for enquiries you actually want.

  3. 03

    Build

    I set up GTM listeners for your form plugin, calls, WhatsApp and bookings, then wire up GA4, Google Ads with enhanced conversions, and Meta.

  4. 04

    Test every lead path

    I submit each form, including failed and spam-like attempts, tap call and WhatsApp buttons on mobile, and book a test meeting to confirm each counts once.

  5. 05

    Connect to the CRM

    If you want bidding based on lead quality, I set up GCLID capture and an offline conversion import from your CRM.

Tracking each WordPress form plugin the right way

Every popular form plugin announces a successful submission in its own way. Contact Form 7 fires a browser event when the message is sent, Gravity Forms and WPForms have their own confirmation hooks for AJAX forms, and Elementor forms trigger a success event in the page. Listening for those means a lead is counted only when the plugin itself says the submission worked.

If you prefer a thank-you page, that's fine, but it needs protecting: a noindex tag, no menu links, and ideally a check that the visitor actually came from the form. Otherwise the page view count, not the lead count, drives your conversions.

Phone calls, WhatsApp and booked meetings

Tracking a tap on a phone number tells you someone tried to call, not that they spoke to you. If calls matter, Google Ads call conversions from website use a forwarding number and can count only calls above a minimum length. For WhatsApp, a click is usually the best signal available, so I track it separately from forms and keep it out of primary bidding unless you're happy with that.

For Calendly embeds, the embed sends a message to the parent page when a meeting is scheduled. GTM listens for that and fires a booking conversion only when the booking is confirmed, not when the calendar is opened.

Enhanced conversions for leads

When someone submits a form, GTM can read the email or phone they entered and send it, hashed, with the Google Ads conversion. That helps Google match the lead to an ad click when cookies are missing. It also prepares the ground for importing later outcomes, like qualified leads or closed deals, so your campaigns optimise for real customers rather than any form fill.

Case studies

Related projects

FAARNS: Google Ads Tracking project by Chamok Mahonto
Google Ads Tracking

FAARNS

An event-driven GA4 and GTM measurement system for a multi-country digital agency, tracking every lead action and syncing conversions to Google Ads and Looker Studio.

  • GA4
  • GTM
  • Google Ads
Read case study
TalkBar: Google Ads Tracking project by Chamok Mahonto
Google Ads Tracking

TalkBar

End-to-end GA4, GTM and Google Ads tracking for a premium Bengaluru restaurant, measuring calls, reservation intent and menu views as real conversions.

  • GA4
  • GTM
  • Google Ads
Read case study
FAQ

WordPress tracking FAQ

How do I track Contact Form 7 submissions in GA4?

Listen for Contact Form 7's success event in Google Tag Manager rather than using a generic form trigger or click trigger. That event fires only after the message is sent, so failed validation and errors aren't counted. Then send a generate_lead event to GA4 with the form name as a parameter.

Should I use a thank-you page or track the form directly?

Either works if done properly. Tracking the plugin's success event avoids inflated counts from people revisiting the page. A thank-you page is easier to use as a goal in some tools but should be noindexed and not linked anywhere else.

Can I track WhatsApp and phone clicks as Google Ads conversions?

Yes. Clicks on tel: and WhatsApp links can be sent as conversions through GTM. Because a click isn't a confirmed conversation, I often set them as secondary actions, and use Google's call conversions from website when real call tracking is needed.

How do I track Calendly bookings on a WordPress site?

Calendly's embed sends messages to your page when a visitor books. A GTM listener catches the scheduled-meeting message and fires a conversion. This works for inline and popup embeds; a link that opens Calendly in a new tab needs Calendly's own redirect or integration options instead.

Do I need a plugin to add Google Tag Manager to WordPress?

No, but a lightweight plugin or a theme setting is the easiest way to add the GTM snippet. The important part is having one container and removing other plugins that add Google tags separately, such as duplicate Site Kit or header-script tags.

What are enhanced conversions for leads?

It's a Google Ads feature that sends hashed email or phone with your lead conversions. It improves matching to ad clicks and lets you upload later outcomes from your CRM, such as qualified leads, using the same customer data.

Guides

Read next

Want your WordPress tracking fixed?

Get a free audit of your tracking and ad account. Usually replies within 1–2 hours.