Google Ads
Google Ads lead form conversions are attributed to click date, not submission date
The account had five lead form assets. Two were old promotional forms attached only to removed video campaigns. One was a generic "Request a free quote" form that had been detached from everything. And two (the two that mattered), had exactly the same name.
Asset ID | Headline | Webhook | Policy status |
|---|---|---|---|
| Get a Free Quote Now | Zapier webhook: live | Approved (limited) |
| Get a Free Quote Now | Empty | Approved |
| Request a free quote now. | None | Approved |
| EOFY Bonus While Stock Lasts | None | n/a |
| EOFY Bonus While Stock Lasts | None | n/a |
Same headline, same call to action, same field set. In the interface they are indistinguishable without opening each one. One pushed every submission to the CRM through a webhook. The other had a blank webhook field and had been quietly collecting leads that nobody was automatically told about.
What we found on arrival
Every lead form link on every enabled campaign, 24 of them, had been paused during an account restructure on 24–25 August. The forms existed; nothing was serving them. Lead form submissions, which had been 8–10% of the account's conversions, went to zero.
On inspection, the links split between the two same-named assets:
Asset | Links on enabled campaigns | Link status |
|---|---|---|
| 9 | Paused |
| 14 | Paused |
| 1 | Removed |
Fourteen campaigns, including both Performance Max campaigns, had been pointed at the form with no webhook. Their leads were landing in Google Ads and nowhere else.
What we did
Two operations, in order, on 3 September.
Step | Operation | Count |
|---|---|---|
1 | Remove every link to the no-webhook form; create a link to the webhook form in its place | 14 removed, 14 created |
2 | Enable every link to the webhook form | 23 enabled |
Verification afterwards, via the API rather than the confirmation screen:
Asset | Links on enabled campaigns | Status |
|---|---|---|
| 23 | ENABLED |
| 14 | REMOVED |
Account-level lead form links ( | 0 | n/a |
Asset-group lead form links (Performance Max) | 0 | n/a |
One form serving the whole account. No leakage at the account level or through asset groups. Done.
Then the removed form kept converting
Three days later the client asked why the form they'd removed was still showing leads.
The API said it wasn't serving:
Date | Old form impressions | Old form clicks | New form impressions | New form clicks |
|---|---|---|---|---|
30 Aug | 6,014 | 197 | 0 | 0 |
31 Aug | 2,837 | 72 | 0 | 0 |
1 Sep | 3,277 | 101 | 0 | 0 |
2 Sep | 1,603 | 37 | 0 | 0 |
3 Sep (changeover 14:26) | 951 | 27 | 2,494 | 56 |
4 Sep | 0 | 0 | 5,813 | 108 |
Clean handover mid-afternoon on the 3rd. Zero impressions on the old asset from the 4th onward. A removed asset cannot serve an impression.
But the lead-form conversion report showed the old form's totals still growing.
Because conversion date is click date
Google Ads attributes a lead-form submission to the date of the click that led to it, not the date the form was submitted. And it attributes it to the asset that served on that click.
A person who clicked an ad on 29 August, saw the old form, and then came back on 5 September to submit the form on the ad they'd bookmarked (or simply had the tab open), produces a conversion dated 29 August, on the old form. For as long as the click-through lookback window runs, conversions keep arriving on days before the changeover, against the asset that was live then.
Date range in the report | Old form shows | Why |
|---|---|---|
Includes days before 3 Sep | Growing totals | Late submissions on earlier clicks |
4 Sep onward only | Zero | It didn't serve any clicks to attribute to |
The removed form wasn't receiving leads. The report was answering a different question from the one being asked.
What the day-by-day actually showed
Lead-form submissions by asset, by click date:
Date | Old form (no webhook) | New form (webhook) |
|---|---|---|
25 Aug | 7.0 | 0 |
26 Aug | 3.0 | 0 |
27 Aug | 4.0 | 0 |
28 Aug | 4.0 | 0 |
29 Aug | 7.7 | 0 |
1 Sep | 2.0 | 0 |
2 Sep | 0 | 0 |
3 Sep | 0 | 1.0 |
4 Sep | 0 | 2.0 |
Total | 27.7 | 3.0 |
Every one of the 27.7 old-form submissions was on a click date before the changeover. Every one of the new-form submissions was after it. Exactly what you'd expect if the switch was clean, which it was.
What the old form had been catching
Of those 27.7 submissions on the no-webhook form, by campaign:
Campaign | Submissions |
|---|---|
Performance Max (one state) | 13.2 |
Battery search (four campaigns) | 14.5 |
Nearly half came from a single Performance Max campaign. None of them reached the CRM through the webhook, because there was no webhook. The business had been downloading that form's leads manually from the Google Ads interface every day, which worked, as long as somebody remembered to do it, and as long as nobody assumed the automation was handling it.
That's not a lost-leads story. It's a single-point-of-failure story, and it was one holiday away from becoming a lost-leads story.
The policy flag that made the good form look worse
One more wrinkle. The working form carried a policy status of Approved (limited), with a financial-services verification flag. The no-webhook form was plain Approved.
Asset | Approval | Restriction |
|---|---|---|
Webhook form | Approved (limited) | Financial services verification missing in 11 countries: Austria, Belgium, Denmark, Finland, Hungary, Iceland, Liechtenstein, Luxembourg, Netherlands, Norway, Sweden |
No-webhook form | Approved | None |
The account advertises exclusively in Australia. The restriction had no effect: confirmed by the 5,813 impressions the form served the day after the switch. But side by side in the interface, the broken form had a clean green marker and the working form had a yellow one. Anyone tidying up by policy status would have picked the wrong one.
How to read the report correctly
If you want to know | Set the date range to | Expect |
|---|---|---|
Whether the old form is still serving | Changeover date + 1, onward | Zero impressions, zero clicks, zero conversions |
Total leads the old form ever produced | All time | A number that keeps growing for the lookback window |
Whether the new form is receiving conversions | Changeover date onward | Non-zero within a day or two |
Which form a specific conversion belongs to | Look at the click date, not the conversion date | The asset live on the click date |
If the old form shows anything in a window that starts after the changeover, something is actually still serving it, check customer_asset and asset_group_asset, the two places a form can be attached that don't show up in campaign settings.
What to do about same-named assets
Rule | Why |
|---|---|
Name lead form assets by function and something unique, an ID suffix, a date | Two identical names is how this started |
Check the webhook field on every form before pointing anything at it | An empty webhook is invisible in reports |
After any repoint, verify via impressions by date, not conversions | Conversions backfill; impressions don't |
Audit | A form can serve from three levels |
Keep the manual download as a backup, not a process | It works until it doesn't |
The principle
Google Ads reports are answers to specific questions, and the question is not always the one on the column header. "Conversions by lead form" is really "conversions by the lead form that served the click, by click date." Once you know that, the report is fine. Until you know it, it will tell you a removed asset is alive.
Related services
Filed under



