Paid Advertising

Offline Conversions for Google Ads: Sending Sales Back With Better Matching

How to send booked calls and closed sales back to Google Ads as offline conversions, improve match rates with click IDs plus hashed email and phone, and verify them.


Google Ads offline conversions let you tell Google what happened after the click: a lead booked a call, showed up, became qualified, paid. For any business that sells on the phone, this is the difference between Google optimizing for form fills and Google optimizing for buyers. Smart Bidding is only as smart as the conversions you feed it, and if the only conversion it sees is “submitted the opt-in form,” it will happily find you thousands of people who love submitting opt-in forms.

The mechanics are simple in principle. You capture the Google click ID when someone arrives, store it with the lead, and when the sale happens days or weeks later, you upload a conversion that references that click. In practice, a large share of offline conversions never get matched to an ad, and most teams don’t find out because the upload “succeeded.” This post covers how offline conversion tracking works, why matches fail, how to improve your match rate with click IDs plus hashed contact data, and how to verify that Google actually counted what you sent.

How Google matches an offline conversion to a click

When Google receives an offline conversion, it has to answer one question: which ad click does this belong to? It has a few ways to work that out.

  • The GCLID. The Google click ID appended to your landing page URL when auto-tagging is on. If you capture it and send it back with the conversion, Google can match deterministically.
  • GBRAID and WBRAID. Click identifiers Google uses for some iOS traffic where the GCLID isn’t available. If your capture only looks for gclid, you’ll miss these.
  • Hashed user data. The lead’s email address and phone number, normalized and SHA-256 hashed, which Google can match against signed-in Google users. This is the idea behind enhanced conversions for leads.

The best-performing setups send both: a click identifier when one exists, plus hashed email and phone. The click ID gives a precise match when it’s present; the hashed data gives Google a second route when the click ID was lost, the person switched devices, or the click came through a path that dropped the parameter.

Why offline conversions fail to match

If you’ve ever uploaded 200 sales and seen 80 show up in Google Ads, here’s where the other 120 usually went.

The click ID was never captured. The landing page loaded, but the form didn’t store the GCLID with the lead. Common causes: a page builder that strips query parameters on redirect, a form on a different domain, or a calendar embed that creates the booking in a separate system.

The click ID was captured on the wrong record. The person clicked an ad, left, came back via email a week later and filled the form. If your tracking only reads the URL at form time, the GCLID is gone. You need it stored on the visitor’s session, not just the URL.

The conversion is outside the lookback window. Each conversion action has a click-through conversion window, up to 90 days. A coaching sale that closes 100 days after the click won’t match. Set the window on your offline actions to the maximum if your sales cycle is long.

The conversion time is wrong. Conversion times need a time zone, and a conversion can’t be dated before its click. Batch jobs that stamp everything with the upload time, or with a date in the wrong time zone, cause both rejections and misattributed days.

Contact data is badly formatted. Hashed email and phone only match if they’re normalized before hashing: lowercase and trimmed email, phone in E.164 format with country code. Hashing “ John@Example.com “ gives a different hash than “john@example.com.”

The conversion action isn’t counted. This one is sneaky. The upload works, Google records the conversion, but the action is set as secondary, so it shows only under All conv. and Smart Bidding ignores it.

Setting up offline conversions step by step

Here’s a setup that works for a call-based funnel.

1. Turn on auto-tagging and capture click IDs on the session

Make sure auto-tagging is enabled in Google Ads. On your site, capture gclid, gbraid and wbraid when the visitor lands, and store them on a first-party session that persists across pages and return visits. Write them onto the lead record when they convert. Test across every subdomain and form tool in your funnel. Our guide on server-side tracking explains why a first-party session is more reliable than reading the URL at submit time.

Your opt-in and application forms already ask for email and phone. Make sure your privacy policy and consent flow cover sharing hashed data with ad platforms, and in regions that require it, pass consent signals with your uploads.

3. Create offline conversion actions for the stages that matter

Don’t just send “Purchase.” For a high-ticket funnel, a typical set:

Conversion action Fires when Use for bidding?
Booked call A call is scheduled Early on, while volume is low
Qualified call Call outcome is qualified or showed Often the best primary goal
Sale First payment received Primary once volume supports it

