Skip to content

How do I import closed-won deals into Google Ads as offline conversions?

Store the click ID (GCLID, GBRAID or WBRAID) on the CRM record, and when the deal closes, upload it with close time and deal value to its own offline conversion action within 90 days of the click. New builds use Data Manager. Of 28 lead-gen Google Ads accounts I manage, 6 bid on one (30 days to October 21, 2026).

The mechanism in three moves

Offline conversion imports close the loop between a Google Ads click and a deal that closes weeks later. There are three moving parts.

First, capture the click ID. Google appends a gclid parameter to most ad clicks, and on some iOS traffic it sends a gbraid or wbraid instead. A small script reads whichever one arrives from the URL and writes it into its own hidden field on your form. Google’s Data Manager API accepts a gclid, a gbraid or a wbraid as the ad identifier, so store all three fields rather than one. When the form submits, the ID rides into the CRM on the new contact or deal record.

Second, store it. The click ID lives on the CRM record as a custom property next to the lead. It sits there through the whole pipeline: lead, booked appointment, proposal, closed-won. It has to survive every stage transition without getting wiped, and it has a shelf life. Google’s GCLID import guide requires a click-to-conversion cycle under 90 days or under 14 days, depending on the data source. Some connected sources, such as BigQuery, import only the last 14 days on each run. If your deals routinely close later than that, upload an earlier stage you trust, like the booked consult or estimate, as its own conversion action, and send closed-won only on the deals that land inside the window.

Third, push the win back. When the deal moves to closed-won, you send an offline conversion to Google Ads carrying that original click ID plus the conversion time and the deal value, against a conversion action set up for closed-won deals only. Google matches the ID to the click that started it and credits the campaign, ad group, and keyword that produced the actual customer.

That’s the loop. The CRM is the ledger, and the win flows back to the ad platform where the bidding happens.

The loop in three moves

The win has to reach Google within 90 days of the click, or 14 days for some connected sources, depending on the data source.

Why this changes how Smart Bidding behaves

Without the loop, Smart Bidding optimizes against form-fills. The algorithm does what you tell it to. It finds the cheapest conversions. The cheapest form-fills are usually the worst leads: price shoppers and the contact who filled out four firms’ forms at once. The algorithm has no idea those leads never close, so it buys more of them.

Feed closed-won deals back in with their dollar value, move bidding to a value-based strategy, and the target changes. Now the algorithm sees which clicks turned into signed clients and which dollar amounts they carried. It bids toward revenue. The expensive keyword that produces a $40,000 matter starts winning the auction over the cheap keyword that produces 30 junk fills.

Few accounts are set up this way. Across 33 Google Ads accounts I manage, 30 days to October 21, 2026, 6 of the 28 lead-gen accounts bid on an offline import, while 27 of 28 bid on calls.

The import also isn’t the first fix. A law firm I worked with shows the order. I fixed the conversion signal and rebuilt the account: WhatConverts-qualified calls became the conversion, forms got required-field validation so a half-filled form stopped counting, and the account was rebuilt by case type with filtering ad copy and 300+ negatives. In 90 days spend fell 50%, qualified signups doubled, and cost per qualified lead fell by about half. There was no signed-case import behind that. Google Ads never saw a signed case, every qualified call still imported at $0, and I didn’t isolate which change did what.

On call-first accounts a click-ID import has a second limit: only a small share of calls carry a click ID. Match the rest by the caller’s number and call time with enhanced conversions instead.

Three ways to build it

Pick the method that matches your stack and your tolerance for maintenance.

Zapier or a similar connector. A Zap fires when a deal hits closed-won, filters out records without a click ID, and runs Zapier’s Google Ads Send Offline Conversion action with the GCLID and deal value. That action needs a GCLID and an “import from clicks” conversion action. No code to maintain. The trade is that you pay per task and add a dependency that can break quietly on a plan change or an auth expiry.

Your call-tracking platform. When calls are the lead, the platform that tracks them can often do the sending. Most of my lead-gen clients run WhatConverts for call and form tracking and qualification, and its Google Ads integration can send leads once they’re marked quotable or get a quote or sales value, with that value attached. The CRM’s job is to tell it which leads qualified and which closed.

Custom webhook plus a Cloudflare Worker. A CRM workflow fires a webhook when the deal closes. A Cloudflare Worker receives it, formats the offline conversion, and posts it to Google. New builds go to the Data Manager API. From June 15, 2026, the Google Ads API stopped accepting offline conversion and enhanced-conversions-for-leads uploads from developer tokens that hadn’t already been sending them. Tokens that were sending them were allowlisted and keep API access for now, though Google recommends moving them to the Data Manager API too. You own the code, it costs near nothing to run, and you control the exact payload and timing. The trade is that a failed upload is yours to catch.

A spreadsheet upload, to start. Before any automation, you can export closed-won deals with their click IDs and upload them to Google Ads as a manual offline conversion file. It’s tedious and it lags, but it proves the loop works and validates that your click IDs actually matched clicks before you spend time on a webhook.

Where this sits in the larger stack

Importing closed-won deals is layer eight of the Lead Quality Stack, the loop that’s unique to lead generation. It only works if the layers under it are wired. The click ID has to land on the form and survive into the CRM. The CRM has to expose closed-won through a webhook or API. Your primary conversion in Google Ads should already be a qualified lead, which on my accounts means a booked appointment, a booked consult or estimate, not a raw form-fill. The offline import then sharpens a signal that’s already pointed the right way.

When I audit this, I check two things in order. First, is the primary conversion a qualified lead, a booked appointment or a WhatConverts-qualified call, rather than a form fill? Second, where your CRM holds closed deals, are they reaching Google Ads with the click ID and a value? If the first is wrong, you’re optimizing toward the wrong event before the imports even matter.

If you want the click-ID path and the offline import checked against your own account, the free 25-page Google Ads Setup Checklist covers the conversion settings around it, with no email gate, and the free ads audit reads the whole conversion setup on your account, back within 24 hours of read-only access.

When to bring me in

Bring me in when closed deals live in your CRM and never reach Google Ads, when the CRM doesn’t store the click ID, or when an offline import is set up but its conversion column stays empty. I’ll find where the signal breaks before it reaches Google Ads.

I'm Conner Crowe, and I write every audit myself. Send the free audit request and add me as a read-only user, and within 24 hours of access you'll have a written read on what your account counts as a lead and what to fix first. No call needed, and nothing in your account or store changes.

Request a free Google Ads audit

See how I run Google Ads for service businesses.

Where to look in your account.

What Google is allowed to count

Goals, then Summary, then View all conversion actions

  1. Tracking status. Inactive or Needs attention means the tag hasn’t recorded anything lately, so check it before you trust the totals.
  2. Primary or Secondary. Only Primary actions feed Smart Bidding; Secondary ones are reported and ignored by the bidding.
  3. Count. One per click for leads, Every for purchases. A lead form set to Every counts a double-submit twice.
  4. Included in account-level goals. Yes is what the campaigns actually optimize toward.

From my own Google Ads account, October 2026. Tap or click the screen to see it full size.

Tools for this diagnosis

All my free tools

Related questions

Back to the full lead quality: the diagnosis library

Same diagnosis,
run on your leads.

Add me as a read-only user and I'll write the audit myself: what your account counts as a lead and what to fix first, 5 to 7 pages, back within 24 hours of access. No call needed. If you'd rather talk first, a call is open too.