Skip to main content
Google Ads

Offline Conversion Imports in Google Ads: Why Your Lead Data Might Stop Reaching Smart Bidding in 2026

Every lead-gen advertiser has had this conversation with a client or a boss: “Google Ads says we got 40 conversions last month, but sales only closed 6 deals. What’s actually happening?” The honest answer, most of the time, is that Google Ads only knows about the part of the funnel that happens on your website. It sees the form fill. It has no idea what happened after — whether the lead was qualified, whether they bought, or whether they were a bot filling out your contact form at 3 a.m. from a data center in another country.

Offline conversion import is the fix for that gap, and it has existed in some form for close to a decade. Yet most lead-gen accounts still don’t use it, or use it badly enough that Smart Bidding is effectively optimizing on noise. That’s about to matter more, not less: starting June 15, 2026, Google is migrating offline conversion imports out of the Google Ads API and into a separate Data Manager API, and any integration that hasn’t already sent a qualifying request in the months before that date risks having its uploads silently rejected. If your CRM-to-Google-Ads pipeline runs through a script, a Zapier-style connector, or an agency’s custom tooling, this is worth twenty minutes of your attention now rather than a confusing gap in your conversion data in July.

This post covers what offline conversion import actually does, why it’s historically been hard to get right, what Enhanced Conversions for Leads changes, and exactly what the June 2026 migration means for your account — plus how to tell whether you’re actually affected.

What offline conversion import actually does

When someone clicks your ad and lands on your site, Google Ads attaches a Google Click ID (GCLID) to that visit, usually as a URL parameter. If your site fires a standard conversion tag when the visitor submits a form, Google Ads counts that as a conversion — a lead. That’s the online part, and it’s automatic.

The problem is that a form fill is rarely the thing you actually care about. For most B2B, high-ticket, and local-service businesses, the form fill is the start of a sales process that might take days, weeks, or months and might not close at all. If you’re bidding on “conversions” that are really just “people who typed their email into a box,” Smart Bidding will happily fill your pipeline with more of those, whether or not they ever become customers. This is a variation on a theme covered in how conversion value rules tell Smart Bidding which conversions actually matter — the algorithm optimizes for whatever signal you give it, accurate or not.

Offline conversion import closes that loop. The mechanism is simple in concept: your CRM captures the GCLID when a lead comes in (usually via a hidden form field or a cookie-read script), stores it against that contact record, and then when something meaningful happens later — the lead gets qualified, a sales call happens, a deal closes — your CRM (or a script, or a connector) uploads that outcome back to Google Ads, referencing the original GCLID. Google Ads matches it to the original click and updates that conversion’s status or value. Smart Bidding then has a real signal to optimize toward instead of a proxy.

There are two ways to do this. The older, simpler method — plain GCLID-based offline conversion import — has been around since around 2016. The newer, Google-recommended method is Enhanced Conversions for Leads, which we’ll get to.

Why so few accounts actually have this working

If offline conversion import is this useful, why do most lead-gen accounts skip it? A few consistent reasons show up whenever this comes up in practice.

The first is organizational: the GCLID has to be captured on the website and then travel into a CRM that marketing usually doesn’t own or directly control. Getting IT, sales ops, or a CRM admin to add a hidden field, write a workflow rule, and expose an export or API endpoint is a project, not a checkbox. It’s the same friction referenced in what to check before connecting any tool to your Google Ads account — every integration point is a place where ownership gets fuzzy and things quietly break.

The second is a set of surprisingly specific technical requirements that trip people up even after the GCLID capture is working:

  • Timing windows. You generally can’t upload a conversion for a click that happened less than about six hours ago, and a GCLID becomes unusable for matching after roughly 90 days. If your sales cycle is longer than that — common in B2B — a plain GCLID import can’t credit a deal that closes on month four.
  • Formatting. The GCLID is case-sensitive. An incorrectly formatted or missing time zone in the conversion-time column is one of the most common upload errors, and it fails silently unless someone is checking the uploads report.
  • Duplicate handling. Google Ads deduplicates on the combination of identifier, conversion name, and date/time — which is usually fine, but it means a re-run of a buggy export can either double-count or (more often) silently do nothing if the values look identical to Google.
  • New conversion actions need a warm-up. After creating a new conversion action, you’re generally expected to wait a few hours before uploading conversions against it, or the upload can fail.

