Enhanced Conversions for Leads on WordPress: Setup Guide

You are paying for Google Ads clicks. Leads arrive in your inbox. Some become customers, most do not. But Google Ads has no idea which leads turned into revenue — so it cannot learn to find you more of the good ones. The gap between a form submission and a closed deal is where most SMB ad budgets go to waste.

Enhanced Conversions for Leads (ECL) closes that gap. It lets you tell Google which form submissions eventually became paying customers — without a CRM like Salesforce or HubSpot, without writing code, and without relying on a GCLID that might get lost along the way. Here is how to set it up on WordPress, step by step.

What Enhanced Conversions for Leads Is (and Is Not)

Google offers two “Enhanced Conversions” features. They share a name but solve different problems. This distinction matters because setting up the wrong one wastes your time:

FeatureEnhanced Conversions (for Web)Enhanced Conversions for Leads (ECL)
PurposeImproves tracking of conversions that happen online (e.g., purchases)Connects offline conversions (lead becomes customer) back to the original ad click
How it worksSends hashed user data alongside the existing conversion tag to improve match ratesCaptures hashed email at form submission, matches it when you upload the offline conversion later
Best forEcommerce, SaaS signups, any business where the conversion happens on the websiteLead-gen businesses where the “conversion” (sale, booking, signed contract) happens after the form fill
Needs offline upload?NoYes — you must tell Google which leads converted

If you run a lead-generation business — services, B2B, professional services, home improvement, anything where someone fills out a form and you follow up later — you want ECL, not the standard web version.

How ECL Works: The 5-Step Data Flow

  1. Visitor clicks your Google Ad and lands on your WordPress site.
  2. Visitor fills out your contact form — the form collects their email address (and ideally phone number).
  3. Google’s tag captures and hashes the email using SHA-256 encryption, then sends the hashed data to Google Ads. The actual email is never sent in plain text.
  4. You track the lead outcome offline — in a spreadsheet, your email inbox, a simple CRM, or a lead source tracking plugin.
  5. You upload the conversion (with the hashed email) to Google Ads. Google matches it to the original ad click and feeds this data into Smart Bidding.

The result: Google learns which clicks produce real customers, not just form fills. Smart Bidding optimises for leads that actually convert — which changes everything about your campaign performance.

Unlike GCLID-based (Google Click Identifier) offline conversion tracking, ECL does not depend on preserving a click ID through your entire website session. If your GCLID disappears between pages — a common WordPress problem — ECL still works because it matches on the email address, not the click ID.

Why lead source data still matters: ECL tells Google which leads converted, but it does not tell you which campaign or keyword drove each individual lead. For that, you need per-lead attribution data. See how TrueConversion adds lead source tracking alongside ECL.

What You Need Before Starting

Before configuring ECL, confirm you have:

  • Auto-tagging enabled in your Google Ads account (Settings → Account Settings → Auto-tagging)
  • A WordPress form that collects an email address — any of the major form plugins will work: Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Forminator, Fluent Forms, Elementor Pro Forms, or Formidable Forms
  • Google Tag Manager (GTM) installed on your site — recommended for the most control. Alternatively, you can use the Google tag (gtag.js) placed directly in your header
  • Customer Data Terms accepted in Google Ads (Goals → Conversions → Settings). If you use a manager account (MCC), accept at the manager level
  • For EU/EEA visitors: a Consent Management Platform (CMP) configured with Consent Mode v2. Supported WordPress CMPs include CookieYes, Complianz, and Cookie Information

Time estimate: The full setup takes 30-60 minutes depending on your technical comfort level. Steps 1-2 take about 10 minutes. Step 3 is the most involved.

Steps 1-2: Create and Enable Your ECL Conversion Action

In your Google Ads account:

  1. Go to Goals → Summary → + Create conversion action
  2. Select “Import”“CRMs, files, or other data sources”“Track conversions from clicks”
  3. Choose a goal category like “Qualified lead” or “Converted lead”
  4. Name it something descriptive (e.g., “WordPress Form — Qualified Lead”)
  5. Set the value, count method (“One” for leads), and conversion window (up to 90 days)
  6. Save the conversion action

