Lead Quality · Closed-won feedback
How do I import closed-won deals into Google Ads as offline conversions?
Capture the gclid at the form, store it on the CRM record, and when the deal hits closed-won push an offline conversion back to Google Ads with that gclid plus the deal value. Smart Bidding then bids toward revenue instead of form-fill count. Build it with Zapier or a custom HubSpot webhook.
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 gclid. Google appends a gclid parameter to every ad click. A small script reads it from the URL and writes it into a hidden field on your form. When the form submits, that gclid rides into the CRM on the new contact or deal record.
Second, store it. The gclid lives on the CRM record as a custom property next to the lead. It sits there through the whole pipeline: lead, MQL, SQL, closed-won. Most service-business sales cycles run weeks to months, so this field has to survive every stage transition without getting wiped.
Third, push the win back. When the deal moves to closed-won, you send an offline conversion to Google Ads carrying that original gclid plus the conversion time and the deal value. Google matches the gclid to the click that started it and credits the campaign, ad group, and keyword that produced the actual customer.
That is the loop. The CRM is the source of truth, and the win flows back to the ad platform where the bidding happens.
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 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.
Bad data leads to bad bids. Bad bids lead to wasted spend. This is the layer that fixes the data.
A real-estate law firm I worked with had this exact gap. Once closed-won deals fed back into Google Ads, I cut spend roughly 50 percent and signups roughly doubled. The budget stopped chasing form-fill count and started chasing clients.
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, reads the gclid and deal value off the record, and calls the Google Ads offline conversion endpoint. 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.
Custom webhook plus a Cloudflare Worker. A HubSpot workflow fires a webhook when the deal closes. A Cloudflare Worker receives it, formats the offline conversion, and posts it to the Google Ads API. A working HubSpot-closed-won to Google Ads pipeline is about 50 lines plus the Worker. You own it, it costs near nothing to run, and you control the exact payload and timing. I walk through that build in the closed-won webhook post.
A spreadsheet upload, to start. Before any automation, you can export closed-won deals with their gclids and upload them to Google Ads as a manual offline conversion file. It is tedious and it lags, but it proves the loop works and validates that your gclids 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 is unique to lead generation. It only works if the layers under it are wired. The gclid 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, not a raw form-fill, so the offline import sharpens a signal that is already pointed the right way.
When I audit this, I run the O and S passes of the CLOSE Audit. O is offline conversion imports: are wins flowing back, and do they carry the gclid and the value. S is the signal swap: is the primary conversion a qualified lead rather than a form-fill. If O is missing, the algorithm is guessing at which leads close. If S is wrong, you are optimizing toward the wrong event before the imports even matter. I cover all five passes across six service-business accounts in the CLOSE Audit walkthrough.
If you want the gclid path and the offline import checked against your own account, the free 25-page Google Ads Setup Audit inspects it with no email gate, and the Lead Quality Audit runs the full CLOSE methodology on your stack.
Related questions
-
Why is my Google Ads cost per lead rising?
Cost per lead rises when CPC climbs or conversion rate drops. How to decompose it, with real CPL benchmarks from a twelve-account home-services book.
Read the answer
-
Do I need a CRM to run Google Ads for a service business?
A senior operator's answer on whether a CRM is required for service-business Google Ads, what it has to expose, and what to do before you own one.
Read the answer
-
Should I optimize Google Ads for form fills or qualified leads?
Optimizing Google Ads for raw form fills teaches Smart Bidding to find junk. Here is how to make the qualified lead your one primary conversion and bid tCPA on it.
Read the answer
Want this diagnosed in your account?
Same diagnosis,
run on your account.
Thirty minutes on the phone. I look at your spend, your tracking, and your search-term reports before the call. You walk out with a clear list of what is leaking and what to fix first.