A handful of other failure modes show up often enough to be worth naming explicitly, because each one produces the same symptom — conversions that just never show up — with a different root cause: the click being too recent to have a matchable GCLID yet, the click being older than the roughly 90-day matching window (which makes the GCLID effectively unreadable to Google’s matching system), the file being uploaded against the wrong Google Ads account or a sub-account that doesn’t own the original click, and there being no corresponding online conversion event at all for Google to reconcile against. None of these throw a loud error in the UI. They just result in a lower number than expected, which is easy to misattribute to “leads didn’t convert” rather than “the upload didn’t match.”

None of these are hard individually. Together, they’re exactly the kind of thing that works fine in testing, then quietly stops working three months later when nobody’s watching the uploads report — which is really an argument for treating conversion imports as something that needs ongoing monitoring, not a one-time setup task. It’s the same logic behind auditing your conversion tracking on a schedule instead of assuming that because it worked at launch, it still works now.

There’s a third, less technical reason this stays broken longer than it should: control sits in the wrong place. Marketing usually owns the Google Ads account and wants the data. Sales or operations usually owns the CRM and doesn’t think of “export conversion data to an ad platform” as their job. Whoever ends up building the pipeline — often an agency, sometimes a developer hired for a week — has every incentive to get it working once and move on, not to babysit it. A GCLID capture script that silently stops firing after a CRM form vendor pushes an update isn’t anyone’s specific responsibility to notice, which is exactly why it so often goes unnoticed.

The three paths data can take into Google Ads

It helps to be precise about which mechanism you’re actually using, because the June 2026 change only touches one of them. There are three distinct paths:

  • Manual CSV upload through the Google Ads UI. You export a file from your CRM with columns for the click identifier, conversion name, conversion time, and value, then upload it under Goals > Conversions > Uploads (or, when first creating the conversion action, under Create > Conversion action > Import > CRMs, files, or other data sources > Track conversions from clicks). This is manual, slow, and easy to forget to run — but it doesn’t go through the Google Ads API in the way the migration targets.
  • Google tag or Google Tag Manager-based capture for Enhanced Conversions for Leads. Here, your website’s Google tag (or a GTM container) is configured to capture hashed user-provided data at the point a lead form is submitted, and Google handles matching that against later imported outcomes. This is a client-side capture mechanism, not an API upload path, so it also sits outside the specific cutover.
  • Programmatic upload via the Google Ads API. This is a script, a CRM’s native integration, a marketing automation platform’s connector, or an agency’s custom tooling calling the Ads API directly (via UploadClickConversions or the enhanced-conversions-for-leads equivalent) to push conversion data on a schedule. This is the path being migrated to the Data Manager API, and the one where a missed allowlist window turns into a silent failure.

Most accounts running any kind of automated offline conversion pipeline are on the third path, often without anyone on the marketing side knowing the technical detail — it was set up once by a developer or an agency and has run quietly ever since. That’s precisely the situation where a deadline like this one slips past unnoticed.

Worth noting: the second path — Google tag or GTM-based capture — and the third path are not mutually exclusive, and increasingly they overlap. Google’s own setup guidance for Enhanced Conversions for Leads describes it as a two-step process: first configuring the Google tag (or a GTM container) to capture hashed user-provided data at the moment a lead form is submitted, then separately importing the eventual outcome — the qualified lead, the closed deal — back through either the Google Ads UI, a direct API call, or Data Manager. The tag-side capture step stays the same regardless of which upload mechanism you use afterward. So it’s entirely possible to have the capture half working correctly while the upload half is quietly heading toward a June 2026 wall, which is one more reason it’s worth confirming both halves independently rather than assuming that because leads are being tagged, the whole pipeline is safe.

Enhanced Conversions for Leads: the upgrade Google actually wants you on

