Google-Hosted Lead Forms: Get Leads Into Your CRM

digital advertising
Overhead photo of an open wooden index card file box full of blank contact cards on a mustard yellow backdrop, representing leads stored inside Google Ads hosted lead forms
A card box is not a CRM. Neither is the new Leads screen.

What are Google-hosted lead forms, and what's the catch?

Google-hosted lead forms let someone submit their name, email and phone without ever leaving Google, and the new Leads screen in Google Ads stores those leads for no more than 60 days, so you need a webhook into your CRM from day one. The form is convenient for the searcher. The storage is convenient for Google. Neither one follows up with the lead for you.

Three changes landed this year and they stack:

  • A Leads screen inside Google Ads. It sits under Conversions and shows each lead's name, email, phone, submission time, form name and stage. It was first spotted on June 1, 2026, and PPC Land's write-up covers the details.
  • Google-hosted forms rolling out. Since late June a limited group of advertisers can run forms that live entirely inside Google, with no landing page in between.
  • A lower bar for lead form assets. The old requirement of more than $50,000 in lifetime spend is gone from the documentation. Account verification and policy history are what's left.

Put together, a lot of small accounts that never had lead forms are about to get them. Most of those accounts have a CRM. Few of them have a webhook.

Why can't you just work leads from the Leads screen?

Because it forgets. Leads are kept for at most 60 days, and anything Google classes as sensitive is kept for at most 30. After that the record is gone, along with whatever stage you set on it.

The Leads screen is a backup inbox, not a CRM. It has four stages (raw, qualified, converted, lost) and a filter bar. That's it. There's no task assignment, no text or email follow-up, no notes from a sales call and no tie to revenue. And somebody has to remember to log into Google Ads to see that a new lead arrived, which in our experience is the step that quietly stops happening around week three.

The bigger problem is speed. A hosted form lead is often the warmest lead you'll get that day, and also the one that knows the least about you. They tapped an ad, the form pre-filled from their Google account, they hit submit. They never saw your website. If your first contact comes a day later, a lot of them won't remember filling anything out.

How does the Google Ads lead form webhook work?

