Google Ads Lead Forms

Google Ads lead form assets collect a name, email and phone number directly in the ad, without sending anyone to a landing page. Google can POST each lead to a webhook, and FloatMessage can receive it: leads land in your Submissions inbox next to your contact-form submissions, and you get the same email notification.

This is a Google Ads feature, not a Google Business Profile one. A free business listing cannot send you leads at all - see Google Business Profile for what a listing can do.

Setting it up

  1. In Submissions, open Google Ads lead forms and click Generate webhook.
  2. Copy the Webhook URL and Webhook key. They are shown once - we store only a hashed copy.
  3. In Google Ads, open your lead form asset, expand Webhook integration (optional), and paste both.
  4. Click Send test data in Google Ads. A row tagged Google Ads (test lead) should appear in Submissions within seconds.

How it is secured

Google Ads offers no request signature and no way to add custom headers, so authentication uses two independent secrets:

  • An unguessable token in the webhook URL, which only ever appeared in your dashboard.
  • The webhook key, which Google echoes back in every payload as google_key.

Both are stored as SHA-256 hashes, never as plaintext, and a request missing either one gets an indistinguishable 404 so a probe cannot learn which half was wrong. Generating a new webhook immediately invalidates the old pair, which is how you rotate after a leak.

What we store

Google's payload carries the submitted fields in user_column_data, plus identifiers for the ad that produced the lead. We keep:

Google fieldUsed for
lead_idDeduplication
user_column_dataThe submitted fields, shown in your inbox
campaign_id, adgroup_id, creative_id, form_idAttribution
gcl_idTying the lead back to the click
is_testFlagging test leads so they don't look real

Google does not guarantee a lead is delivered exactly once, so we deduplicate on lead_id. A repeat delivery is acknowledged as a success and does not produce a second row or a second email.

Troubleshooting

  • Google says the test failed. The URL or the key is wrong. Both must match exactly, with no trailing spaces. If in doubt, generate a new pair and paste both again.
  • Nothing arrives, but Google reports success. Check you are looking at the right website in the domain switcher - the webhook belongs to the website that was selected when you generated it.
  • You rotated and leads stopped. Generating a new webhook invalidates the previous URL immediately. Update Google Ads.