Google’s own guidance has shifted. Plain GCLID-only offline conversion import is now treated as the legacy path, and the recommended replacement for lead-gen advertisers is Enhanced Conversions for Leads (often abbreviated ECL). The practical difference: instead of matching purely on the GCLID, Enhanced Conversions for Leads also sends hashed first-party data — typically the lead’s email address and/or phone number — as additional match keys.

That matters for a concrete reason: a GCLID can get lost. It can fail to persist through a redirect, get stripped by a CRM field mapping error, or simply expire past the 90-day window before the deal closes. Hashed contact data doesn’t expire and isn’t as fragile to pass through a CRM. Google can still match the eventual conversion back to the original ad click and, by extension, back to Smart Bidding, using the email or phone number even when the GCLID itself is unavailable or was never captured cleanly. Both signals can be sent together for the best coverage — GCLID when you have it, hashed contact data as backup and primary.

Diagnostics panel showing a 75 percent match rate gauge, a match key checklist, and a timeline to the June 15 2026 API migration deadline

Once it’s running, Google Ads gives you a dedicated diagnostics report for Enhanced Conversions for Leads, and it’s worth checking on a real cadence rather than once at setup. The number that matters most is match rate — the share of uploaded conversions that Google was able to tie back to an ad click. As a rough benchmark, a match rate in the 60–80% range is considered healthy, and the diagnostics report will flag anything below that as needing attention, with 70%+ generally treated as strong coverage. Email tends to produce the most reliable match rate of the available identifiers, mainly because it’s less prone to being reformatted or normalized differently across systems than a phone number often is. If your match rate is sitting well below that range, the diagnostics report will usually point to the actual cause — missing fields, bad formatting, or a GCLID that isn’t making it through — rather than leaving you guessing.

This is the same category of problem as enhanced conversions being silently broken on the web side: the setup works on day one, coverage looks fine, and then a CRM field gets renamed or a form vendor changes their export format, and match rate quietly drops for weeks before anyone notices it in the reporting.

The June 15, 2026 change: what’s actually moving, and who it affects

Here’s the part that’s genuinely time-sensitive. Google has announced that starting June 15, 2026, offline conversion imports and Enhanced Conversions for Leads uploads submitted through the Google Ads API are being migrated to a separate Data Manager API. After that date, new (and in some cases existing) uploads through the old Google Ads API path can be blocked outright.

The mechanism Google is using to manage the cutover is a developer token allowlist. If a given developer token hasn’t already sent a qualifying offline-conversion or enhanced-conversions-for-leads request during the run-up window (roughly January through June 2026), that token won’t be allowlisted for continued legacy access, and calls after June 15 will start failing with an error along the lines of CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE.

The part worth sitting with: this failure is not something you’ll necessarily see in the Google Ads UI. If your CRM, your marketing automation platform, or an agency’s custom script pushes conversions via the Google Ads API in the background, the upload can start failing with no obvious front-end symptom other than your offline conversion counts flattening out — which looks a lot like “leads just aren’t closing as much this month” rather than “an integration broke.” Whether that failure gets surfaced to a human depends entirely on whether whatever system is doing the uploading has explicit error handling and alerting for that specific response code, which a lot of “it just works” integrations don’t.

This isn’t an isolated, one-off change. Data Manager API has been steadily absorbing data-import functionality that used to live in separate, platform-specific pipelines — a recent version update to the API added store sales measurement and expanded support for feeding Analytics events through the same channel. Offline conversions and Enhanced Conversions for Leads are simply the latest categories being folded into that consolidation. If you manage more than one Google Ads account, or run imports across Google Analytics as well, it’s worth assuming this pattern continues and that whatever pipeline you build going forward should route through Data Manager rather than a narrower, single-purpose API call.

