Skip to content
Cover illustration for Google Ads offline conversion import: how to upload CRM conversions through Data Manager

Google Ads offline conversion import: how to upload CRM conversions through Data Manager

How to get offline and CRM conversions into Google Ads after the June 15, 2026 move to the Data Manager API: who has to act, GCLID import vs enhanced conversions for leads, each upload route step by step, field mapping, checks and common errors.

Jamie IsabelBy 12 min read

Google Ads offline conversion import sends outcomes from your CRM, such as qualified leads and closed deals, back to Google Ads and matches them to ad clicks. Since June 15, 2026, Google’s route for these uploads is Data Manager: in the Google Ads UI for files and connectors, or the Data Manager API for code.

This guide is part of our offline conversions series. It covers the Google Ads side only. For the tag-side setup of enhanced conversions, see the enhanced conversions guide.

What changed on June 15, 2026

Google moved offline conversion imports to the Data Manager API. The Google Ads API deprecations page sets out the rule:

  • The date. From June 15, 2026, offline conversion uploads through the Google Ads API are restricted.
  • Who is restricted. Developer tokens with no offline conversion upload requests between December 17, 2025 and June 15, 2026. The allowlist is per developer token, not per Google Ads account.
  • What breaks. UploadClickConversions requests from those tokens return a CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE error.
  • What it covers. Google’s Developer Blog announcement says this includes enhanced conversions for leads.
  • What to do. Migrate the workflow to the Data Manager API.

Google’s help center and the blog post describe the activity window in looser terms. Use the deprecations page for the exact dates. Tokens that were active can keep uploading through the Google Ads API while they integrate, according to the blog post. But Google’s upgrade guide recommends the Data Manager API for current and future offline conversion and enhanced conversions for leads uploads.

Two more changes sit around it. Since February 2, 2026, new adopters can’t send session attributes or IP addresses with conversion imports in the Google Ads API. And on September 9, 2026, Google sunset developer tokens and moved API access to Google Cloud projects. The deprecations page says the offline conversion restriction “remains in effect.”

Who needs to act

Find the way you upload today. Each line says what Google’s documentation means for it.

  • Your own script or in-house integration calls UploadClickConversions. If it sent no offline uploads between December 17, 2025 and June 15, 2026, it is already blocked. If it did, Google’s blog post says it can keep uploading while you integrate, so plan the move to the Data Manager API now.
  • You are building a new integration. Start on the Data Manager API. New adopters can’t use the Google Ads API for offline conversion uploads.
  • You import through Data Manager in your Google Ads account. This is the route Google recommends, with no API code on your side. Check that each connection is still running.
  • You upload files under Goals, then Conversions, then Uploads. Google labels this file import as legacy. Enhanced conversions for leads only supports Data Manager files, so move file uploads into Data Manager when you upgrade.
  • A third-party tool sends your uploads. Google names Zapier and HubSpot as third-party import methods. For any tool, ask which API it calls. If it uses the Google Ads API, it needs an allowlisted integration or a move to the Data Manager API.
  • You still rely on the old Salesforce connector. Google stopped supporting the legacy Salesforce integration on May 31, 2025. Move to the Data Manager Salesforce connection.

GCLID import vs enhanced conversions for leads

Both send conversions to an Import from clicks conversion action. The difference is how Google matches them to an ad. Google now calls GCLID-only import a legacy feature and recommends enhanced conversions for leads for new setups.

Match key

GCLID import

The Google click ID: gclid, or gbraid and wbraid on iOS traffic

Enhanced conversions for leads

Hashed email, phone or address, plus the GCLID when you have it

1 / 6

From Google Ads Help on upgrading offline conversion import and on upload windows, October 2026.

Since April 2026, enhanced conversions for web and for leads share one on/off setting, and existing users were moved over automatically (Google Ads Help). Google’s advice is to upload every conversion: those with only a GCLID, those with both, and those with only customer data. If your GCLID imports record but enhanced conversions for leads shows alerts, see enhanced conversions for leads not working.