You add a webhook URL and a key to the form's lead delivery settings. Each time someone submits, Google sends a JSON POST to that URL. According to Google's webhook implementation guide, the payload includes:

  • lead_id: the unique ID for the lead. This is your dedupe key.
  • user_column_data: the answers, as a list of column_id / string_value pairs (plus a column_name that isn't always populated).
  • google_key: the key you set on the form. Check it on every request.
  • gcl_id: the click ID. You need this later to send outcomes back.
  • form_id, campaign_id, adgroup_id, creative_id and, for Performance Max, asset_group_id.
  • is_test: true when you hit "send test data" in the UI.
  • lead_stage, lead_submit_time (ISO-8601) and lead_source, which is either LEAD_FORM or CONVERSATIONAL_AGENT.

That last value is worth noticing. Google is already labeling leads that came through a conversational agent rather than a static form. If you're also looking at Google's AI calling businesses on behalf of searchers, it's the same direction: more of the first conversation happens inside Google.

The response rules are short. A 200 means delivered. A 4XX is treated as your fault and isn't retried. A 5XX is retried. Google also says plainly that a single lead isn't guaranteed to arrive exactly once.

What does a reliable lead form to CRM setup look like?

Here's the order we build it in. Most of the failures we see on audits come from skipping steps 3 and 6.

1. Store first, respond second

The endpoint writes the raw payload somewhere durable before it does anything clever, then returns 200. If your CRM is down and you return 200 anyway, the lead is gone, and Google won't retry it. If the write fails, return a 5XX so Google tries again.

2. Reject bad keys and test leads

Compare google_key with the key you saved. Mismatch, return 401 and log it. If is_test is true, store it in a test table and stop. Test leads that reach the CRM end up in follow-up sequences and in your lead counts, and they're annoying to clean out.

3. Deduplicate on lead_id

Retries plus "not exactly once" means duplicates will happen. Make lead_id a unique field in your CRM or database and upsert on it. A duplicate contact is mildly annoying; a duplicate follow-up sequence that texts a new lead twice in two minutes is a lost lead. We covered the general pattern, with a Postgres unique constraint in front of the CRM write, in fixing duplicate n8n webhook executions.

4. Map by column_id, not column_name

column_name is human-readable text and is documented as not always being populated. column_id always is. Build the field map on IDs, and keep a fallback that dumps any unmapped answers into a notes field so a new question added to the form doesn't silently vanish.

5. Save the attribution fields on the contact

Write gcl_id, campaign_id, adgroup_id, form_id, lead_source and lead_submit_time to the contact record. You'll want the campaign fields for reporting. You need gcl_id for step 7.

6. Fire the follow-up from the CRM write

Start the sequence from the successful CRM write, not from the webhook itself. That way a lead that failed to save never gets a message that references a record nobody can find. Our default for service businesses is a text inside a minute, then a call task or an AI voice agent call that qualifies the lead, then email. Because the person never saw your site, the first message has to say who you are and why you're contacting them, in one line.

7. Send outcomes back to Google Ads

Hosted forms remove friction, and removing friction raises volume and lowers average quality. If Smart Bidding only sees form submits, it will find more people who submit forms. Send qualified and closed leads back with the stored gcl_id (and hashed email or phone) through enhanced conversions for leads. Since June 15, 2026, new integrations can't upload those through the Google Ads API anymore and have to use the Data Manager API, which we walked through in the Data Manager API migration. If junk is already getting through, the filters in stopping Smart Bidding from learning on invalid leads apply here too.

Should you use n8n or a native CRM integration?

Both work. The choice depends on what happens after the lead lands.

  • Native integration (HubSpot, Salesforce, Zapier-style connectors): fine when the lead just needs to become a contact and enter one sequence. Check that it dedupes on lead_id. Many don't, and they key on email instead, which fails the moment someone uses a different address.
  • n8n (self-hosted or cloud): better when you need routing by service or location, enrichment, a voice agent call, writes to two systems, or the outcome upload back to Google. You own the dedupe and the error handling, which is the point.
  • Custom endpoint on your own backend: right if you already run one and have a dev team. Same rules: store, verify, dedupe, respond.

Whichever you pick, add a daily check that compares the count in the Leads screen against what reached the CRM for the same day. If the numbers don't match, something is dropping leads, and the Leads screen gives you a 60-day window to find out why. That reconciliation is the one thing the Leads screen is genuinely good for.

Are hosted forms better than sending people to a landing page?

Not automatically. They usually win on cost per lead and lose on lead quality, and which one matters more depends on what happens after the form. A landing page also does work a form can't: it explains the offer, sets a price expectation and filters out people who aren't a fit.

Our practical rule:

  • Hosted forms make sense when speed beats education. Emergency home services, simple quote requests, local businesses where the phone call does the selling.
  • Landing pages still win when the buyer needs context before talking to you, or when your sales team is small and every bad lead costs a real hour.
  • Run both in separate campaigns for a few weeks and compare cost per qualified lead, not cost per lead. Same principle as Facebook lead ads for service businesses: instant forms always look great until you count the ones that answer the phone.

Our take

Google is building a small CRM inside Google Ads, and it's not trying to be your CRM. The 60-day limit makes that clear. What it's doing is keeping more of the lead journey on Google's side: the form, the lead list, and now conversational agents with their own lead_source value.

That's fine, as long as the lead also lands somewhere you control within seconds. Set up the webhook before you turn the form on, dedupe on lead_id, follow up fast, and send closed deals back to bidding. Skip any one of those and the lower barrier to lead forms just means paying Google for leads that expire in a box. If your follow-up itself needs work, start with CRM automation for lead follow-up.

Get a free automation audit

We'll check your Google Ads lead forms, webhook delivery, CRM dedupe and offline conversion uploads, and show you where leads are being dropped or counted wrong.

Get a Free Automation Audit and we'll map the lead flow from form submit to closed deal.