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:
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:
- A user clicks your Google Ads ad and submits the lead form
- Google Ads sends the lead data to your PloverCRM webhook URL
- PloverCRM receives and validates the webhook payload
- On first payload, PloverCRM automatically detects the form and its fields
- You map the Google Ads form fields to your CRM fields
- Future leads from that form are automatically imported into your CRM
- 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:
- Navigate to Assets → Lead form extensions (or Lead forms depending on your campaign type)
- Select the lead form you want to connect to PloverCRM
- Click Edit or Settings
- Find the Webhook delivery or CRM integration section
- Enable webhook delivery
- Paste your Webhook URL from PloverCRM into the URL field
- Paste your Webhook Key from PloverCRM into the authentication/key field
- 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:
- For each Google Ads field, select the corresponding CRM field from the dropdown
- Map at minimum: Email (required for contact creation)
- Map other important fields: First Name, Last Name, Phone, Company
- Leave unmapped fields blank if you don’t need them
- 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:
- Watch the video tutorial above for a complete walkthrough
- Review the troubleshooting section for common issues
- Check the webhook integration FAQs
- 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
