Elementor Forms + Google Ads Conversion Tracking Setup

I see this exact setup broken in about 60% of WordPress accounts I audit. The most common issue? The Enhanced Conversions setup is either missing entirely or sending hashed email data that Google can’t match. When it’s working correctly, you’ll typically see 15-25% more conversion attribution than basic tracking alone.

The second biggest issue is timing — Elementor’s AJAX form submissions can fire tracking before the Enhanced Conversions data is properly captured, leading to conversions that show up in Google Ads but can’t be enhanced with first-party data.

What You’ll Have Working By The End

Prerequisites

Step 1: Create Your Google Ads Conversion Action

Log into Google Ads and navigate to Goals → Conversions → Create Conversion Action.

Select “Website” and configure:

Copy your Conversion ID and Conversion Label — you’ll need both for GTM.

If you’re using Enhanced Conversions (which you should), enable it here and select “Automatic enhanced conversions” or “Manual enhanced conversions.” I recommend Manual so you have full control over what data gets sent.

Step 2: Set Up the Data Layer Push

Elementor Forms doesn’t automatically push to the data layer, so we need to add custom JavaScript. Add this code to your theme’s functions.php file or use a plugin like “Insert Headers and Footers”:

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Listen for successful Elementor form submissions
    jQuery(document).on('submit_success', '.elementor-form', function(event, response) {
        
        // Get form data
        var formElement = event.target;
        var formData = new FormData(formElement);
        
        // Extract user data for Enhanced Conversions
        var email = formData.get('email') || formData.get('form_fields[email]') || '';
        var phone = formData.get('phone') || formData.get('form_fields[phone]') || '';
        var firstName = formData.get('first_name') || formData.get('name') || '';
        var lastName = formData.get('last_name') || '';
        
        // Get form ID from Elementor
        var formId = formElement.getAttribute('data-settings') ? 
            JSON.parse(formElement.getAttribute('data-settings')).form_name || 'unknown' : 
            'unknown';
        
        // Push to data layer
        window.dataLayer = window.dataLayer || [];
        window.dataLayer.push({
            'event': 'elementor_form_submit',
            'form_id': formId,
            'user_data': {
                'email_address': email,
                'phone_number': phone,
                'address': {
                    'first_name': firstName,
                    'last_name': lastName
                }
            }
        });
        
        // Debug logging
        console.log('Elementor form submitted:', {
            form_id: formId,
            has_email: email !== '',
            has_phone: phone !== ''
        });
    });
});
</script>

This script captures the Elementor form submission event and structures the data in a way that’s perfect for Enhanced Conversions.

Step 3: Create the GTM Trigger

In Google Tag Manager:

  1. Triggers → New → Custom Event
  2. Event name: elementor_form_submit
  3. Use regex matching: Leave unchecked
  4. Some Custom Events: Check this if you only want specific forms to trigger conversions
    • Variable: {{form_id}}
    • Operator: equals or matches RegEx
    • Value: Your specific form ID or pattern

If you want all Elementor forms to trigger conversions, leave it as “All Custom Events.”

Step 4: Configure the Google Ads Conversion Tag

Create a new tag in GTM:

  1. Tags → New → Google Ads Conversion Tracking
  2. Conversion ID: Enter your Conversion ID from Step 1
  3. Conversion Label: Enter your Conversion Label from Step 1
  4. Conversion Value: Set to static value or use {{some custom variable}} if dynamic
  5. Currency Code: USD (or your currency)

For Enhanced Conversions, enable it and add:

// User Provided Data section
{
  "email_address": "{{DLV - user_data.email_address}}",
  "phone_number": "{{DLV - user_data.phone_number}}",  
  "address": {
    "first_name": "{{DLV - user_data.address.first_name}}",
    "last_name": "{{DLV - user_data.address.last_name}}"
  }
}

You’ll need to create Data Layer Variables in GTM for each of these paths:

Set your trigger to the elementor_form_submit trigger you created in Step 3.

Step 5: Handle the Timing Issue

Elementor’s AJAX submissions can be tricky. Add this enhanced version of the data layer push that ensures proper timing:

<script>
jQuery(document).on('submit_success', '.elementor-form', function(event, response) {
    
    // Wait a brief moment for DOM to settle
    setTimeout(function() {
        
        var formElement = event.target;
        var formData = new FormData(formElement);
        
        // Your existing data extraction code here...
        
        // Enhanced push with callback
        window.dataLayer = window.dataLayer || [];
        window.dataLayer.push({
            'event': 'elementor_form_submit',
            'event_callback': function() {
                console.log('Google Ads conversion fired successfully');
            },
            'event_timeout': 2000,
            'form_id': formId,
            'user_data': {
                'email_address': email,
                'phone_number': phone,
                'address': {
                    'first_name': firstName,
                    'last_name': lastName
                }
            }
        });
        
    }, 100); // 100ms delay ensures form data is captured
});
</script>

Testing & Verification

GTM Preview Mode:

  1. Enable Preview mode in GTM
  2. Submit your Elementor form
  3. Check that elementor_form_submit event fires
  4. Verify your Google Ads Conversion tag fires
  5. Check that Enhanced Conversions data is populated in the tag details

Google Ads Verification:

  1. Go to Google Ads → Goals → Conversions
  2. Look for your conversion action in the table
  3. Check the “Status” column — should show “Recording conversions” within 2-3 hours
  4. Use Google Ads → Tools → Google Ads Tag Helper Chrome extension on your form page

Enhanced Conversions Check:

  1. Google Ads → Goals → Conversions → Click your conversion action
  2. Look for “Enhanced conversions” status
  3. Should show percentage of conversions enhanced (aim for 70%+)

Cross-Check Numbers:

Troubleshooting

Problem: GTM Preview shows the event firing, but no conversion tag → Solution: Check that your trigger conditions exactly match the event name. Case sensitivity matters. Also verify the Google Ads tag has the correct Conversion ID/Label format.

Problem: Conversions showing in Google Ads but Enhanced Conversions at 0% → Solution: The email/phone data isn’t reaching Google properly. Check your Data Layer Variables are pulling from the right paths, and ensure the email field in your Elementor form is actually named “email” (not “email_address” or “user_email”).

Problem: Multiple conversions firing for single form submission → Solution: Elementor sometimes triggers multiple events. Add a flag to prevent duplicate tracking: if (formElement.dataset.tracked) return; formElement.dataset.tracked = 'true'; at the start of your event listener.

Problem: Form submissions not triggering the conversion at all → Solution: The submit_success event might not be firing. Try using elementor/frontend/form/success instead, or check if there are JavaScript errors preventing the event listener from attaching.

Problem: Enhanced Conversions data looks wrong in Google Ads → Solution: Check that you’re not double-hashing email addresses. Google handles the hashing automatically — send plain text email addresses in the user_data object.

Problem: Conversion tracking works in test but not in live traffic → Solution: Ad blockers can interfere. About 15-25% of users block Google Ads tags. Also check if your site has a Content Security Policy that’s blocking GTM’s Google Ads requests.

What To Do Next

Now that your Elementor Forms are tracking properly in Google Ads, consider these next steps:

This guide is part of the Google Ads Conversion Tracking Hub — a complete resource covering Google Ads tracking setup across every major form platform and CRM.