Offline conversion imports: closing the loop from CRM to Google Ads
For considered purchases, the sale happens days after the click, in your CRM — not on the site. Offline conversion imports feed that back to Google Ads so it can optimize toward real revenue.
Offline conversion imports send the outcome of a lead back to Google Ads — the deal that closed six weeks after the form was submitted, with its actual value. This is what lets Smart Bidding optimise for revenue instead of form fills, and for most lead-generation businesses it is the highest-impact change available. The mechanism is a click identifier captured at form submission, stored on the lead record, and returned when the outcome is known.
The problem it solves
A lead-gen business optimising on form submissions is telling Google that all leads are equal. They are not: some are enterprise deals, most are tyre-kickers, and a meaningful share are spam.
Google's bidding will faithfully find you more of whatever you told it to value. Optimise on form fills and you get more form fills — disproportionately the cheap, low-quality kind, because those are easiest to generate.
Offline conversion import closes the loop. You tell Google which clicks became revenue, and how much, and bidding shifts toward the clicks that resemble those.
How it works
Three steps, and the first one is the one that gets skipped:
1. Capture the click ID at the form
When someone arrives from a Google ad with auto-tagging enabled, the URL carries gclid. Capture it on landing, persist it, and submit it as a hidden field with the form:
// On landing
const gclid = new URLSearchParams(window.location.search).get('gclid');
if (gclid) {
sessionStorage.setItem('gclid', gclid);
document.cookie = 'gclid=' + gclid + ';max-age=7776000;path=/';
}
// On form submit — populate a hidden field
form.querySelector('[name=gclid]').value =
sessionStorage.getItem('gclid') || '';
Capture wbraid and gbraid too where present — they appear in place of gclid for some app and privacy-restricted journeys.
If you do not capture the click ID, none of the rest is possible. It exists only on the landing URL and only for that visit; there is no way to reconstruct it later.
2. Store it with the lead
The click ID goes onto the lead record in your CRM, alongside the timestamp of the click. It must survive every stage of your pipeline — lead to opportunity to closed deal — which usually means a custom field and a small amount of process discipline.
3. Upload the outcome
When the deal closes, upload a conversion keyed on the click ID: the conversion action name, the click ID, the conversion time, the value, and the currency.
Options for the upload itself: a scheduled file upload, an automated pipeline through the API, or a native CRM integration if yours offers one. The API path is worth the effort for anything beyond low volume — manual uploads become a job someone forgets.
The alternative: Enhanced Conversions for leads
If capturing and persisting the click ID through your CRM is not feasible, the hashed-identifier route often is. Instead of the click ID, you key the upload on hashed customer data — typically email — collected at form submission.
Google matches the hash to the original ad interaction. It requires the same normalisation discipline described in Enhanced Conversions explained: lowercase, trim, E.164 phone format, then SHA-256.
| Click ID import | Enhanced Conversions for leads | |
|---|---|---|
| Keyed on | gclid / wbraid / gbraid | Hashed email or phone |
| Requires | Click ID captured and stored | Identifier captured and stored |
| Match rate | Very high when captured | Good, depends on data quality |
| Breaks when | Landing page drops the capture | Normalisation is wrong |
Many businesses end up running both, since the failure modes are independent.
What to upload as the value
This decision matters more than the mechanics.
Closed revenue is the ideal: bidding optimises toward actual money. Requires the full pipeline to be tracked.
Pipeline value at a qualified stage is a reasonable compromise when sales cycles are long — a conversion at "qualified opportunity" with an expected value gets signal to Google months earlier than waiting for the close.
A staged model is what mature accounts converge on: a small value at qualification, the real value at close, as separate conversion actions. Bidding gets early signal and later correction.
Whatever you choose, be consistent. Switching the definition mid-quarter makes performance comparisons meaningless.
Timing constraints
Google requires the conversion to be uploaded within the conversion window configured on the action, and imports have a minimum delay after the click before they can be processed. If your sales cycle is longer than the window, extend the window — attribution windows covers the trade-offs.
Upload frequency should be at least weekly. Daily is better: bidding algorithms respond to recent signal, and a monthly batch teaches slowly.
Verifying it works
- Check import status in Google Ads after each upload. Errors are reported per row — unmatched click IDs, out-of-window conversions, malformed values.
- Watch the match rate. A low rate usually means click IDs are not being captured on all landing pages, or are being lost in a redirect.
- Confirm conversions appear against the correct campaigns, not just in the account total.
- Check bidding behaviour over a few weeks — cost per qualified lead should move even as cost per raw lead rises, which is the intended outcome and worth explaining to stakeholders in advance.
FAQ
What is a gclid and where do I get it?
It is the Google click identifier appended to your landing URL when auto-tagging is enabled. Capture it from the query string on the landing page — it is not available anywhere else, and not later.
What if my landing pages do not capture the click ID?
Then click-ID imports are not possible for those leads. Use Enhanced Conversions for leads with hashed identifiers instead, and fix the capture going forward.
How long do I have to upload an offline conversion?
Within the conversion window configured on the conversion action. If your sales cycle exceeds it, lengthen the window before relying on late uploads.
Should I upload closed revenue or pipeline value?
Closed revenue gives the best signal quality; pipeline value at qualification gives faster signal. Long sales cycles usually justify a staged approach with both, as separate conversion actions.
Will offline imports make my cost per conversion look worse?
Often, yes — and that is the point. You are switching from counting cheap form fills to counting real outcomes. Set that expectation with stakeholders before the numbers change.
Start by confirming the click actually reaches a page with working conversion tracking: the free tracking audit checks Google Ads tag presence and consent signals on any URL.
See where your tracking stands
Run the same 13-check audit referenced in this post against any URL. No signup, results in seconds.