---
title: Google Ads Lead Form Webhook Integration
description: "## Overview Google Ads Lead Form Webhook Integration allows you to automatically capture leads from Google Ads lead form extensions directly into PloverCRM in real-time. When someone submits a lead form on your Google Ads campaign, the lead data is…"
url: "https://plovercrm.com/docs/google-ads-webhook-setup/"
updated: "2026-11-03"
category: "Integrations & Data / Webhooks & CRM Routing"
tags:
  - Field Mapping
  - Google Ads
  - Lead Capture
  - Lead Forms
  - Web
  - Webhooks
---

# Google Ads Lead Form Webhook Integration

## Overview

Google Ads Lead Form Webhook Integration allows you to automatically capture leads from Google Ads lead form extensions directly into PloverCRM in real-time. When someone submits a lead form on your Google Ads campaign, the lead data is instantly sent to PloverCRM via webhook, where it’s automatically mapped to your CRM fields and added to your contact database.

This integration eliminates manual lead imports, reduces response time, and ensures no leads are lost between Google Ads and your CRM.

## Video Tutorial

Watch this complete walkthrough of the Google Ads webhook setup process:

[Plover CRM Google Ads Webhook Setup Tutorial](https://www.youtube.com/embed/0aWI3mVpK_4?feature=oembed)

## Prerequisites

Before setting up the Google Ads webhook integration, ensure you have:

– **Active Google Ads account** with lead form extensions enabled
– **Lead form campaign** already created in Google Ads
– **PloverCRM installed** and activated on your WordPress site
– **Access to Data Sources** section in PloverCRM
– **HTTPS enabled** on your WordPress site (required for webhook security)

## How It Works

The Google Ads webhook integration follows this flow:

1. A user clicks your Google Ads ad and submits the lead form
2. Google Ads sends the lead data to your PloverCRM webhook URL
3. PloverCRM receives and validates the webhook payload
4. On first payload, PloverCRM automatically detects the form and its fields
5. You map the Google Ads form fields to your CRM fields
6. Future leads from that form are automatically imported into your CRM
7. Leads appear in your contact list with all mapped data

## Setting Up the Integration

### Step 1: Access Data Sources in PloverCRM

Navigate to **PloverCRM → Data Sources** in your WordPress admin.

Click **Add New Integration** and select **Google Ads** from the available integrations.

### Step 2: Copy Your Webhook Credentials

PloverCRM will display two important values:

**Webhook URL**
– This is the endpoint where Google Ads will send lead data
– Format: `https://yourdomain.com/wp-json/plover-crm/v1/webhook/google-ads`
– Copy this URL – you’ll paste it into Google Ads

**Webhook Key**
– This is a unique authentication key for your workspace
– It’s automatically generated based on your domain
– Format: 16-character alphanumeric string
– Copy this key – you’ll paste it into Google Ads

> **Important:** Keep your webhook key secure. Anyone with this key can send data to your CRM.

### Step 3: Configure Webhook in Google Ads

Log into your **Google Ads account** and follow these steps:

1. Navigate to **Assets → Lead form extensions** (or **Lead forms** depending on your campaign type)
2. Select the **lead form** you want to connect to PloverCRM
3. Click **Edit** or **Settings**
4. Find the **Webhook delivery** or **CRM integration** section
5. Enable webhook delivery
6. Paste your **Webhook URL** from PloverCRM into the URL field
7. Paste your **Webhook Key** from PloverCRM into the authentication/key field
8. **Save** the webhook settings

> **Note:** The exact location of webhook settings may vary depending on your Google Ads interface version and campaign type (Search, Display, Performance Max).

### Step 4: Send a Test Lead

Before PloverCRM can detect your form fields, it needs to receive at least one payload from Google Ads.

**Option A: Use Google’s Test Feature**
– In Google Ads lead form settings, look for a **Send test lead** button
– Click it to send a test payload to your webhook
– This is the fastest way to trigger form detection

**Option B: Submit a Real Lead**
– Preview your ad and submit the lead form yourself
– Or wait for a real user to submit the form
– The first real submission will trigger form detection

> **Tip:** Test leads are marked as “test” in PloverCRM and won’t be imported into your contact list. They’re only used for form detection.

### Step 5: Wait for Form Detection

Return to **PloverCRM → Data Sources → Google Ads setup**.

The setup screen will:
– Automatically check for incoming webhooks
– Display a **Refresh** button if you want to check manually
– Show a loading state while waiting for the first payload

Once the test lead or first real lead arrives:
– The form will appear in the **Source Selection** step
– PloverCRM will display all detected fields from the form
– You can proceed to field mapping

**What if the form doesn’t appear?**
– Wait 30-60 seconds and click **Refresh**
– Verify the webhook URL is correct in Google Ads
– Verify the webhook key is correct in Google Ads
– Check that the webhook settings were saved in Google Ads
– Try sending another test lead
– Check PloverCRM logs for webhook errors (if available)

### Step 6: Map Form Fields to CRM Fields

Once the form is detected, you’ll see the **Field Mapping** screen.

**Form Fields** (left side):
– These are the fields from your Google Ads lead form
– Examples: `FIRST_NAME`, `LAST_NAME`, `EMAIL`, `PHONE_NUMBER`, `COMPANY_NAME`
– Each field shows its Google Ads column ID and label

**CRM Fields** (right side):
– These are your PloverCRM contact fields
– Standard fields: First Name, Last Name, Email, Phone, etc.
– Custom fields: Any custom fields you’ve created

**Mapping Process:**

1. For each Google Ads field, select the corresponding CRM field from the dropdown
2. Map at minimum: Email (required for contact creation)
3. Map other important fields: First Name, Last Name, Phone, Company
4. Leave unmapped fields blank if you don’t need them
5. Create custom fields if needed for fields that don’t match standard CRM fields

**Metadata Fields:**

PloverCRM automatically captures these Google Ads metadata fields:
– **Lead ID** – Unique identifier for the lead
– **Form ID** – The Google Ads form identifier
– **Campaign ID** – Which campaign generated the lead
– **Ad Group ID** – Which ad group generated the lead
– **Creative ID** – Which ad creative generated the lead
– **Asset Group ID** – For Performance Max campaigns
– **Google Click ID (GCLID)** – For conversion tracking
– **Lead Stage** – Google’s lead quality indicator
– **Lead Submit Time** – When the form was submitted

You can map these to custom fields if you want to store them in your CRM.

### Step 7: Configure Routing Settings

After field mapping, configure how leads should be processed:

**Pipeline Stage**
– Select which stage new leads should be assigned to
– Example: “New Lead”, “Unqualified”, “Google Ads Lead”

**Tags** (optional)
– Add tags to identify leads from this source
– Example: “Google Ads”, “Lead Form”, “Campaign Name”

**Lists** (optional)
– Add leads to specific lists
– Example: “Google Ads Leads”, “Q2 Campaign”

**Notifications** (optional)
– Enable email notifications when new leads arrive
– Configure push notifications for mobile app

### Step 8: Save the Integration

Review your settings and click **Save Integration**.

Your Google Ads lead form is now connected to PloverCRM. Future leads from this form will automatically flow into your CRM with the field mappings you configured.

## What Data Gets Sent

When a lead submits your Google Ads form, PloverCRM receives:

**Form Fields:**
– All fields configured in your Google Ads lead form
– Common fields: name, email, phone, company, job title, etc.
– Custom questions you added to the form

**Metadata:**
– `lead_id` – Unique lead identifier
– `form_id` – Form identifier
– `campaign_id` – Campaign that generated the lead
– `adgroup_id` – Ad group that generated the lead
– `creative_id` – Ad creative that generated the lead
– `asset_group_id` – Asset group (Performance Max)
– `gcl_id` – Google Click ID for conversion tracking
– `lead_stage` – Google’s lead quality assessment
– `lead_submit_time` – Submission timestamp

**Test vs. Live Leads:**
– Test leads are marked with `is_test: true`
– Test leads are stored but not imported into contacts
– Live leads are automatically imported based on your mapping

## Understanding Form Detection

PloverCRM uses a smart form detection system:

**How Forms Are Identified:**
– Each Google Ads lead form has a unique `form_id`
– PloverCRM stores detected forms in a registry
– Forms are identified by their `form_id`, not by name

**Field Schema Discovery:**
– The first payload reveals which fields the form contains
– PloverCRM extracts field names and types automatically
– Future payloads from the same form use the same schema
– If Google adds new fields, PloverCRM merges them into the schema

**Multiple Forms:**
– Each lead form is treated as a separate source
– You need to create a separate integration for each form
– Each form needs its own first payload for detection
– This gives you granular control over field mapping per form

## Troubleshooting

### Form Not Appearing in PloverCRM

**Issue:** You sent a test lead but the form doesn’t appear in the source selection.

**Solutions:**
– **Wait and refresh:** Click the Refresh button after 30-60 seconds
– **Verify webhook URL:** Check that the URL in Google Ads exactly matches the one from PloverCRM
– **Verify webhook key:** Check that the key in Google Ads exactly matches the one from PloverCRM
– **Check HTTPS:** Your WordPress site must use HTTPS for webhooks to work
– **Confirm save:** Make sure you saved the webhook settings in Google Ads
– **Send another test:** Try sending another test lead from Google Ads
– **Check form ID:** Make sure you’re configuring the correct lead form in Google Ads

### “Invalid google_key” Error

**Issue:** Google Ads receives a 403 error when sending webhooks.

**Solutions:**
– The webhook key in Google Ads doesn’t match your PloverCRM key
– Copy the key again from PloverCRM and paste it into Google Ads
– Make sure there are no extra spaces before or after the key
– The webhook key is case-sensitive
– If you recently changed domains, the key may have changed

### Leads Not Importing into CRM

**Issue:** The form is detected and mapped, but leads aren’t appearing in your contact list.

**Solutions:**
– **Check integration status:** Make sure the integration is saved and active
– **Verify email mapping:** Email field must be mapped for contact creation
– **Check duplicate detection:** PloverCRM may be detecting duplicate leads
– **Review field mapping:** Ensure required fields are mapped correctly
– **Check routing settings:** Verify the pipeline stage is correct
– **Look for errors:** Check if there are any error messages in the integration logs

### Duplicate Leads

**Issue:** The same lead is being imported multiple times.

**Solutions:**
– PloverCRM detects duplicates by `lead_id` from Google Ads
– If Google sends the same `lead_id` twice, the second one is ignored
– Check your Google Ads webhook settings – it may be configured to send to multiple endpoints
– Verify you don’t have multiple integrations for the same form

### Missing Fields

**Issue:** Some form fields are not appearing in the field mapping.

**Solutions:**
– The test lead may not have included all fields
– Submit a real lead that fills out all form fields
– PloverCRM will merge new fields into the schema automatically
– Click Refresh in the field mapping screen to see updated fields

### Webhook Timeout

**Issue:** Google Ads reports webhook timeout errors.

**Solutions:**
– Your WordPress site may be slow or overloaded
– Check your hosting performance
– Disable heavy plugins temporarily to test
– Contact your hosting provider about webhook performance
– Consider upgrading your hosting plan

## Best Practices

**One Integration Per Form:**
– Create a separate integration for each Google Ads lead form
– This gives you cleaner field mapping and better reporting
– Easier to track which campaigns are performing best

**Map All Important Fields:**
– Always map: Email (required), First Name, Last Name, Phone
– Map company and job title for B2B campaigns
– Map custom fields for campaign-specific questions

**Use Tags for Organization:**
– Tag leads by campaign: “Q2 Campaign”, “Brand Campaign”
– Tag leads by product: “Product A”, “Service B”
– Tag leads by source: “Google Ads”, “Lead Form”

**Store Metadata in Custom Fields:**
– Create custom fields for GCLID, Campaign ID, Ad Group ID
– This data is valuable for conversion tracking and reporting
– Helps you understand which campaigns drive the best leads

**Test Before Going Live:**
– Always send a test lead first
– Verify field mapping is correct
– Check that leads appear in the right stage
– Confirm notifications are working

**Monitor Integration Health:**
– Regularly check that leads are flowing in
– Review integration logs for errors
– Test webhook periodically with test leads

**Use GCLID for Conversion Tracking:**
– Map the GCLID field to a custom field in your CRM
– Use it with Google Ads Offline Conversion Tracking
– This allows you to send conversion data back to Google Ads

## Important Behaviors

**Form Registry:**
– Each detected form is stored in PloverCRM’s form registry
– The registry persists across integration deletions
– Forms are identified by `form_id`, not by name

**Integration Deletion:**
– Deleting an integration does NOT delete the form from the registry
– The form remains available for future integrations
– This prevents data loss if you accidentally delete an integration

**Field Schema Evolution:**
– If you add new fields to your Google Ads form, PloverCRM will detect them
– New fields are automatically merged into the existing schema
– You’ll need to update your field mapping to include the new fields

**Test vs. Live Leads:**
– Test leads are stored in the event log but not imported
– Test leads are used only for form detection and field discovery
– Live leads are automatically imported based on your mapping

**Duplicate Prevention:**
– PloverCRM uses `lead_id` to detect duplicates
– If the same `lead_id` is received twice, the second is ignored
– This prevents duplicate contacts from the same lead submission

## Security

**Webhook Authentication:**
– The webhook key is required for all incoming requests
– The key is validated using constant-time comparison to prevent timing attacks
– Invalid keys receive a 403 Forbidden response

**HTTPS Required:**
– Google Ads requires HTTPS for webhook endpoints
– PloverCRM webhooks will not work on HTTP-only sites
– Ensure your WordPress site has a valid SSL certificate

**Key Generation:**
– The webhook key is deterministically generated from your domain
– The same domain always produces the same key
– The key includes a salt to prevent prediction

**Data Privacy:**
– Lead data is stored in your WordPress database
– No data is sent to third-party services
– You control all lead data and can delete it at any time

## Need Help?

If you’re having trouble setting up the Google Ads webhook integration:

1. Watch the video tutorial above for a complete walkthrough
2. Review the troubleshooting section for common issues
3. Check the webhook integration FAQs
4. Contact PloverCRM support with:
   – Your webhook URL
   – Screenshots of your Google Ads webhook settings
   – Any error messages you’re seeing
   – The form ID you’re trying to connect