Smart Bidding needs volume. If you close 15 deals a month on Google, “Sale” alone may be too sparse to optimize against; “Qualified call” with values may work better. Set the actions you want to bid on as primary and the rest as secondary.

4. Send values that reflect reality

Attach a value to each conversion. For sales, use the actual revenue (or the first payment, if you prefer a consistent cash measure). For earlier stages, use an expected value: if 30% of qualified calls close at $8,000, a qualified call is worth about $2,400. Values let value-based bidding steer toward the audiences that produce bigger deals.

5. Upload promptly

Send conversions as they happen, not in a monthly CSV. Faster feedback helps bidding, and you avoid running into the lookback window on older clicks. If you do backfill, check that conversion times are the real event times.

Improving match rate with click ID plus hashed contact data

Most of the improvement comes from sending more than one way to match on every conversion. A worked example, with illustrative numbers:

Say you close 120 sales a quarter that came through Google traffic.

  • With GCLID only, captured from the URL at form submission, perhaps 70 of those leads still had a click ID attached. Some came back through email, some booked on mobile after clicking on desktop, some went through a calendar embed that dropped the parameter. Google can match at most 70.
  • With GCLID stored on a persistent session, you recover the return visitors. Say you’re now at 95.
  • With hashed email and phone added, Google gets a second route on the remaining 25, and on any where the click ID matched poorly. Not all will match, since some people use emails Google doesn’t know, but you’ve given every conversion a fair chance.

The difference between 70 and well over 100 matched sales a quarter is meaningful for an algorithm learning which searches produce buyers.

In Callix, conversions sent to Google Ads are matched on a durable click ID plus hashed contact details, and a conversion that includes the lead’s email or phone uploads with them rather than being rejected before it can match. The click ID comes from the first-party session the pixel kept, not just the URL on the day the form was filled.

Verifying that Google actually accepted each conversion

This is the step almost everyone skips. An upload API returning “success” means Google received the conversion. It doesn’t mean Google matched it to a click or counted it. Google processes conversions after they arrive and can still reject them, and its reasons are specific: click not found, click older than the conversion window, conversion dated before the click, and so on.

What to check, regularly:

  1. Per-conversion status. For each conversion you sent, did Google accept it, reject it, or is it still processing? If rejected, why?
  2. Diagnostics in Google Ads. The conversion action’s diagnostics show match rates and upload issues over time.
  3. Primary vs. secondary. Is each action you send included in the Conversions column?
  4. Reconciliation. Compare sales in your CRM or payment processor for Google-sourced leads against conversions recorded in Google Ads for the same period.

Callix checks back with Google after each send and shows the answer in Conversions → Event logs: Google accepted, Google rejected, or still processing. Open a rejected row and you see Google’s reason, such as the ad click not being found or being older than the conversion action’s lookback window. Settings → Google Ads also shows, for each conversion action, whether Google counts it in your Conversions column, with a warning on secondary actions, because conversions sent to those only appear under All conv.

A troubleshooting table

Symptom Likely cause Fix
Uploads succeed, nothing appears in Conversions Action is secondary or excluded Make it primary, or include it in the goal
Many “click not found” rejections GCLID not captured, or captured from wrong account Check capture on every funnel step; confirm the click ID is from this Google Ads account
“Click too old” rejections Sales cycle longer than conversion window Extend the window to 90 days for offline actions
Conversions land on the wrong day Time zone missing or upload time used Send the real event time with time zone
Low match on leads without click ID No or unnormalized hashed data Send normalized, hashed email and phone
iOS traffic underreported Only capturing gclid Also capture gbraid and wbraid

What to send first if you’re starting from zero

If you have nothing set up today, start with one offline conversion action, “Qualified call,” sent with a click ID plus hashed email and phone, with an expected value. Watch the event-level acceptance for two weeks. Once you trust the data, add “Sale” with actual revenue, and decide which one should be primary based on monthly volume.

The broader principle is the same across platforms: give the algorithm fewer, truer signals, and verify they arrived. If you’re doing the same on Meta, our Conversions API walkthrough covers that side, and how to pass CRM data back to your ad platforms covers the CRM wiring for both.

Book a demo