Then enable ECL:

  1. Go to Goals → Conversions → Settings
  2. Find “Enhanced conversions for leads” and toggle it on
  3. Accept the Customer Data Terms if prompted
  4. Choose your setup method — Google Tag Manager (recommended) or Google tag

Step 3: Configure Your WordPress Site to Capture Hashed Email

This is the core setup step and where WordPress-specific considerations matter most. Choose the option that matches your technical comfort level:

  • Option A — Google tag automatic detection. No coding needed. Best for simple sites with one form.
  • Option B — Google tag with CSS selectors. Requires using browser developer tools to find your form’s email field selector. Best for sites with multiple forms.
  • Option C — Google Tag Manager (recommended). Requires GTM experience. Gives you the most control and handles AJAX form submissions reliably.

Option A: Google Tag Automatic Detection

If you have the Google tag installed on your site (via a plugin like “Site Kit by Google” or pasted into your header):

  1. In Google Ads, go to Tools → Data Manager → Google tag
  2. Click Manage automatic event detection
  3. Enable “Form interactions”

Google’s tag will automatically detect email fields on your forms and capture the hashed value on submission.

WordPress gotcha: Automatic detection scans for email input fields across your entire page — not just your main contact form. If you have a newsletter signup widget in your sidebar or footer, the tag may capture that email instead of (or in addition to) your contact form email. Use the “Add exclusions” option to exclude sidebar and footer containers (e.g., .site-footer, .widget-area).

Option B: Google Tag with CSS Selectors

For more control over which email field is captured, you can specify the exact CSS selector (a code identifier that pinpoints a specific element on your page). Here is how to find it:

  1. Open your contact form page in your browser
  2. Right-click the email input field and select “Inspect”
  3. In the developer tools panel, right-click the highlighted HTML element and choose Copy → Copy selector
  4. Paste this selector into your Google Ads Enhanced Conversions settings

Common email field CSS selectors by WordPress form plugin:

Form PluginEmail Input CSS Selector
Contact Form 7input.wpcf7-form-control[type="email"]
WPForms#wpforms-{formID}-field_{fieldID} input[type="email"]
Gravity Forms#input_{formID}_{fieldID}
Ninja Forms#nf-field-{fieldID}
Formidable Forms#field_{fieldKey}
Fluent Forms.ff-el-input--content input[type="email"]
Elementor Pro Forms.elementor-form input[type="email"]

Replace {formID} and {fieldID} with the actual values from your form. You can find these by inspecting the form field in your browser’s developer tools. To verify your selector works, open the browser console and type document.querySelector('your-selector') — if it returns the email input element, your selector is correct.

Option C: Google Tag Manager (Recommended for Most WordPress Sites)

GTM (Google Tag Manager) gives you the most flexibility, especially if your forms use AJAX submission — which most WordPress form plugins do by default. Here is the setup:

1. Create a DOM Element variable for the email field:

  • In GTM, go to Variables → User-Defined Variables → New
  • Choose “DOM Element” as the variable type
  • Set the Selection Method to “CSS Selector”
  • Enter the CSS selector for your form’s email field (use the table above)
  • Set the Attribute Name to value (this is correct for input fields; leave blank if targeting non-input elements like text displays)
  • Name it something clear like “Form Email Value”

2. Create a User-Provided Data Event tag:

  • Go to Tags → New → Google Ads User-Provided Data Event
  • Enter your Conversion ID (the numeric ID found in your Google tag configuration — enter just the number, e.g., 123456789, without the AW- prefix)
  • Under User-Provided Data, click “New Variable”Manual Configuration
  • Map Email to the DOM Element variable you just created
  • Optionally map Phone if your form collects it (improves match rates)

3. Set the trigger — this is where AJAX matters:

