Offline conversion tracking sends the outcome of a lead, such as a call that became a sale or a CRM deal marked won, back to Google Ads against the click that started it. Since 15 June 2026 those uploads go through the Data Manager API and are blocked in the Google Ads API for most accounts, which makes older guides wrong. Capture the GCLID and the lead's email or phone at form submit, then upload them with a timestamp when the deal closes. Use enhanced conversions for leads for new setups.
A form submission is a promise. The sale, if it comes, happens later, usually on a phone call or inside your CRM, where Google Ads cannot see it. Offline conversion tracking is how you tell Google about it afterwards: this lead became a customer, and it began with that click.
Done well, it changes what your bidding learns from. Instead of optimising for form fills, Google Ads can optimise for the enquiries that closed. This guide covers how to set that up today, starting with the change that makes most of what you will find online out of date. For the wider context, see conversion tracking software that names the lead.
What changed on 15 June 2026
From 15 June 2026, offline conversion import and enhanced conversions for leads uploads moved to the Data Manager API. Google Ads Help states that they will be migrated to that API and blocked in the Google Ads API. The exception is accounts on allowlisted legacy developer tokens.
In practice this means three things:
- A script, connector or CRM integration that uploaded conversions through the Google Ads API will stop working unless it has been moved or is allowlisted.
- Guides that tell you to write code against the Google Ads API conversion upload methods describe the old route.
- Which route a given tool uses decides whether it still works, so check that before you assume it does.
If a tool uploads your conversions for you, ask its vendor whether it now uses the Data Manager API. If it does not know, check that conversions are still arriving before you trust the numbers.
GCLID or enhanced conversions for leads
There are two ways to match an offline outcome to a click, and they work differently.
- GCLID import
- When someone clicks an ad with auto-tagging on, Google appends a click ID to the landing page URL. You store that ID with the lead. When the deal closes, you upload the ID, a conversion name and a timestamp. Google matches on the ID. It is the older route and it is labelled legacy for new setups.
- Enhanced conversions for leads
- You send the lead's email address or phone number, hashed, along with the conversion. Google matches the hash to a Google account that interacted with your ads. It is Google's recommended path for new setups.
The practical difference shows up when the click ID was never saved. A GCLID that was stripped by a redirect, lost by a form that does not pass hidden fields, or never captured because the visitor arrived on a different page than expected leaves you nothing to upload. Enhanced conversions for leads still attributes in that case, because the email or phone number is enough.
That does not make the GCLID irrelevant. Google still asks you to send it whenever possible, even with enhanced conversions for leads switched on, and it is required if you are not using a tag to collect the user-provided data. The best setup captures both and sends both.
What to capture when the form is submitted
Everything the upload needs has to be saved at the moment of submission, because by the time the deal closes the visitor is long gone. Store these against the lead record:
- The GCLID. Auto-tagging must be on in Google Ads, otherwise there is no click ID to capture. The ID arrives in the landing page URL, so a hidden field has to carry it through to the submission.
- The email address and phone number. Enhanced conversions for leads needs at least one of them.
- The time of the click or submission. You will need a conversion timestamp later. The close date is not the same thing; see below.
- The source and campaign. These do not go to Google. You keep them so you can tell, in your own reporting, which campaigns produce the deals that close.
This capture step is where most offline setups fail. The upload is straightforward once the data exists. The data usually does not, because the form never saved the click ID. A tool like Lead Source records the source channel, campaign, landing page and full page journey behind every form submission, so the record already holds what you will want at close.
What to upload when the deal closes
Each conversion you upload needs a conversion timestamp and at least one of three identifiers: a GCLID, user-provided data, or a BRAID. The timestamp is the moment the conversion happened, with its time zone. For an offline sale that is when the deal closed, not when the form was submitted.
Three more fields are recommended and worth including:
- An order ID. Google uses it to prevent the same conversion being imported twice. It is optional in the sense that uploads work without it, and it is the cheapest protection against duplicates you will ever add.
- A conversion value. Only if you have a real figure, such as the deal amount. Leave it out rather than guess.
- A currency code. An ISO 4217 code such as USD or GBP, sent with the value.
You also need to respect the time limits. Google Ads Help says GCLID-based conversions uploaded more than 90 days after the click will not be imported, and conversions that rely on user-provided data are accepted up to 63 days after the click. A deal that closes four months after the click cannot be credited by GCLID, which is a good reason to upload at every stage and not only at the end, for example when a lead becomes qualified.
Hashing and required fields
User-provided data must be hashed with SHA-256 before it is uploaded, and it must be normalised first or the hash will not match. For an email address that means lowercasing it and removing any whitespace before hashing. A trailing space or a capital letter produces a different hash and a failed match, with no visible error beyond a low match rate.
A short checklist before any upload:
- Normalise the email: lowercase, no spaces.
- Hash it with SHA-256.
- Attach the GCLID as well, wherever you have it.
- Add the conversion timestamp, including the time zone.
- Add the order ID, and the value and currency code if you have them.
If you upload through a connector, the connector does the hashing. Check that it normalises first. A connector that hashes without normalising quietly loses part of your matches.
The duplicate trap
The mistake that costs the most is double counting the same close. It happens when a conversion is both uploaded offline and also counted by a tag, or when the same upload runs twice because a sync was retried.
Two habits prevent it. Send an order ID with every upload so Google can recognise a repeat. And keep the offline action separate from your website action: the form submission is one conversion action, the closed sale is another, and each is imported on its own. If both are set as primary and describe the same lead, bidding will count that person twice at two different moments.
Once the setup works, connect it to a CRM that already holds the identifiers. The CRM pages under HubSpot, Salesforce and Pipedrive explain how the source lands on the record, which is the same record you will export from at close. If you have not yet set up the website side, start with Google Ads conversion tracking setup.
What offline conversions cannot tell you
An upload tells Google that a click led to a sale. It does not tell you which campaign was best across all your channels, because Google only sees its own. Google only sees the clicks on its own ads, so a lead who also arrived through an organic listing or a referral shows you only part of the route.
That is the gap a lead record fills. It holds the first touch and the last touch together, so you can compare outcomes by channel in your own CRM or reporting, not only inside one ad platform. The conversion tracking page explains how that works. And if the terms in this post are new, what conversion tracking is sets out the basics.