Who this actually touches:

  • Directly affected: any custom integration, script, or third-party connector that pushes offline conversions or Enhanced Conversions for Leads data into Google Ads via the Google Ads API — this includes many CRM-to-Ads integrations built by agencies or in-house developers, and platforms like HubSpot- or Salesforce-adjacent connectors that use the Ads API under the hood.
  • Likely unaffected, but confirm: manual CSV uploads done through the Google Ads UI (Goals > Conversions > Uploads) aren’t going through the Ads API in the same way, so this specific cutover is less likely to touch a purely manual process — but if you’re not certain how your data gets into Google Ads, that uncertainty is the actual problem, not the answer.
  • The recommended path forward: migrate to the Data Manager API (or to a Data Manager-based upload path, which Google describes as the fastest way to set up or upgrade to Enhanced Conversions for Leads), which supports both GCLID and hashed user-provided data as match keys.

How to find out if you’re actually affected

Before assuming this is someone else’s problem, spend fifteen minutes confirming how your offline conversions actually get into Google Ads:

  1. Ask directly. If a CRM platform, marketing automation tool, or agency manages your conversion imports, ask them explicitly whether their integration uses the Google Ads API for offline conversions or Enhanced Conversions for Leads, and whether they’ve already migrated to the Data Manager API. This is a normal, reasonable question to ask a vendor in 2026, not an accusation.
  2. Check the Google Ads diagnostics report now, and again in July. If you have Enhanced Conversions for Leads running, the diagnostics report will show current match rate and upload activity. A baseline check now gives you something to compare against after the cutover — if uploads that were flowing in June suddenly stop in mid-June with no change on your end, that’s the signal.
  3. Look at your conversion action’s recent activity, not just the aggregate number. A dip in imported/offline conversions specifically, while your online, on-site conversions stay flat, points at the upload pipeline rather than an actual change in lead quality.
  4. If you use Google Tag Manager or the Google tag directly for Enhanced Conversions for Leads (rather than an API-based CRM push), you’re likely on a different path that isn’t the one being blocked — but it’s still worth confirming with whoever manages that implementation.

It’s worth being clear about what’s actually at stake if this goes unnoticed. Smart Bidding strategies built around Target CPA, Target ROAS, or Maximize Conversions lean directly on whatever conversion data reaches the account. If offline conversions have been supplying a meaningful share of that signal — telling the algorithm which clicks turned into real pipeline, not just form fills — and that supply quietly stops, Smart Bidding doesn’t pause and wait for it to come back. It keeps optimizing, using whatever conversion data it can still see, which after a silent upload failure is mostly just the on-site form-fill events again. The bidding strategy can drift back toward optimizing for lead volume over lead quality over the following weeks, and because the drift is gradual and the cause is invisible, it tends to get diagnosed as “the algorithm got worse” rather than “a data feed broke in June.”

This kind of check is exactly the sort of thing that’s easy to mean to do and then forget about until the numbers look wrong. It’s a big part of why continuous, daily account monitoring exists as a category of tool at all — something has to actually notice when an upload pipeline that was working in May goes quiet in June, rather than a human remembering to check a diagnostics report on a deadline nobody put on their calendar. Growera’s AI account manager watches conversion volume and tracking health as part of its daily pass over an account specifically so that a drop like this gets flagged as an anomaly worth a look, instead of getting attributed to “leads are just soft this month” for six weeks.

How to actually set this up (or migrate to it) properly

If you’re building this from scratch, or migrating off a plain GCLID import before June 2026, here’s the practical order of operations:

  1. Prioritize email as your primary match key. It’s the identifier least likely to get mangled by CRM formatting differences, and Google’s own guidance leans on it as the most reliable of the hashed identifiers. Collect phone number as a secondary signal where you have it — using both improves match rate further.
  2. Keep sending GCLID alongside hashed data whenever you have it. The two aren’t mutually exclusive, and GCLID plus user-provided data gives Google the most ways to make a match.
  3. Use Data Manager for the actual upload path. Whether you’re setting this up fresh or migrating an existing integration, routing through Data Manager (rather than a raw Google Ads API call) is both the forward-compatible choice and, per Google’s own documentation, the fastest way to get Enhanced Conversions for Leads running or upgraded.
  4. Define your conversion actions to reflect what actually matters, not just “form submitted.” A qualified-lead action and a closed-deal action, imported separately with appropriate values, give Smart Bidding a much better signal than a single generic “lead” conversion. This connects directly to conversion value rules — once you’re importing real outcomes with real values, you can start telling Smart Bidding which conversions are worth more.
  5. Give it time before judging results. Smart Bidding strategies need a meaningful volume of conversion data to calibrate around a new signal, a point covered in more detail in how much conversion data Google Ads actually needs before Smart Bidding works. Swapping in offline conversions is a real change to what the algorithm is optimizing for, and it needs a comparable adjustment period.
  6. Check the diagnostics report on a recurring basis, not just at launch. Set a calendar reminder, or better, make sure whatever is watching your account day-to-day is actually looking at match rate and upload volume, not just click and cost metrics.

