Skip to main content

Offline conversions

A landing page that carries no conversion tag still produces leads, and the bidding strategy paying for its clicks learns nothing from any of them. It keeps buying whatever it was buying, because as far as Google can tell nothing has happened since the click. Offline conversion upload closes that loop: the lead rows that captured a gclid are reported back to Google Ads from your data, so MAXIMIZE_CONVERSIONS and TARGET_CPA find out which clicks became customers and start bidding towards more of them. Ask an agent for it in the words you’d use anyway — “report last week’s leads to Google Ads as conversions” — and it reads the lead rows, matches them to the conversion action, and files an approval before anything reaches your account. Every upload is a write to a live ad account, so it is gated the same way a budget change is.

Reconnect Google Ads once

Google has moved offline conversion upload onto a separate API with a permission of its own, and a connection made before that change does not carry it. If your Google Ads connection predates it, the first upload will stop and ask you to reconnect — it will not try the call and fail halfway. Reconnecting takes one pass through Google’s consent screen from Settings → Integrations, and Google will ask for the additional permission while you’re there. Nothing else about the connection changes: your account and campaign selections stay as they are, your synced data keeps flowing, and every other Google Ads capability keeps working before, during, and after. Only the conversion upload waits on it.

What “submitted” means

Google acknowledges an upload immediately and processes it later, so the result you get back is honest about which one it is:
Submitted 412 click conversions to Google (processing asynchronously)
That is an acknowledgement that Google accepted the batch, not a report that 412 conversions were recorded. The real processing finishes some time in the next 30 minutes to 24 hours, and Google’s acknowledgement carries no per-row outcome at all — so Erdo reports the number submitted and the request id, and never a number of conversions “recorded”, because that number does not exist yet. To find out what actually happened, ask the agent to check the upload’s status using the request id from the result. It answers with one of: Where records were rejected, Google reports how many for each reason — twelve duplicates, say — but not which rows they were. Erdo reports what Google reports, so nobody acts on a row-level detail that was never sent.

Rejections are all-or-nothing

If anything in an upload fails Google’s validation, the whole batch is rejected and none of it is processed. There is no partial acceptance to sift through: correct what the error names and resubmit the batch. Erdo’s result says so explicitly, so an agent retrying on your behalf resubmits everything rather than a subset that was never the problem.

Only the click id is sent

A conversion is matched to a click by its gclid and nothing else. Erdo does not send customer email addresses, phone numbers, or any other personal identifier to Google — not hashed, not encrypted — even though Google’s API would accept them. If a lead row you’re uploading from carries contact details, those fields are ignored rather than forwarded.

Retracting a conversion you already reported

Some reported leads turn out not to be leads — spam, a duplicate, a test submission. Left alone, the optimizer keeps bidding towards whatever produced them and your reported cost per lead stays wrong in the flattering direction. Ask the agent to retract them, and it reports the correction to Google against the same conversion action. Restating a conversion’s value works the same way, for when what a lead was actually worth becomes known later. Retraction is unaffected by the reconnect above — it travels a different route and works on connections old and new alike.
  • Ad accounts — finding the account id an upload reports into
  • Approvals — the gate every ad-account write passes through
  • Dataset row actions — the standing way to report new leads as they arrive, rather than uploading by hand each time
  • Integrations — connecting and reconnecting Google Ads