Most WordPress forms submit via AJAX (the page does not reload). GTM’s built-in “Form Submission” trigger may not fire. Instead, use your form plugin’s specific success event:

  • Contact Form 7: fires a wpcf7mailsent DOM event. Create a Custom Event trigger in GTM with event name wpcf7mailsent.
  • WPForms: fires a jQuery event (wpformsAjaxSubmitSuccess) that GTM cannot listen to natively. You need a Custom HTML tag that listens for this jQuery event and pushes to the dataLayer: jQuery(document).on('wpformsAjaxSubmitSuccess', function(){ dataLayer.push({event: 'wpforms_submit'}); }); Then create a Custom Event trigger for wpforms_submit.
  • Gravity Forms: fires gform_confirmation_loaded (for AJAX-enabled forms). Create a Custom Event trigger for this event.
  • Other plugins: check your plugin’s documentation for its AJAX success callback, or use a GTM4WP-style helper plugin that pushes form events to the dataLayer automatically.

4. Ensure a Conversion Linker tag fires on all pages (Tags → New → Conversion Linker → Trigger: All Pages). This is required for conversion matching.

5. Preview and test using GTM’s Preview mode. Submit your form and verify in the Tag Assistant that the User-Provided Data Event tag fired and captured the hashed email value.

Step 4: Upload Offline Conversions to Google Ads

This is the step most ECL guides skip — but it is where the actual value is created. You need to tell Google which leads became customers.

The Google Sheets Method (No CRM Needed)

For SMBs without Salesforce, HubSpot, or a similar CRM, Google Sheets is the simplest upload path:

  1. Create a Google Sheet with these columns: Email, Conversion Name, Conversion Time, Conversion Value, Currency Code
  2. Hash the email addresses using SHA-256 (recommended — Google can also accept unhashed emails and hash them server-side, but pre-hashing avoids sending plain-text emails). Google Sheets does not have a built-in SHA-256 function, so you need a custom Google Apps Script. Go to Extensions → Apps Script and add a function like function SHA256(input) { return Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, input.toString().toLowerCase().trim()).map(b => ('0' + (b & 0xFF).toString(16)).slice(-2)).join(''); } Then use =SHA256(A2) in a new column.
  3. Format the Conversion Time as yyyy-MM-dd HH:mm:ss+/-HH:mm (e.g., 2026-02-15 14:30:00+10:00 for AEST)
  4. Connect to Google Ads Data Manager: Go to Tools → Data Manager → Connect a new data source → Google Sheets → select your sheet and map the columns
  5. Set an upload schedule — daily is recommended so Google Ads has fresh data to work with

Important: The email must be lowercased and trimmed of whitespace before hashing. The Apps Script function above handles this with .toLowerCase().trim(). If you hash “John@Example.com” and Google hashed “john@example.com”, they will not match.

Alternative: Zapier or Make.com

If you prefer automation, Zapier and Make.com can connect your form notifications or Google Sheet directly to Google Ads offline conversion uploads. In Google Ads Data Manager, select “Third-party integration by Zapier” and follow the setup flow. This eliminates the manual hashing step — Zapier handles it.

Google Ads Data Manager also supports direct CRM connections (Salesforce, HubSpot, Pipedrive) and scheduled file uploads for businesses that already have a CRM in place.

For a deeper dive into the full offline conversion upload process, including GCLID-based uploads and troubleshooting, see our guide on offline conversion tracking without a CRM.

How TrueConversion helps here: When you upload conversions to Google Ads, you know that a lead converted — but do you know which campaign drove it? TrueConversion stores the UTM source, medium, campaign, and ad platform click ID with every form submission. So when you review your uploaded conversions, you can see exactly which campaigns are producing customers. Try it free.

Step 5: Verify Your ECL Setup on WordPress

After configuring everything, wait 48 hours for the diagnostics data to populate. Then verify:

  1. In Google Ads: Go to Goals → Summary → click your conversion action → “Diagnostics” tab. Check match rate, coverage, and any error flags.
  2. In GTM: Use Preview mode and Tag Assistant. Submit a test form and verify the User-Provided Data Event tag fires. Check that the email value is captured (not null).
  3. In your browser: Open DevTools Console and run document.querySelector('your-css-selector') to confirm your selector still points to the correct email field.

