Offline conversion import and enhanced conversions for leads for B2B SaaS
Google Ads optimises for what you send it. If it only sees form fills, it finds people who fill forms. To send it qualified leads, either import offline conversions with the GCLID (capture the click ID on the form, store it in the CRM, upload when the lead qualifies) or use enhanced conversions for leads (the Google tag sends hashed form data such as email at submit, and you later upload the qualified lead matched on that hashed email, no GCLID needed). Then make the qualified-lead action primary and the form fill secondary.
Which method
| GCLID import | Enhanced conversions for leads | |
|---|---|---|
| Links lead to click by | The gclid stored on the lead | Hashed email (or phone) captured at form submit |
| Site work | Hidden form field filled with gclid from the landing URL | Turn on user-provided data collection in the Google tag |
| CRM work | A gclid field that survives lead conversion | The email you already store |
| Breaks when | The click ID is lost on redirects or in form tools, or iOS traffic arrives with gbraid/wbraid instead | The person submits one email and buys with another |
A common setup: enhanced conversions for leads as the main method, gclid capture kept as a backup.
Setup
- Pick the stages. Usually form submit, sales-qualified lead (or meeting held), opportunity, closed won. Only use stages your CRM records with a timestamp you trust.
- Create one Google Ads conversion action per stage as an import from clicks, or through the CRM connection you use. Count lead stages as One per click.
- Capture the identifier on the site. For GCLID: read
gclidfrom the landing URL, keep it in a first-party cookie for later pages, and write it into a hidden form field. For enhanced conversions for leads: turn it on in Google Ads, accept the customer data terms, and make sure the Google tag picks up the email from the form at submit. - Carry it through the CRM. Check the field is still there when a lead becomes a contact, opportunity or deal. Most setups lose data here without anyone noticing.
- Upload. HubSpot and Salesforce have native Google Ads connections. Otherwise use scheduled uploads (Google Sheets, HTTPS or SFTP) or the Google Ads API. Each row needs the identifier, conversion action name, conversion time with timezone, and a value if you have one. Upload daily.
- Check diagnostics on the conversion action in Google Ads. Match rates and upload errors show there.
What to make primary
The stage closest to revenue that still happens often enough for bidding to learn from. For most SaaS teams that is the qualified lead or booked meeting, not closed won: too few deals, months late. Once the qualified-lead action has a few weeks of data, set the raw form submit to secondary so bidding stops buying junk form fills.
Add values where you can. Closed won with the deal value, earlier stages with an estimate (average deal value × that stage's close rate). Value-based bidding then prefers leads that become bigger deals.
Timing
An upload only counts inside the conversion action's click-through window, which is at most 90 days. Long sales cycles lose the final deal, which is one more reason to optimise on an earlier stage. Upload often: a qualified lead sent a month late teaches bidding a month late.
What you can check from outside
Whether the Google tag is on your form pages, whether a conversion fires on submit, and whether competitors send a qualified-lead stage at all. Upload health and primary settings live inside the account.
FAQ
Do I need a GCLID for enhanced conversions for leads?
No. It matches on hashed user data captured at form submit, usually email. Keeping the GCLID too does no harm and helps when emails don't match.
Should closed won be my primary conversion?
Usually not on its own: too few deals, too late. Optimise on a qualified lead or meeting, pass values, and keep closed won as a reported action.
Run all nine checks on your site, free.
Fireshift reads what your site tells Google Ads, GA4 and Meta from the outside. No install, about a minute.
Get my Leak Score