
We audit a lot of Google Ads accounts, and in July we started seeing the same shape twice in one month: cost per lead improving, lead volume steady, sales team quietly furious. Both accounts had the same root cause. Their offline conversion uploads had stopped on June 15 and nobody noticed, because nothing anywhere throws a visible error.
Here's the short version: on June 15, 2026, Google stopped accepting new offline conversion imports and enhanced conversions for leads through the Google Ads API. If your integration wasn't already actively uploading between roughly December 2025 and May 2026, it now fails with CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE. The replacement is the Data Manager API, and even allowlisted integrations are on borrowed time.
That's the answer. The rest is how to tell whether you're affected, what the migration actually involves, and why this outage costs more than the missing rows in a report.
What Google Actually Changed
Google announced the change on May 15, 2026 with a one-month runway. The specific call being restricted is ConversionUploadService.UploadClickConversions in the Google Ads API, which covers two things most lead-gen advertisers depend on:
- Offline conversion imports — sending a CRM outcome like "qualified" or "closed won" back to Google Ads against the original GCLID.
- Enhanced conversions for leads — sending hashed customer data so Google can match a later offline outcome to the click that produced it.
Everything else in the Google Ads API kept working. Campaign management, reporting, budget changes, none of it was touched. That narrowness is exactly why so many teams missed it — the API didn't go down, one method did.
The replacement is the Data Manager API, which Google has been consolidating first-party data ingestion into for about a year. Rather than separate pipelines for conversions, customer match lists, and enhanced conversions, you POST events to a single endpoint at https://datamanager.googleapis.com/v1/events:ingest with a destination and a list of events. A late-May update also extended it to Campaign Manager 360, Search Ads 360, and Display & Video 360, so it isn't just a Google Ads endpoint with a new name.
The Allowlist Detail That Catches People
Google didn't switch the old method off. It allowlisted the developer tokens that were already using it, based on active use during roughly December 2025 through May 2026. Read what that means carefully, because there are three distinct groups and only one of them is fine:
- You were uploading continuously through spring 2026. You're allowlisted. Your uploads still run. Google has called this access transitional, which is deprecation language, so schedule the migration rather than filing it away.
- You had the integration built but paused it — the client churned, the campaign went dark for a quarter, you rebuilt the CRM. You are very likely not allowlisted, and you'll find out the day you turn it back on.
- You're setting this up now. You never had a path through the old API. Data Manager is the only option, which is honestly the simplest position to be in.
That middle group is where we keep finding damage. Seasonal advertisers, agencies onboarding a returning client, anyone who moved CRMs in Q1 — the integration looks configured, the credentials are valid, and the uploads fail at the permission layer.
How to Tell If You're Affected in About Ten Minutes
You don't need a developer for the diagnosis. Open the conversion action in Google Ads and chart daily conversions across May, June, and July.
Look for a cliff, not a slope. Real performance changes are gradual and noisy. A blocked upload produces a clean flatline that starts on one specific day and never recovers. If your offline conversion action reads zero from June 15 onward while your form-fill or call conversions look normal, you have your answer.
Then confirm it at the source. Whatever sends the data — a native CRM connector, a Zapier or Make scenario, an n8n workflow, a cron job someone wrote in 2023 — open its run history for June 15 and 16 and read the actual API response. You're looking for CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE or a generic permission denial.
The thing that makes this failure mode nasty is that many connectors report a run as successful when the HTTP call completes, regardless of what Google said in the body. We've seen a client's automation log show eleven consecutive green runs while every single batch was rejected. If your monitoring only checks that the workflow ran, it isn't monitoring anything. That's the same lesson we wrote up in our guide to n8n error handling and monitoring, and it applies to every connector you didn't build yourself.
The Migration, Realistically
The engineering here is not hard. It's a payload reshape and a scope change, not a rearchitecture. What takes time is the inventory and the backfill.
Enable the API and the scope first. In the Google Cloud project that owns your credentials, enable the Data Manager API and add the https://www.googleapis.com/auth/datamanager OAuth scope. Reuse the existing service account. Creating a fresh identity means re-granting access in Google Ads, which is where an afternoon turns into a week of waiting on a client's IT contact.
Reshape the payload. Conceptually the same fields survive: a click identifier or hashed user data, a conversion action, a timestamp, a value, a currency. Practically, the nesting and field names differ from UploadClickConversions, and the destination is now an explicit object rather than an implicit consequence of which customer ID you authenticated as. Build it against one conversion action and one day of test data before you point production at it.
Then backfill, and be careful about timestamps. Every qualified lead and closed deal from the outage window needs to go up with its real conversion time, not the time you're uploading it. Stamp everything with today's date and you'll teach Smart Bidding that a June 3 click converted in August, which is worse than the gap you're fixing. Also check your conversion action's click-to-conversion window — outcomes older than that window get rejected, and if you were down for weeks, part of your history is simply gone.
For the ongoing pipeline we run this as a scheduled job rather than an event-triggered one. A workflow wakes up nightly, pulls every CRM record whose stage changed that day, filters to the ones that actually represent a business outcome, batches them, uploads, and writes the response to a log. Nightly batching is more forgiving than firing on every CRM webhook, and it makes replaying a failed day trivial instead of frightening. If you're building the CRM side of that loop from scratch, our notes on CRM automation for lead follow-up cover the trigger design.
Why This Costs More Than a Missing Report
Here's the part that gets underrated. Offline conversions aren't a reporting nicety. They're the training signal for the bidding algorithm.
When qualified-lead uploads stop, Smart Bidding doesn't stop. It falls back to whatever conversions it still receives — usually raw form fills and phone calls — and optimizes hard toward the cheapest ones. Your cost per lead improves. Your dashboard looks better. And the mix underneath shifts toward the traffic that fills out forms and never buys.
Run the math on a business where a closed deal is worth $2,400 and one in eight qualified leads closes. If lead quality drops from one in eight to one in fourteen while volume holds, you've lost roughly 43% of your revenue per lead without a single metric in Google Ads turning red. That's why we found both of these accounts through a sales conversation and not a monitoring alert.
This is also the strongest argument for not treating Google Ads as your source of truth. The clients who caught this fastest were the ones running independent attribution alongside the platform, where a divergence between platform-reported conversions and CRM reality shows up as a visible gap. It's the same discipline behind our Hyros attribution guide for agencies and the reason we spend so much time on Google Ads and GA4 attribution mismatches. Two independent measurements that disagree tell you something. One measurement that goes quiet tells you nothing.
What to Do This Week
If you manage lead-gen accounts, this is a one-afternoon audit with an outsized payoff:
- Chart June for every offline conversion action across every account you touch. You're looking for a cliff on the 15th.
- Inventory the uploaders. Most accounts have more than one path sending conversion data, and the forgotten one is usually the broken one.
- Check the response bodies, not the run status. Green checkmarks lie.
- Migrate to Data Manager even if you're allowlisted. Transitional access has an expiry date; you just don't know it yet.
- Alert on failure like it's a payment webhook, because financially, it is one.
If you also send server-side events to Meta, this is a good moment to verify that pipeline too — the pattern of a silently rejected payload is identical, and we walked through the diagnostics in our Meta Conversions API setup guide.
Get a Free Automation Audit
We do this check as part of every attribution audit we run, and it takes us under an hour per account. If you'd rather have someone confirm your conversion pipelines are actually alive — Google Ads, Meta CAPI, CRM-to-platform uploads, all of it — get a free automation audit and we'll tell you exactly what's flowing and what quietly stopped.
Broken tracking is expensive precisely because it's invisible. The accounts that get hurt worst are never the ones with obvious problems.