What you need before you start

  1. Auto-tagging turned on in Google Ads, so ad clicks carry a GCLID. iOS traffic may carry GBRAID or WBRAID instead.
  2. A form that saves the click ID, email, phone, a timestamp and the consent choice on each new lead, and a CRM that keeps them on the contact and links every deal back to it.
  3. An Import from clicks conversion action for each CRM stage you will send, such as qualified lead or closed won. Google says to wait 4 to 6 hours after creating one before the first upload.
  4. Enhanced conversions turned on, with customer data terms accepted, if you will send hashed customer data.
  5. Admin access to the Google Ads account that owns the conversion action. Google’s Data Manager guides ask for administrative access, and the API accepts Admin or Standard but not Read-only.
  6. For the API route only: a Google Cloud project with the Data Manager API enabled.

Click IDs arrive in the landing page URL and are easy to lose before the form. Our default is to store them in a first-party cookie set from your own tracking domain, such as a server-side Google Tag Manager container on a subdomain like sgtm.example.com. Google recommends serving the server container from the same origin as your site, because cookies the server sets need the two to share a domain (custom domain guide). The server-side tagging guide covers the setup.

A lead record keeps a click ID, a timestamp and contact details together before the later outcome is sent to the ad platform.

How to upload offline conversions to Google Ads

There are four routes. Pick the first one that fits: the UI routes need no code, and the API route suits teams that already run their own pipeline.

1. A Data Manager connection in Google Ads

Data Manager connects a data source to a conversion action and imports from it on a schedule or on demand. Google’s supported data sources for offline conversion import include HubSpot, Salesforce, Zoho CRM, ActiveCampaign, Klaviyo, Google Sheets, Google Drive, BigQuery, Snowflake, Amazon S3, SFTP and HTTPS. The steps below follow Google’s Google Sheets guide. Other sources work the same way, with their own sign-in step. For HubSpot lifecycle stages and deals, see the HubSpot offline conversions guide.

  1. In Google Ads, open Goals, then Summary, and click + New conversion action.
  2. Click Import, then select CRMs, files, or other data sources, and choose a tracking method.
  3. Under Data source, select Connect a new data source, then pick your source and Direct connection.
  4. Select Conversions as the use case, accept the customer data policy, and click Continue.
  5. Sign in to the source and choose the file, object or table to import.
  6. Optionally, add filters so only the right rows import, such as deals at one stage.
  7. Map your columns to the Google Ads fields, and set a fallback time zone for the conversion time.
  8. Name the connection, click Finish, then Save and continue.

Data Manager hashes customer data for you if you send it unhashed. Each run re-reads a set window of data. Per Google’s data preparation guide, file sources such as Sheets, SFTP and HTTPS import the last 90 days on every run. HubSpot and Salesforce import 14 days on the first run, then changes since the last run. Database sources such as BigQuery import the last 14 days each time.

For Salesforce, Google’s Salesforce guide supports the Order, Lead and Opportunity objects, with one connection per object. It doesn’t support sandbox environments.

2. A scheduled file upload

You can still schedule a file under Goals, then Conversions, then Uploads. Google’s file import guide now labels this route legacy, and enhanced conversions for leads only supports Data Manager files. Use it for GCLID-only uploads you already run, and set up new file imports through route 1.

  1. In Google Ads, click Goals, then the Conversions drop-down, then Uploads.
  2. Click Schedules along the top of the page, then the plus button.
  3. Choose the source: Google Sheets, HTTPS or SFTP. For HTTPS or SFTP, enter the file URL, username and password.
  4. Pick a frequency and a time for the import.
  5. Click Save & preview. The schedule won’t save if Google Ads can’t reach the file or the file isn’t formatted properly.

The file needs a Parameters:TimeZone row, such as Parameters:TimeZone=America/Chicago, and the conversion action name must match exactly, including capitalization. For scheduled uploads, hash email and phone with SHA-256 before they go in the file. Google suggests waiting 6 hours after the click when you use scheduled uploads.

3. A third-party connector