Common WordPress-specific issues:

  • Caching plugins (WP Rocket, W3 Total Cache, LiteSpeed Cache) can serve cached pages to Tag Assistant, making it appear that tags are not firing. Disable page caching or test in a private/incognito window.
  • CSS selector changed after a form plugin update. Re-inspect the email field and update your GTM variable or Google Ads setting.
  • AJAX form did not trigger the tag. Verify your custom event trigger matches the form plugin’s success event (see Step 3, Option C).
  • Automatic detection captured the wrong email — check for sidebar newsletter forms or footer contact info. Add exclusion selectors.
  • Low match rate for B2B leads. Business email addresses (john@company.com) are often not tied to a Google account. This is expected behaviour, not a misconfiguration. Adding phone number as a secondary identifier can improve match rates. Even with lower individual match rates, the aggregate data still helps Smart Bidding learn.

ECL vs GCLID-Based Tracking: Use Both

You do not have to choose between ECL and GCLID-based offline conversion tracking. They work differently and complement each other:

  • GCLID tracking captures a unique click identifier from the URL and stores it with the form submission. It provides click-level precision but is fragile on WordPress — GCLIDs can be lost to caching, redirects, AJAX submissions, and iOS privacy changes (WBRAID/GBRAID).
  • ECL uses the email address your form already collects. No hidden fields, no URL parameter persistence required. It works across devices (if the user is signed into Google) and is not affected by GCLID loss. The trade-off: match rates vary, especially for B2B.

The recommended approach: use both. GCLID-based tracking gives you precise click-to-conversion matching when it works. ECL provides a durable fallback and cross-device matching. Together, they give Google’s Smart Bidding the most complete picture of which clicks produce customers.

Consent Mode v2 and ECL on WordPress

If your traffic is primarily from North America and you do not serve EU/EEA visitors, you can skip this section.

Since March 2024, Google requires Consent Mode v2 for advertisers targeting the EU or EEA. This affects ECL directly: if a visitor denies consent, the Google tag will not fire, and ECL cannot capture the hashed email.

Your Consent Management Platform (CMP) must send two specific consent signals to Google’s tags: ad_user_data and ad_personalization. WordPress CMPs that support this include CookieYes, Complianz, and Cookie Information.

When consent is denied, Google uses conversion modelling to estimate the conversions it cannot directly measure. But your match rates will be lower for EU traffic — consent denial rates of 30-50% are common in European markets, which means a significant portion of your leads will not be matchable through ECL.

Frequently Asked Questions

Does ECL work with Contact Form 7?

Yes, but CF7 submits via AJAX by default, so automatic detection may not work reliably. Use the GTM method (Option C) with a wpcf7mailsent custom event trigger. See our CF7 lead source tracking guide for more detail.

Do I need a CRM like Salesforce or HubSpot?

No. You can upload offline conversions via Google Sheets connected to Google Ads Data Manager. Zapier and Make.com also work without a CRM.

Is the email address sent to Google in plain text?

No. The email is hashed using SHA-256 before transmission. Google receives a one-way hash — they cannot see the actual email address. This is the same hashing standard used by banks and security systems.

How long before I see results?

The diagnostics report becomes available 48 hours after setup. Meaningful conversion data that improves Smart Bidding takes 2-4 weeks and requires a steady stream of uploaded conversions.

Can I use ECL and standard Enhanced Conversions together?

Yes. They serve different purposes. Enhanced Conversions for Web improves your online conversion actions. ECL improves your offline/lead conversion actions. They can run simultaneously on the same Google Ads account.

What if my match rate is low?

Common for B2B — business email addresses are often not tied to Google accounts. Add phone number as a secondary identifier to improve match rates. Also consider importing GCLIDs alongside hashed emails when available, as GCLID-based matching has higher precision.


Complete the Picture: Add Per-Lead Attribution

ECL tells Google which leads converted. TrueConversion tells you which campaign, keyword, and traffic source drove each one. Capture UTM parameters, GCLID, and ad platform click IDs with every WordPress form submission — no code changes required.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *