Troubleshooting Posted by the DataCops team

Google Ads offline conversions not showing up after upload: what to check

You upload the file. Google says "success". You refresh the conversions column. Zero.

Nothing makes you feel dumber than a green tick next to an empty report. So let me start with the thing that makes the rest make sense: "success" doesn't mean what you think. It usually means the file was accepted, not that any row matched a click. Those are two very different events, and almost every "it doesn't work" story is someone treating the first as the second.

Here's the order I'd check things in, cheapest first.

1. Is auto-tagging on? Without it, Google never adds the click ID (GCLID) to your landing page URL as ?gclid=, so there was never anything to upload. Ten seconds to check, and it's a shocking share of the mysteries.

2. Is the GCLID exactly the one from the click? Trimmed, lowercased, cut off by a spreadsheet, or copied from the wrong lead: any of those matches nothing. A GCLID is long and case-sensitive. Treat it like a password, not like a name.

3. How old is the click? Google ignores offline conversions uploaded more than 90 days after the click. A long sales cycle can quietly time itself out, and it looks identical to a broken upload.

4. Is the conversion time after the click time, in the format and time zone Google expects? A sale dated before its own click gets thrown away. This one bites people who export from a CRM that stamps dates in a different time zone from the ad account.

5. Is the conversion action an import type? A normal website conversion action won't accept an upload, however correct your file is.

6. Have you waited a day? Uploads aren't instant. Give it time, then read the upload report in Google Ads. It tells you what was rejected and why, which is far more useful than staring at the conversions column.

Let me walk through a made-up example, because the pattern is what matters. You upload 40 rows and 0 match. Check one, two and five pass. Check three passes: all clicks are under 90 days. Check four: the CRM exports UTC and the ad account is in another time zone, so 12 rows are dated before their clicks. That explains 12. The other 28? Open five of them in the CRM: the GCLID field is empty. They never had a click ID. Nothing on the Google side was ever wrong.

That's the insight I'd take away. Most of the time the failure is upstream of Google. The click ID never made it into the CRM in the first place. Everything you do at the upload step is polishing a file that was empty when it started.

A trick that saves hours: build a pre-flight filter before you upload anything. Drop the rows with an empty GCLID. Drop the rows where the click is more than 90 days old. Drop the rows where the conversion time comes before the click. Upload only what's left. You'll upload fewer rows and get a much cleaner result, and the rows you dropped are a free measurement of how big your upstream problem is. If 60 percent of your file gets filtered out, you now know your real project isn't the upload.

And when you do read the upload report, read it by category, not by row. Count how many rows fall into each rejection reason. If one reason owns most of them, fix that one first. Trying to chase individual rows is how an afternoon disappears.

One honest limit: for Google Ads, per-row rejections from Google aren't read back yet, so the upload report in Google Ads is still where you'd look for those. And if you build your own upload against the API, note Google asks new integrations built since June 2026 to use its Data Manager API.

For reference, DataCops sends to Google Ads matched by click ID, and its conversion actions start as secondary so nothing changes your bidding until you decide. It doesn't read Google's per-row rejections back yet, so the upload report in Google Ads is still where you'd look for those.

More on this: Google Ads offline conversions, and the complete guide to offline conversion tracking.

1 comment

Comments (1)

DataCops team author · 30 Sep 2026

Since it always comes up: the GCLID is the Google Click ID. On some iOS traffic Google uses GBRAID or WBRAID instead. WBRAID appears when a click in a Google app opens your website, GBRAID when it leads to an app. Both can be uploaded as offline conversions, so keep whichever one arrives.

1
Replies from DataCops account holders are coming soon. Until then, questions about your own setup can go to the team.

More threads

See what your own setup is missing

Send CRM sales back to the ad click that started them, logged per send.

Setup in 5 minutes. No credit card.

Live traffic quality

Updated just now

Visits · last 24h

487
Real users
35873.5%
Bots · auto-filtered
12926.5%

Without filtering, 26.5% of your reported traffic is bot noise inflating dashboards and draining ad spend.

Don't trust your analytics!

Make confident, data-driven decisions withactionable ad spend insights.

Setup in 2 minutes
No credit card