Your Google Ads account reports a healthy cost per lead, but sales says the leads are students, competitors, spam and people who never pick up the phone. The campaigns are doing exactly what you told them to do. That is the problem.
The short answer: Google Ads optimizes toward whatever conversion you mark as primary, so if that is a raw form fill, it will find the cheapest form fills, junk included. A Google Ads offline conversion import sends qualified outcomes from your CRM (MQL, SQL, closed-won) back to Google, tied to the original click, so Smart Bidding learns which clicks turn into pipeline.
Why form fills are a weak primary goal
Smart Bidding is a pattern-matching system. It looks at the auctions, queries, audiences and placements that preceded past conversions and bids more for similar ones. It has no idea whether a conversion was a CFO at a target account or a bot filling in "asdf".
When the only signal is a form submission, three things tend to happen:
- Cheap inventory wins. Broad queries, Search Partners and Display placements that produce easy submissions get more budget.
- Spam gets rewarded. Bot submissions count as conversions and pull bidding toward the sources that send them.
- Quality drifts slowly. Cost per lead improves month over month while the sales team's close rate falls, and nobody connects the two until pipeline is already short.
The fix is not a better form. It is a better signal.
How offline conversion imports work
When someone clicks an ad with auto-tagging on, Google appends a click identifier to the landing page URL. You capture that ID with the lead, store it in your CRM, and later tell Google "this click became a qualified lead" or "this click became a customer worth $24,000."
Google attributes that outcome to the original click, campaign, keyword and audience, and Smart Bidding starts favoring traffic that looks like it.
The click identifiers
- GCLID: the standard Google Click ID on most web clicks.
- GBRAID and WBRAID: identifiers used for some iOS traffic where GCLID is not available because of Apple's privacy rules. GBRAID relates to app conversions and WBRAID to web conversions from app traffic.
Capture all three. If you only store GCLID, a share of your iOS traffic will never match.
Step 1: Capture click IDs into your CRM
- Confirm auto-tagging is on in Google Ads account settings. Without it, there is no GCLID.
- Add hidden fields to every lead form for
gclid,gbraidandwbraid. In HubSpot, create contact properties and add them as hidden form fields. In Salesforce, create lead fields and map them from your form tool or web-to-lead. - Store the ID on landing and populate it on submit. Visitors often browse several pages before converting, so read the parameter on arrival, save it in a first-party cookie or local storage, and write it into the hidden field when the form loads. A GTM tag or a small script handles this.
- Make it survive to the opportunity. If leads convert to contacts and opportunities, map the field through conversion so the ID is available on the record that reaches closed-won.
Test it by clicking your own ad (or adding a test ?gclid=test123 parameter), submitting a form, and checking the CRM record. You would be surprised how often the field exists but stays empty.
Also capture hashed email and phone. Enhanced conversions for leads lets Google match uploads on user data, which catches leads where the click ID was lost.
Step 2: Decide which lead stages to import
Import the stages that reflect real business value, but make sure the one you bid on has enough volume.
| Stage | Signal quality | Typical volume | Common role |
|---|---|---|---|
| Form fill | Low | High | Secondary, for observation |
| MQL | Medium | Medium | Primary when SQL volume is too low |
| SQL / meeting held | High | Lower | Often the best primary goal for B2B |
| Closed-won | Highest | Lowest | Primary with value, or secondary for reporting |
Create a separate conversion action for each stage. In Google Ads, go to Goals > Conversions, create a new conversion action, and choose the import option for data from a CRM or file, tracking conversions from ad clicks. Name them clearly, for example "CRM - SQL" and "CRM - Closed Won".
Step 3: Get the data into Google Ads
There are several routes, and the right one depends on your stack:
- Native CRM integrations. HubSpot and Salesforce both have Google Ads connections that can send lifecycle stage changes as conversions. This is the lowest-maintenance option when it fits.
- Google Ads Data Manager. Google's in-platform tool for connecting data sources and scheduling imports.
- Scheduled file uploads. A Google Sheet or file on a schedule with the click ID, conversion name, time and value. Fine for small volume, but brittle over time.
- API. Most flexible, best for custom CRMs, and more engineering work.
Whatever the route, include the conversion time with the correct time zone and upload regularly, ideally daily. Click IDs can only be imported for a limited window after the click (90 days is the long-standing limit), so long sales cycles need an earlier-stage conversion to bid on.
Step 4: Set primary and secondary goals
Only primary conversion actions (in goals the campaign uses) feed bidding. Secondary actions are reported in the "All conversions" column but do not change bids.
A practical setup for most B2B accounts:
- Form fill: secondary. Keep it for troubleshooting and volume trends.
- SQL or MQL: primary, depending on volume.
- Closed-won: primary with value if you move to value-based bidding, otherwise secondary.
Check campaign-level goal settings too. A campaign can be set to use its own goals rather than account defaults, which quietly overrides what you configured at the account level.
Step 5: Add values and consider value-based bidding
Once stages flow in, assign values. They do not need to be exact. A reasonable approach is expected value: an SQL might be worth average deal size multiplied by SQL-to-close rate, and a closed-won deal is worth its actual amount.
With values in place you can move from Maximize Conversions or Target CPA to Maximize Conversion Value or Target ROAS. The algorithm then prefers clicks that produce bigger opportunities, not just more of them.
Timelines and the learning period
Set expectations before you switch:
- Weeks 1-2: Capture click IDs and start uploading. Keep the form fill as primary while you confirm matches show up.
- Weeks 3-6: Once the new action records steady volume, make it primary and the form fill secondary. Expect a learning period of one to two weeks with some volatility.
- After that: Judge results on pipeline and cost per SQL, not cost per lead. Lead volume often drops while quality rises, which is the point.
If the qualified stage only produces a handful of conversions a month, bidding will struggle. Either bid on an earlier stage, consolidate campaigns so each one sees more data, or use a portfolio strategy across campaigns.
This loop between CRM and ad platform is the core of my conversion tracking and Google Ads management work, especially for B2B SaaS teams with long sales cycles.
FAQ
How long after a click can I import an offline conversion?
Google limits how long after a click a conversion can be imported, and 90 days has long been the maximum. The conversion action's click-through window also needs to cover the delay, so set it to match your sales cycle.
Do I still need GCLID if I use enhanced conversions for leads?
Enhanced conversions for leads can match on hashed email and phone without a click ID, but capturing GCLID, GBRAID and WBRAID as well improves coverage. I recommend capturing both.
Should closed-won deals be my primary conversion?
Only if you have enough of them for bidding to learn from. Most B2B accounts bid on SQLs or meetings and import closed-won with value, then shift to value-based bidding once volume supports it.


