WPForms + Google Ads Conversion Tracking Setup

I see this exact combo in about 60% of WordPress sites I audit, and roughly half of them are either not tracking conversions at all or sending garbage data to Google Ads. The most common mistake? Trying to track the form submission with a page view trigger instead of hooking into WPForms’ actual success event. Google Ads then shows inflated conversion numbers that don’t match your actual leads.

The setup I’m about to show you fixes that by using WPForms’ native wpformsAjaxSubmitSuccess event with Enhanced Conversions, which gives Google’s algorithm the user data it needs to optimize properly.

What You’ll Have Working By The End

Prerequisites

Step 1: Create the Google Ads Conversion Action

First, you need to set up the conversion action in Google Ads that your WPForms submissions will feed into.

In your Google Ads account, go to Tools & Settings → Conversions → New Conversion Action. Choose “Website” as the source.

Configure these settings:

Click “Create and Continue.” On the next screen, choose “Use Google Tag Manager” and copy your Conversion ID and Conversion Label. You’ll need both in step 3.

Step 2: Set Up the WPForms Success Event Listener

WPForms fires a JavaScript event called wpformsAjaxSubmitSuccess when a form submits successfully. You need to listen for this event and push the data to your data layer.

Add this code to your theme’s functions.php file or in a custom plugin:

function wpforms_gtm_conversion_tracking() {
    ?>
    <script>
    document.addEventListener('wpformsAjaxSubmitSuccess', function(event) {
        // Get form data
        var formData = event.detail.formData;
        var formId = event.detail.formId;
        
        // Extract user data for Enhanced Conversions
        var email = '';
        var firstName = '';
        var lastName = '';
        var phone = '';
        
        // Parse form data to find email, name, phone fields
        formData.forEach(function(field) {
            if (field.name.includes('email')) {
                email = field.value;
            }
            if (field.name.includes('first') || field.name.includes('name')) {
                firstName = field.value;
            }
            if (field.name.includes('last')) {
                lastName = field.value;
            }
            if (field.name.includes('phone')) {
                phone = field.value;
            }
        });
        
        // Push to data layer
        window.dataLayer = window.dataLayer || [];
        window.dataLayer.push({
            'event': 'wpforms_submission',
            'form_id': formId,
            'user_data': {
                'email': email,
                'phone_number': phone,
                'first_name': firstName,
                'last_name': lastName
            }
        });
    });
    </script>
    <?php
}
add_action('wp_footer', 'wpforms_gtm_conversion_tracking');

This listener captures the form data and pushes it to the data layer in a format that GTM can work with. The Enhanced Conversions user data gets structured exactly how Google expects it.

Step 3: Configure the GTM Trigger

In Google Tag Manager, create a new trigger:

  1. Go to Triggers → New
  2. Name it “WPForms Submission”
  3. Trigger type: “Custom Event”
  4. Event name: wpforms_submission
  5. This trigger fires on: “All Custom Events”

Save the trigger. This will fire every time WPForms pushes the success event to your data layer.

Step 4: Set Up Enhanced Conversions Data Variables

You need to create GTM variables to capture the user data for Enhanced Conversions:

Create these four Data Layer Variables:

  1. Variable Name: “DL - User Email”

    • Data Layer Variable Name: user_data.email
  2. Variable Name: “DL - User First Name”

    • Data Layer Variable Name: user_data.first_name
  3. Variable Name: “DL - User Last Name”

    • Data Layer Variable Name: user_data.last_name
  4. Variable Name: “DL - User Phone”

    • Data Layer Variable Name: user_data.phone_number

Step 5: Create the Google Ads Conversion Tag

Now create the tag that actually sends the conversion to Google Ads:

  1. Go to Tags → New

  2. Name it “Google Ads - WPForms Conversion”

  3. Tag type: “Google Ads Conversion Tracking”

  4. Conversion ID: Enter your Conversion ID from Step 1

  5. Conversion Label: Enter your Conversion Label from Step 1

  6. Conversion Value: Set to your average lead value or leave blank

  7. Enhanced Conversions: Enable this and configure:

    • Email: {{DL - User Email}}
    • Phone: {{DL - User Phone}}
    • First Name: {{DL - User First Name}}
    • Last Name: {{DL - User Last Name}}
  8. Triggering: Select your “WPForms Submission” trigger from Step 3

Save and publish the tag.

Step 6: Set Up Cross-Domain Tracking (If Applicable)

If your WPForms are on a different domain than where users first click your Google Ads (common with landing page tools), you need cross-domain tracking.

In your Google Ads conversion tag, expand Advanced Settings and add your domains to the Linker setting. Format like this: yourdomain.com,yourlandingpage.com

Testing & Verification

Here’s how to verify everything works before you start optimizing campaigns around this data:

Test the GTM Setup:

  1. Open GTM Preview mode
  2. Submit a test form on your site
  3. Check the data layer in GTM’s debug console — you should see the wpforms_submission event with all the user data
  4. Verify your Google Ads conversion tag fired

Test Google Ads Reception:

  1. Go to Google Ads → Tools & Settings → Conversions
  2. Find your WPForms conversion action
  3. Check the “Status” column — it should show “Recording conversions” within 24-48 hours of your test
  4. Submit another test form and check if the conversion count increases

Cross-Check Your Numbers:

I typically see about 10-12% of form submissions not make it to Google Ads due to JavaScript blockers or users navigating away before the tag fires.

Troubleshooting

Problem: GTM shows the trigger fired but no user data in the data layer Solution: Your WPForms field names don’t match the JavaScript selectors. Check your form’s field names in the WPForms builder — they might use different naming conventions. Update the JavaScript code to match your actual field names.

Problem: Google Ads shows “Not recording conversions” status Solution: The Conversion ID or Label is wrong. Double-check you copied them correctly from the Google Ads conversion action setup. Also verify your GTM container is actually published, not just saved.

Problem: Conversions fire on page load instead of form submission Solution: You’re probably using a Page View trigger instead of the custom event trigger. Make sure your trigger is set to Custom Event with the exact event name wpforms_submission.

Problem: Enhanced Conversions shows “Poor quality data” warnings Solution: The user data isn’t properly formatted or contains invalid values. Check that email addresses are actually valid emails and phone numbers include country codes. Also make sure the data layer variables are pulling the right values.

Problem: Duplicate conversions for the same user Solution: Your conversion action is set to “Every” instead of “One” in the counting setting. Go back to Google Ads → Conversions and change it to “One” to deduplicate.

Problem: Form submissions work but Google Ads shows zero conversions Solution: Check if your site uses AJAX form submissions and the success event fires before the conversion tag. Add a small delay (200ms) to the tag firing or switch to using the form’s actual success callback instead of the AJAX event.

What To Do Next

Now that your WPForms submissions are flowing into Google Ads, here are the logical next steps:

This guide is part of the Google Ads Conversion Tracking Hub — comprehensive setups for tracking any lead source as Google Ads conversions.