If your CRM isn’t a direct Data Manager source, Google points to third-party integrations. Its upgrade guide names Zapier and HubSpot and says to follow their own instructions for adding user-provided data to the import. Before you rely on any connector, check which Google API it uses and whether it sends GBRAID, WBRAID and consent as well as the GCLID.

4. The Data Manager API

Use this route for your own pipeline, or to replace a Google Ads API integration. Google’s offline conversions overview has four parts: prepare destinations, prepare events, send the request, then check diagnostics.

  1. Enable the Data Manager API in a Google Cloud project, and set up credentials with the https://www.googleapis.com/auth/datamanager scope (set up access).
  2. Build the destination. The operatingAccount must be the Google Ads account that owns the conversion action. The productDestinationId is the numeric ID of that action, whose source is Website (Import from clicks).
  3. Build each event: the time, an event source such as WEB and at least one identifier, plus the transaction ID, value and currency when you have them.
  4. Normalize and SHA-256 hash email, phone and name fields, per the formatting guide, and set the request’s encoding to HEX or BASE64.
  5. Send a test with validateOnly: true. Then send for real, with up to 2,000 events per request.
  6. Save the requestId from each response so you can check how it was processed.
Data Manager API: one offline conversion
POST https://datamanager.googleapis.com/v1/events:ingest

{
  "destinations": [{
    "operatingAccount": { "accountType": "GOOGLE_ADS", "accountId": "<CUSTOMER_ID>" },
    "loginAccount": { "accountType": "GOOGLE_ADS", "accountId": "<LOGIN_CUSTOMER_ID>" },
    "productDestinationId": "<CONVERSION_ACTION_ID>"
  }],
  "encoding": "HEX",
  "validateOnly": true,
  "events": [{
    "eventTimestamp": "2026-10-20T15:07:01-05:00",
    "transactionId": "deal_10427",
    "eventSource": "WEB",
    "conversionValue": 12000,
    "currency": "USD",
    "adIdentifiers": { "gclid": "<GCLID>" },
    "userData": {
      "userIdentifiers": [
        { "emailAddress": "<SHA-256 hex of the normalized email>" },
        { "phoneNumber": "<SHA-256 hex of the E.164 phone>" }
      ]
    },
    "consent": { "adUserData": "CONSENT_GRANTED", "adPersonalization": "CONSENT_GRANTED" }
  }]
}

If you are moving off the Google Ads API, most of the change is in the request, not the data. Google’s upgrade guide lists the differences:

Offline upload access

Google Ads API

Restricted since June 15, 2026 to integrations active between December 17, 2025 and June 15, 2026

Data Manager API

Open to new and existing integrations

1 / 7

From Google’s Data Manager API upgrade guide and the Google Ads API deprecations page, October 2026.

One gap to plan for: the Data Manager API doesn’t support conversion retractions. You can restate a conversion’s value, but its count stays the same.

Field mapping

The same data goes into every route under different names. These are the fields that matter for matching, deduplication and value.

WhatFile or Data Manager columnData Manager APINotes
Click IDGoogle Click ID (GCLID)adIdentifiers.gclidRequired for GCLID import. Keep sending it with enhanced conversions for leads.
iOS click IDsGBRAID, WBRAIDadIdentifiers.gbraid, adIdentifiers.wbraidSend whenever the landing URL had one.
EmailEmailuserData.userIdentifiers[].emailAddressTrimmed and lowercase. For gmail.com and googlemail.com, also remove dots and anything from a plus sign before the @. Then SHA-256. Data Manager in the UI can hash it for you.
PhonePhone numberuserData.userIdentifiers[].phoneNumberE.164 format, such as +18005550199, then SHA-256.
Conversion actionConversion Name, or the action the connection feedsdestinations[].productDestinationIdThe numeric conversion action ID in the API, not its name.
Conversion timeConversion Time, with a time zoneeventTimestampRFC 3339 in the API. A row with no time zone and no fallback isn’t imported.
Value and currencyConversion Value, Conversion CurrencyconversionValue, currencyCurrency units, not micros: 5.23, not 5230000. ISO 4217 currency code.
Order or deal IDOrder IDtransactionIdUsed to deduplicate, and to adjust the conversion later.
Event sourceEvent sourceeventSourceRequired in the API, such as WEB or CALL.
ConsentAd User Data, Ad Personalization (file template)consent.adUserData, consent.adPersonalizationCONSENT_GRANTED or CONSENT_DENIED. Google highly recommends filling it in.
Session attributesSession attributesadIdentifiers.sessionAttributesThe encoded string captured on the form. Useful when there is no click ID.
IP addressUser IP addressadIdentifiers.landingPageDeviceInfo.ipAddressNot hashed. Google doesn’t support IP matching for users in the EEA, UK or Switzerland.
From Google Ads Help, the Data Manager data preparation guide and the Data Manager API send-events and field-mapping guides, October 2026.

