docs
Open the app →

Sending conversions to Google Ads

Sending conversions back to Google Ads so its bidding optimises on what actually happened — matched on the gclid, server to server, with no tag on the page.

Google's bidding optimises on the conversions Google knows about. A lead that arrives by WhatsApp two days later, or a sale on an affiliate network three pages after the click, is one it never sees — so it bids as though those campaigns earned nothing.

Offline conversion import closes that gap. Every conversion UTMCAP records for a Google click is uploaded to a conversion action in your account, matched on the gclid — the id Google puts on the click.

It is server to server. No tag on the page, no script, no cookie. That is the point: it keeps working for visitors who block scripts, refuse cookies, or tap a WhatsApp button and never come back to the page at all.

out, when Google sends the clickAuto-taggingGoogle puts gclid on theURLExternal IDnames the parameter toreadThe clickstored with the gclid onitback, seconds or days laterThe conversiona goal, or a networkpostbackMatched by gclidto the click Google billedyou forUploadedto one conversion actionOnly the statuses you chose are sent. A refunded sale is never reported as revenue.
The same round trip as a postback, with Google at both ends. Nothing is asked of the page — the gclid arrives on the URL and the conversion goes back over an authenticated call, so it survives a blocked script or a refused cookie.

#What has to be in place

Four things, and the upload is silent if any one of them is missing.

Where What Why
Google Ads Auto-tagging on Puts gclid on the URL. Without it there is nothing to match a conversion to.
Google Ads A conversion action that accepts imports The upload targets it by id.
UTMCAP The traffic source is connected to Google Ads The upload uses the same login the cost sync uses.
UTMCAP The source's External ID names the parameter holding the gclid This is where UTMCAP reads it from.

The last one is the one people miss. A source can be connected, a conversion action chosen, and everything look configured — and nothing is ever sent, because no click carries a gclid UTMCAP can find.

To check: open the clicks log and look at the External ID column. If it is empty on your Google clicks, the upload has nothing to send and has been sending nothing.

#Do not also fire the Google pixel

This is the mistake that costs money rather than data.

You can add a Google Ads pixel in Tag Manager, which fires a conversion from the browser. If it points at the same conversion action the upload targets, Google counts one sale twice:

  • once from the browser, when the visitor reaches your thank-you page;
  • once from the upload, a few seconds later, against the same click.

Nothing deduplicates them. The upload carries an order id so that a retry is not counted twice, but that only matches it against other uploads — the pixel sends no such id, so Google has no way to know the two are the same event.

Smart Bidding then sees twice the conversions, decides the campaign is twice as profitable as it is, and bids up accordingly. The figures look wonderful and the money goes.

Choose one per conversion action:

Use the upload Use the pixel
Survives ad blockers and consent refusals Yes No
Counts a lead that never returns to the page Yes No
Knows whether the sale was approved or refunded Yes No
Works with no code on the page Yes No
Reports the instant the visitor converts Within seconds Immediately

For affiliate sales and for WhatsApp or phone leads, the upload is the right one and the pixel should be left out. If you want both — an in-browser signal for something else — point them at different conversion actions and mark one as secondary in Google Ads, so only one feeds bidding.

#If you use the pixel instead

The pixel is the other way to tell Google, and it needs a conversion action set up to receive a call from your page rather than from a Google tag.

In Google Ads, create the conversion action with Source: Website and the data source showing Manual event. That is the one that expects your own gtag call, which is what the tag makes. An action set to be fired by the Google tag automatically will never receive anything from UTMCAP.

The two fields are one string split in half. Google shows you a send_to value like AW-123456789/AbC-D_efG. The part before the slash is the Conversion ID, the part after is the Conversion label. Pasting the whole string into the ID box is the usual mistake: it looks right, fires nothing, and reports no error anywhere.

A pixel with no value sends no amount. Google then falls back to the default value on the conversion action, so every conversion is worth the same — often ₹1 or $1, whatever was typed when the action was made. If you want bidding to prefer better leads, either set a value on the action or add one under Values from the page so the pixel reports what the conversion was actually worth.

A primary action feeds bidding. Google's Primary action setting decides whether Smart Bidding optimises toward it. Several goals all marked primary with the same value tells Google a phone tap and a completed lead form are worth the same. Give them different values, or mark the weaker ones secondary.

Before you turn one on, open the conversion action and look at its Conversion type ID. If it matches the action your upload targets, the two are reporting the same sale twice. Different ids mean they are separate actions and both can run.

#What gets sent, and when

Which conversions. Only the statuses you chose on the integration — approved unless you also asked for pending. A rejected conversion or a chargeback is never uploaded. This is the quiet advantage over a pixel: a lead that turns out to be junk is not reported to Google as a sale.

Which clicks. Only those carrying a gclid. Google refuses a click older than its own window, so a conversion that arrives months later is not accepted.

How quickly. Two paths, one result:

  • Instantly, as soon as a postback or a goal is recorded — after the response has gone, so the network never waits on Google;
  • Hourly, as a safety net, picking up anything the instant send missed, failed on, or never saw, such as conversions imported from a network's API.

Neither can send the same conversion twice. Each claims a conversion before sending it, and a claim only succeeds for one nobody has sent and nobody is sending.

#When nothing arrives in Google Ads

Work down this list — it is ordered by how often each one is the answer.

  1. Is the External ID set on the traffic source? Empty means no gclid, which means nothing is sent, silently.
  2. Is auto-tagging on in Google Ads? Without it the gclid never reaches your landing page.
  3. Do your clicks show an External ID? Check the clicks log. If the column is empty, the problem is upstream of UTMCAP.
  4. Is the conversion the right status? Only approved is sent unless you chose otherwise.
  5. Is the click too old? Google refuses conversions against clicks beyond its window.
  6. Is the conversion action one that accepts imports? A web conversion action will not take an upload.

Conversions appear in Google Ads some hours after upload, not immediately — Google batches them into its own reporting.

#See also

Tracking tips by email

Practical tips on tracking, attribution and ad costs, from the people who build UTMCAP.

Unsubscribe any time. Privacy policy