Uploading Offline Conversions with the Google Ads API

When the spreadsheet stops scaling, this is the next step. Here is what the API needs and the mistakes that waste a week.

This post covers uploading offline conversions with the Google Ads API: what it needs, what it gives you that simpler methods do not, and the specific mistakes that waste a week.

This is the right answer when the spreadsheet stops scaling. It is the wrong answer when you have 40 conversions a month and no developer.

When this fits

  • Volume is high enough that manual or scheduled files are painful.

  • You need adjustments, retractions and restatements, not just uploads.

  • You have engineering capacity, or your CRM is custom built anyway.

If none of those are true, use a scheduled sheet and revisit this later.

What you need before you start

  1. A developer token from your Google Ads manager account. Approval takes time, so apply early.

  2. OAuth credentials, with a refresh token for server to server use.

  3. The customer ID of the account you are uploading into.

  4. A conversion action already created with source Import, and its resource name.

That last one catches people. The API wants the conversion action’s resource name, not the display name you see in the interface.

The two operations you will use

Uploading a click conversion

You send the click ID, the conversion action resource name, the conversion date time with a timezone offset, and the value with currency.

The date time format is strict and it is the single most common source of errors. It wants a full offset, not a timezone name.

Uploading a conversion adjustment

This is the real reason to use the API rather than a sheet. You can:

  • Retract a conversion when a deal is cancelled or a refund is issued.

  • Restate its value when the final amount differs from the estimate.

  • Enhance it with hashed customer data after the fact.

Scheduled sheets cannot do this cleanly, and without it your ad account slowly fills with revenue that never actually arrived: handling refunds and cancellations.

The mistakes that waste a week

  • Partial failure looks like success. Set partial failure handling on and actually read the response. A request can return 200 with half its rows rejected.

  • Date formats. Get the offset right and test with a single row before batching.

  • Wrong click ID column. gbraid and wbraid are separate fields and are not interchangeable with gclid: gbraid and wbraid explained

  • Uploading the same conversion twice. The API will happily accept duplicates. Track what you have sent.

  • Testing against production. Use a test account until your payloads are clean.

Before you finish

  • Upload one row and confirm it appears in the interface before batching thousands.

  • Turn on partial failure and log every rejection reason.

  • Build retry logic with backoff. The API rate limits and a naive loop will get throttled.

  • Store an uploaded flag and a timestamp per record.

  • Set up an alert for a failure rate above a small threshold.

FAQ

How long does developer token approval take?

Days to weeks depending on your application. Apply before you start building, not after.

Can I use a service account?

The usual pattern is OAuth with a refresh token rather than a service account. Plan for token refresh in your job.

Is there a client library for my language?

Google maintains libraries for several languages, and they handle a lot of the authentication awkwardness. Use one rather than hand rolling HTTP.

Is this overkill for my business?

If you are asking, probably yes. Start with the simpler methods and move here when you feel real pain.

Need this built properly?

The API is worth it for adjustments, not just for uploads. I set up and repair tracking for ecommerce stores and lead generation businesses, so the numbers in your ad accounts match the money in your bank account.

Have a look at what I do, or book a call and we can go through your setup together.

Need accurate tracking?

Its Free

500+ Happy Clients ⭐️

Keep Reading

See exactly where you’re wasting ad spend and how better tracking can double your sales.

See exactly where you’re wasting ad spend and how better tracking can double your sales.

Tracking in 3 Hours

Tracking in 3 Hours

I Manage Everything

I Manage Everything

24/7 Expert Support

24/7 Expert Support

TESTIMONIALS

Trusted by 500+ satisfied clients

Discover how we’ve driven growth and innovation.

500+ Tracking

500+ Tracking

Adélaïde De Vos

3,922 followers

I had the pleasure to work with Abdul and I can say that he exceeded my expectations. He was professional, patient, and clear in his explanations and committed to client satisfaction. If you're looking for someone who is not only highly skilled but also reliable and committed to client satisfaction, I highly recommend Kayium!

Dean Watson

1,030 followers

Kayium setup our tracking for Google Ads and Meta Ads, which helped us get 20%+ more conversions on the same ad spend. He didn’t just handle the technical setup,he also took the time to explain why it works and how it improves results. If you’re looking for someone skilled, reliable, and committed to delivering real results, I highly recommend him!

David Friend

CEO: Profitable Sites

Kayium set up accurate tracking that helped us scale ads fast and boost conversions by over 25%. He gave us clear insight into which ads drive revenue.

Lalita Sundari

7,924 followers

I've worked with Kayium; his strategic mindset and expertise in GTM, GA4, Pixel & Server Side Tracking, are invaluable! I highly recommend Kayium!