← All Guides

Google Ads Offline Conversion Import in 2026: Capture the Click ID, Store It in Your CRM, and Upload Outcomes Through Data Manager

The complete offline conversion workflow for lead businesses: storing the Google click ID and UTMs on arrival, writing them into forms and the CRM, creating import conversion actions, uploading qualified leads and closed deals through Data Manager since the June 2026 API change, and troubleshooting match rates.

Atiqul Islam
Written by Atiqul Islam

Tracking & analytics specialist. 278+ GTM, GA4 and server-side tracking projects for clients in the US, UK and Australia.

Rather not do this yourself? I set this up for clients every week. Free 15-minute audit, no obligation.

Book a Free Audit

For any business where the sale happens after the website visit, on a call, in a showroom or over weeks of follow-up, Google Ads only learns which clicks were worth paying for if you tell it. Offline conversion import is how. In 2026 the mechanics changed: uploads now flow through Data Manager, and the old Google Ads API path is closed. This guide covers the whole workflow, from capturing the click to the upload file.

The Workflow in One Picture

Visitor clicks an ad with a gclid, your site stores the gclid, the lead form writes it into the CRM, the sales team marks the lead qualified or won, a weekly export produces rows of gclid plus conversion name plus time plus value, and Data Manager uploads them into Google Ads where they attach to the original click.

Step 1: Capture the Click ID on Arrival

Add a Custom HTML tag in GTM on All Pages that stores gclid, and while you are there the UTMs, in a first-party cookie for 90 days:

<script>
(function () {
  var params = ['gclid', 'gbraid', 'wbraid', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
  var qs = new URLSearchParams(window.location.search);
  var domain = location.hostname.replace(/^www\./, '');
  params.forEach(function (p) {
    var v = qs.get(p);
    if (v) {
      document.cookie = 'lead_' + p + '=' + encodeURIComponent(v) + '; max-age=' + (90 * 86400) + '; path=/; domain=.' + domain + '; SameSite=Lax; Secure';
    }
  });
})();
</script>

gbraid and wbraid are the iOS equivalents of the gclid and are accepted in uploads.

Step 2: Write It Into Every Lead

Add hidden fields to every lead form named gclid, gbraid, wbraid and the UTMs, and populate them from the cookies on page load:

<script>
(function () {
  function cookie(name) {
    var m = document.cookie.match('(?:^|; )' + name + '=([^;]*)');
    return m ? decodeURIComponent(m[1]) : '';
  }
  ['gclid', 'gbraid', 'wbraid', 'utm_source', 'utm_medium', 'utm_campaign'].forEach(function (p) {
    var el = document.querySelector('input[name="' + p + '"]');
    if (el) { el.value = cookie('lead_' + p); }
  });
})();
</script>

Map each hidden field to a custom property in the CRM. For phone leads, a call tracking platform can capture the gclid from the session and pass it with the call record, or you rely on Enhanced Conversions for Leads matching on the phone number.

Also fire the standard website lead conversion with Enhanced Conversions at submission time, so Google stores the hashed email against the click for the leads path.

Step 3: Create the Import Conversion Actions

In Google Ads, Goals, then Conversions, then New conversion action, then Import, then CRM or other data sources, then Track conversions from clicks. Create one action per outcome you will upload, for example Qualified Lead and Closed Deal. Set:

Enable Enhanced Conversions for Leads on the action if you want email matching as a fallback.

Step 4: Build the Export

Weekly, export from the CRM every lead that reached each stage in the period, with these columns:

Column Value
Google Click ID the stored gclid, or gbraid or wbraid in their own columns
Email optional, for Enhanced Conversions for Leads
Phone optional
Conversion Name exactly as in Google Ads, for example Qualified Lead
Conversion Time the stage change timestamp, with time zone, for example 2026-10-27 14:32:00+10:00
Conversion Value number, for Closed Deal
Conversion Currency ISO code

Rows with no gclid and no email cannot match; leave them out or keep them for reconciliation only.

Step 5: Upload Through Data Manager

Since June 15, 2026 this is the supported path. Three options:

After each upload, open the upload history. It shows rows processed, matched and the reason for each failure.

Step 6: Read the Results

Within a day or two, the import actions show conversions in the Google Ads reports attached to the original campaigns and keywords. Compare cost per qualified lead and cost per closed deal across campaigns. Once Closed Deal has around 30 conversions in 30 days, switch bidding to it with values, and watch the account shift spend toward the searches that produce revenue.

Troubleshooting Match Rates

Outcome

Google Ads learns which clicks became customers, with values, and bidding optimises toward revenue instead of form fills. For lead businesses this is the single change with the largest effect on return on ad spend, and in 2026 it runs on a supported, scheduled path rather than a fragile script.

Frequently Asked Questions

Click ID or Enhanced Conversions for Leads?

Both work and can run together. Click ID matching is exact and does not depend on the user being signed in to Google. Enhanced Conversions for Leads matches on hashed email or phone and rescues leads whose click ID was lost, such as phone calls. Capture the gclid where you can and send the email too.

What changed in June 2026?

From June 15, 2026 offline conversion imports and Enhanced Conversions for Leads uploads are handled by the Data Manager API and are blocked in the Google Ads API. Uploads through the interface, scheduled sheets and connectors that moved to Data Manager continue to work. Old scripts hitting the Ads API stop.

How long do I have to upload after the click?

The conversion must fall within the action's click-through window, up to 90 days, and you must upload within that window. Uploading weekly is a sensible rhythm; daily is better for fast sales cycles.

Why are some rows not matched?

The click ID was not a Google Ads click, the gclid was truncated or altered, the conversion time is before the click, or the time zone in the upload does not match. The upload report tells you which.

Can I send values?

Yes. Include the deal value and currency per row, and set the conversion action to use the uploaded value. Then value-based bidding can optimise toward revenue rather than lead count.

Want This Done Right the First Time?

Book a free 15-minute audit call. I'll review your setup, show you what is broken, and tell you exactly what it takes to fix it.

Chat Now