If this feels like a lot of moving parts for something that sounds like it should be simple, that’s a fair reaction — it is a lot of moving parts, spread across your website, your CRM, and Google’s own API surface, each with its own way to quietly fail. That’s true of most of the tracking infrastructure sitting underneath a Google Ads account, and it’s rarely obvious from the campaign-level dashboard when one piece of it has stopped working.

This looks a little different depending on what you sell

The general mechanics above apply everywhere, but the details of what to import and why shift depending on the kind of business running the account.

For B2B and SaaS companies, the gap between “form submitted” and “revenue” is usually the widest, and the sales cycle is often long enough to run straight into the 90-day GCLID matching limit — which is exactly the scenario where Enhanced Conversions for Leads’ hashed-identifier matching earns its keep, since it doesn’t degrade the same way once that window closes. A demo request, a marketing-qualified-lead status change, and a closed-won deal are usually worth tracking as three separate imported conversions with escalating values, rather than one flat “lead” event.

For local service businesses — contractors, law firms, home services, and similar — a huge share of “conversions” are phone calls rather than form fills, and a lot of call-tracking setups already sit adjacent to this exact pipeline, since a booked job or an estimate accepted over the phone is itself a downstream outcome that needs to be imported back once it’s known. If your call tracking platform and your offline conversion import aren’t talking to the same underlying identifiers, you can end up double-counting or, more often, undercounting the calls that actually turned into paying jobs.

E-commerce accounts generally need this least, since the purchase itself usually happens on-site and gets tracked directly — offline conversion import matters there mainly for phone or in-store sales that originated from an ad click, which is a narrower use case.

Summary

Offline conversion import — and its more robust successor, Enhanced Conversions for Leads — exists to solve a specific problem: Google Ads only sees what happens on your website, and for most lead-gen businesses, the form fill isn’t the outcome that actually matters. Feeding real downstream outcomes back to Google Ads gives Smart Bidding something honest to optimize toward, instead of a volume of leads that may or may not ever become revenue.

The practical points worth carrying away: plain GCLID-based imports are fragile in specific, well-documented ways (timing windows, formatting, a 90-day match limit), which is why Google now recommends Enhanced Conversions for Leads and its hashed-identifier matching instead. Separately, and on a real deadline, offline conversion imports and Enhanced Conversions for Leads uploads sent through the Google Ads API are being migrated to a Data Manager API path starting June 15, 2026 — and integrations that haven’t already made that transition risk uploads failing quietly, with no obvious front-end warning.

If you don’t know for certain how your offline conversions get into Google Ads today, that’s the first thing worth finding out — not because the sky is falling, but because “I assume it’s fine” is exactly the gap that lets a broken pipeline run for months before anyone notices the numbers don’t add up.

Ready to see ERA in action?

Connect your Google Ads account and see what it finds — free for 14 days.

Start your free trial

No card charged until day 14 · cancel anytime

Offline Conversion Imports in Google Ads: Why Your Lead Data Might Stop Reaching Smart Bidding in 2026 2026-09-28T12:44:04+10:30 2026-09-28T12:44:04+10:30 Every lead-gen advertiser has had this conversation with a client or a boss: “Google Ads says we got 40 conversions last month, but sales only closed 6 deals. What’s actually happening?... https://growera.app/wp-content/uploads/header-9.jpg https://growera.app/insights/offline-conversion-imports-in-google-ads-why-your-lead-data-might-stop-reaching-smart-bidding-in-2026/