On consent, Google’s upgrade guide warns that leaving the field empty “may result in conversions that are not attributable.” Send the choice you recorded when the lead was created.

How to check that it works

  1. For the API, send one request with validateOnly set to true. It runs the same validation and returns the same errors, without importing anything.
  2. After a real API request, wait 30 minutes, then call RetrieveRequestStatus with the requestId. Keep polling with backoff until each destination shows SUCCESS, PARTIAL_SUCCESS or FAILURE. Google says this can take up to 24 hours.
  3. For file uploads, open Goals, then Conversions, then Uploads. Check the Status and Results columns, and use Download errors to see which rows failed and why.
  4. Open offline data diagnostics from the Conversion summary page: hover over the data quality in the action’s status, then click Go to diagnostics.
  5. Read the data quality rating. Excellent means at least 90% of events are well-formed and valid, Good is 70 to 90%, and Needs attention is below 70%. No recent data means nothing arrived in the last 28 days.
  6. Allow about 3 hours for imported conversions to show, and up to 72 hours for conversions keyed by GBRAID or WBRAID.
  7. Compare the All conv. (by conv. time) column with your CRM for the same dates. Standard reporting dates conversions by the impression or click time, not the upload date.

Google’s diagnostics page also keeps a history of the last 7 days or the last 7 upload jobs, with the share of events that had errors. The API diagnostics guide notes that the status call must use the same access path as the original request.

Common errors and fixes

Error or symptomLikely causeFix
CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE on UploadClickConversionsThe integration sent no offline uploads between December 17, 2025 and June 15, 2026Send the conversions through the Data Manager API or a Data Manager connection.
The same error when sending session attributes or an IP addressNew adopters of these fields are restricted in the Google Ads API since February 2, 2026Send them through the Data Manager API.
Identifiers or iOS URL parameters are too oldThe click was more than 90 days ago, or outside the conversion windowUpload more often, or send an earlier stage that falls inside the window.
Click too recentThe click was less than 6 hours agoRetry after 6 hours.
Invalid conversion timesThe conversion time is before the click, often a time zone mistakeCheck the time zone on the file or the fallback time zone in Data Manager.
Wrong Google Ads account for clicksThe conversion action doesn’t exist in the account you upload to, or isn’t an Import from clicks actionUpload to the account that owns the action. In the API, set it as the operatingAccount.
Unknown clicksThe conversion couldn’t be attributed to Google AdsExpected for some rows with enhanced conversions for leads. If every row shows it, check the form’s customer data capture.
User-provided data not hashedEmail or phone was sent unhashed, or normalized wronglyTrim and lowercase email, and strip dots and plus suffixes from Gmail addresses. Use E.164 for phone, then SHA-256.
The whole API request is rejectedThe Data Manager API fails fast: one invalid event fails the batchTest with validateOnly, fix the event, and resend with the same transaction IDs.
PERMISSION_DENIED on a status checkThe account has Read-only access, or the check used a different login accountUse Admin or Standard access, through the same login account as the original request.
A Data Manager run imports fewer rows than expected, or failsRows with no time zone are skipped when no fallback is set. One DD/MM/YYYY date fails the whole import.Set a fallback time zone, and use ISO 8601 dates.
Error names from Google Ads Help and the Data Manager API guides, October 2026.

Duplicates don’t need a fix of their own. Google counts a conversion once when the click ID or customer data, conversion name and time all match, and it removes repeats when you re-upload (Google Ads Help). To record several conversions for one click, give them different times and set the action to count every conversion. See Google’s errors guide for the full list.

How Google Ads fits with your other platforms

The groundwork is the same on every platform: save the click ID and contact details when the lead arrives, keep them on the CRM record, and send each stage inside the platform’s window. Only the field names and upload routes change. Our guide to offline conversions compares the match keys, hashing and upload windows for Google Ads, Meta, Microsoft, LinkedIn and TikTok. For Microsoft and ChatGPT, see Microsoft Ads offline conversions and ChatGPT Ads offline conversions.

Maven sends CRM outcomes, such as qualified leads and closed-won deals, to Google Ads as offline conversions, alongside Meta and other ad platforms. To check the website side first, a Free Tracking Scan shows which tags load on your lead pages today.

Get the next one before it hits.

Short emails when Meta, Google, GA4 or LinkedIn change something that moves your numbers.

Frequently asked questions

What changed for Google Ads offline conversion imports on June 15, 2026?

From June 15, 2026, Google restricted offline conversion uploads through the Google Ads API. Developer tokens that sent no offline conversion upload requests between December 17, 2025 and June 15, 2026 get a CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE error on UploadClickConversions. Google says to move those workflows to the Data Manager API, and recommends it for current and future uploads.

Do I need the Data Manager API if I upload conversions in the Google Ads UI?

Not for the restriction itself. Google’s notice is about Google Ads API requests. If you import through Data Manager in your Google Ads account, with a file, Google Sheets or a connector such as HubSpot or Salesforce, there is no API code to migrate. Google does call the older file upload a legacy route and recommends Data Manager instead.

What is the difference between GCLID import and enhanced conversions for leads?

GCLID import matches each uploaded conversion to the ad click by its Google click ID. Enhanced conversions for leads also sends hashed customer data, such as an email address or phone number, so Google can match conversions without a click ID when the Google tag also collects that data on your lead form. Google recommends enhanced conversions for leads for new setups and says to keep sending GCLIDs when you have them.

How long after the click can I upload an offline conversion?

Google accepts conversions with a GCLID up to 90 days after the click. For enhanced conversions for leads, conversions uploaded more than 63 days after the last click are not imported. If deals close later than that, also upload an earlier stage, such as a qualified lead.

Does the Data Manager API need a developer token?

No. Google’s migration guide says the Data Manager API does not require a developer token. You enable the API in a Google Cloud project, authenticate with the https://www.googleapis.com/auth/datamanager scope, and use a Google Account with Admin or Standard access to the Google Ads account that owns the conversion action.

What does CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE mean?

On UploadClickConversions, it means the developer token is not allowlisted for offline conversion uploads in the Google Ads API, because it sent no such uploads between December 17, 2025 and June 15, 2026. The fix is to send those conversions through the Data Manager API or Data Manager in Google Ads. The same error appears when a non-allowlisted integration sends session attributes or IP addresses through the Google Ads API.

How long until imported conversions show in Google Ads?

Google says imported conversion statistics take about 3 hours to show. Processing typically takes less than 12 hours, and up to 72 hours for conversions keyed by GBRAID or WBRAID. For a new conversion action, wait 4 to 6 hours before the first upload.

Can I import offline conversions from HubSpot or Salesforce?

Yes. Google’s Data Manager lists HubSpot and Salesforce as direct connections for offline conversion import, along with Google Sheets, BigQuery, SFTP, Zoho CRM and others. The legacy Salesforce integration stopped being supported on May 31, 2025, so older Salesforce setups should move to the Data Manager Salesforce connection.

Sources and references

Published October 26, 2026

Find what your tracking misses in about 10 seconds.

Run a Free Tracking Scan on your site and see every gap we find.