How to Set Up Offline Conversions and Link CRM Sales to Google Ads

Table Of Contents
- What Changed in Google Ads Offline Tracking in 2026
- How Offline Conversion Import Works: Step by Step
- Enhanced Conversions for Leads: The GCLID Alternative
- Connecting CRM Platforms to Google Ads
- Conversion Lag and Attribution Windows
- Offline Conversion Tracking with Performance Max
- Tracker Integration for Media Buyers
- Data Validation and Troubleshooting
- Quick Start Checklist
- What to Read Next
Updated: April 2026
TL;DR: Offline conversion tracking lets Google Ads see which clicks turn into real sales in your CRM β so Smart Bidding optimizes for revenue, not just form fills. Advertisers who import CRM data typically cut CPL by 20-40% within 30 days. If you need a verified Google Ads account to start right away β grab one and skip the verification queue.
| β Suits you if | β Not for you if |
|---|---|
| You generate leads that close offline (calls, meetings, in-store) | All conversions happen online with no sales team |
| Your CRM stores GCLID or enhanced conversion data | You don't use a CRM or spreadsheet for leads |
| You want Smart Bidding to optimize for revenue, not clicks | Your monthly ad spend is under $300 and volume is too low |
Offline conversions connect the last mile between a Google Adsclick and a closed deal in your CRM. When a visitor fills out a form, Google attaches a GCLID (Google Click ID) to that session. Your CRM stores the GCLID alongside the lead record. Once the lead converts β signs a contract, makes a deposit, completes a purchase β you upload that conversion back to Google Ads with the GCLID, timestamp, and value. Google matches it to the original click and feeds the signal into Smart Bidding.
What Changed in Google Ads Offline Tracking in 2026
- Advertiser certification is now handled directly inside the Google Ads interface (launched February 2026) β no more separate portals for verification
- Providing false information during verification is now treated as a policy violation since November 2025, leading to immediate account suspension
- 86% of active campaigns use automated bidding strategies (Google Ads Blog, 2026), making offline conversion data more critical than ever for bid optimization
- Performance Max serves 62% of all Google Ads clicks β PMax campaigns rely heavily on conversion signals to allocate budget across channels
- Enhanced Conversions for Leads now supports hashed email matching alongside GCLID, reducing data loss from cookie restrictions
How Offline Conversion Import Works: Step by Step
The process has three stages: capture, store, upload. Each one has pitfalls that can break the pipeline.
Stage 1 β Capture the GCLID
When someone clicks your ad, Google appends a gclid parameter to the landing page URL. Your form or landing page must grab this value and pass it to the backend. Most form builders (Gravity Forms, Typeform, HubSpot Forms) support hidden fields. Add a hidden field named gclid, then use JavaScript to extract the value from the URL and populate it automatically.
If you use a tracker like Keitaro or BeMob, the GCLID is captured as a sub-parameter and stored alongside the click record. This is especially useful for media buyers running multiple accounts.
Related: Google Ads Offline Conversion Imports: Complete Setup Guide for 2026
β οΈ Important: If your landing page strips URL parameters or redirects through a cloaker without passing the GCLID, every offline conversion from that page is lost. Test the full click path before scaling β open your ad URL, check that the GCLID reaches the form submission payload.
Stage 2 β Store GCLID in Your CRM
The GCLID must live alongside the lead record in your CRM. In HubSpot, Salesforce, Pipedrive, or any pipeline tool, create a custom field called gclid (text type). Your form integration or webhook should map the hidden field value directly into this CRM field.
Every lead record now carries two critical pieces of data: the GCLID that ties it to a Google Ads click, and the deal stage that tells you whether this lead became revenue.
Case: E-commerce agency, $5,000/month Google Adsspend, B2B SaaS client. Problem: Smart Bidding optimized for form fills β 60% of leads were unqualified. CPA looked great at $45, but cost per qualified lead was $180. Action: Added GCLID capture to all forms, mapped to HubSpot, uploaded closed-won deals weekly via Google Ads API. Result: Within 3 weeks, Smart Bidding shifted budget to campaigns generating qualified leads. Cost per qualified lead dropped to $95. Overall ROAS improved by 2.1x.
Stage 3 β Upload Conversions to Google Ads
You have three upload methods:
| Method | Best For | Frequency | Setup Complexity |
|---|---|---|---|
| Manual CSV upload | Testing, low volume | Weekly | Low |
| Google Ads API | Automated pipelines | Daily/hourly | Medium |
| Zapier / Make integration | Mid-volume, no dev team | Daily | Low-Medium |
For manual upload: go to Tools & Settings β Conversions β Uploads. Download the template, fill in GCLID, conversion name, conversion time, and conversion value. Upload the file.
For API-based upload: use the ConversionUploadService with the uploadClickConversions method. Each record needs: gclid, conversionAction (resource name), conversionDateTime, and optionally conversionValue and currencyCode.
Need verified Google Ads accounts for running campaigns at scale? Pre-verified accounts skip the documentation queue β start importing conversions from day one.
Enhanced Conversions for Leads: The GCLID Alternative
Not every setup can reliably pass GCLIDs through the entire funnel. Enhanced Conversions for Leads (EC for Leads) solves this by matching conversions using hashed email addresses instead.
Here is how it works:
- Visitor clicks your ad and lands on the page
- Visitor fills out a form with their email address
- The Google tag captures and hashes the email (SHA-256), sending it to Google
- When the lead converts in your CRM, you upload the hashed email + conversion data
- Google matches the hashed email to the original ad click
This approach is more resilient against cookie loss and works even when GCLID gets stripped by redirects or privacy tools.
Related: Google Ads Enhanced Conversions: Setup, Hashing, and Benefits in 2026
When to Use GCLID vs Enhanced Conversions
| Factor | GCLID Import | Enhanced Conversions for Leads |
|---|---|---|
| Accuracy | 95%+ match rate | 85-90% match rate |
| Cookie dependency | High β GCLID stored in cookie | Low β uses email hash |
| Setup complexity | Requires hidden field on every form | Requires Google tag + email field |
| CRM requirement | Must store GCLID per lead | Must store email per lead |
| Privacy compliance | GCLID is pseudonymous data | Email is hashed before sending |
For media buyers managing multiple campaigns across different accounts, Enhanced Conversions is often simpler because you don't need to debug GCLID passthrough on every landing page variation.
β οΈ Important: Enhanced Conversions requires that the user's email submitted on your site matches the email associated with their Google account. If your audience uses burner emails for form fills, match rates will drop significantly. In that case, stick with GCLID import.
Connecting CRM Platforms to Google Ads
Salesforce Integration
Google Ads has a native Salesforce integration. Go to Tools & Settings β Linked accounts β Salesforce. Authorize access, select which Salesforce milestones (Lead Status or Opportunity Stage) should count as conversions. Google pulls these automatically β no manual uploads needed.
The Salesforce integration supports importing multiple milestones as separate conversion actions. For example, you can import "Qualified Lead" as one conversion and "Closed Won" as another, assigning different values. Smart Bidding then optimizes toward the milestone you set as your primary conversion.
HubSpot Integration
HubSpot does not have a native Google Ads offline conversion integration. You need either:
Related: Tracker Integration with Google Ads: Step-by-Step Guide for Media Buyers
- Zapier/Make workflow: Trigger on deal stage change in HubSpot β format GCLID + timestamp + value β send to Google Ads API via HTTP request
- HubSpot Operations Hub + custom code: Write a Node.js action that calls the Google Ads API directly when a deal moves to "Closed Won"
- Third-party connector: Tools like Supermetrics or Leadsbridge handle the mapping
Pipedrive, Zoho, and Other CRMs
For CRMs without native integration, the workflow is the same: extract GCLID, deal value, and conversion timestamp from your CRM, then push to Google Ads via API or scheduled CSV upload. According to WordStream, the average CPL across Google Ads is $70.11 and rising (+5.13% YoY) β importing offline conversions is one of the few levers that consistently reduces cost per actual sale rather than cost per form fill.
Case: Solo media buyer, verified Google Adsaccount from npprteam.shop, $150/day budget, financial services vertical. Problem: Running Search campaigns optimized for "Submit Form" β getting 8 leads/day at $19 CPL, but only 1 in 10 became a paying client. True cost per client: $190. Action: Set up GCLID tracking on landing page, stored in Google Sheets as CRM, uploaded closed deals via CSV weekly. Result: After 2 weeks of data, switched to Target CPA bidding optimized for "Paid Client" conversion. CPL rose to $35, but conversion-to-client rate jumped to 4 in 10. True cost per client: $87.50. Budget efficiency improved 2.2x.
Conversion Lag and Attribution Windows
Offline conversions often happen days or weeks after the click. A B2B lead might click on Monday, fill a form on Tuesday, get a demo on Thursday, and close the deal three weeks later. Google Ads allows a conversion window of up to 90 days β the time between the click and the uploaded conversion.
Key rules for conversion lag:
- Upload conversions within 24 hours of the sale closing β this gives Smart Bidding the freshest signal
- Set your conversion window to match your actual sales cycle. If your average deal closes in 14 days, set the window to at least 21 days
- Don't wait to batch uploads monthly β weekly or daily uploads give Smart Bidding enough data to learn faster
- The GCLID expires after 90 days. If your sales cycle exceeds 90 days, you must use Enhanced Conversions for Leads instead
β οΈ Important: If you upload conversions with timestamps older than your set conversion window, Google silently drops them β no error, no warning. Always verify that your upload timestamps fall within the active window.
Offline Conversion Tracking with Performance Max
Performance Max campaigns are now the dominant campaign type, serving 62% of all Google Ads clicks. PMax distributes your budget across Search, Display, YouTube, Gmail, Discover, and Maps β automatically. It relies entirely on conversion signals to decide where to spend.
Without offline conversion data, PMax optimizes for whatever online conversion you set β usually a form fill or page visit. Feed it real revenue data from your CRM, and PMax shifts budget toward the channels and audiences that generate actual paying customers.
According to Google, advertisers using PMax with offline conversion data see up to +227% revenue growth compared to traditional campaign structures. The key is volume: PMax needs at least 30 conversions per month in a single conversion action to optimize effectively.
Tracker Integration for Media Buyers
If you run traffic through a tracker (Keitaro, BeMob, Binom, RedTrack), offline conversion import adds another layer of optimization.
| Tracker | Google Ads GCLID Support | Offline Upload | Best For |
|---|---|---|---|
| Keitaro | β Native | Via API/postback | Solo buyers, advanced setups |
| RedTrack | β Native | Built-in integration | Teams, multi-source |
| BeMob | β Via macros | Manual/API | Budget-friendly setups |
| Binom | β Native | Via API | High-volume buyers |
The workflow: tracker captures GCLID on click β passes to landing page β form sends to CRM with GCLID β CRM updates deal status β postback fires to tracker AND conversion uploads to Google Ads.
For a deeper dive on connecting your tracker, read Tracker Integration with Google Ads.
Need a Google Ads account ready for campaign launch? Skip weeks of verification β pre-verified accounts come with advertiser status confirmed and ready to import conversions.
Data Validation and Troubleshooting
Before scaling, verify your pipeline end-to-end:
- Click your own ad (use a test campaign with $1 budget)
- Check that GCLID appears in the landing page URL
- Submit the form β verify GCLID is stored in CRM
- Create a test conversion upload with that GCLID
- Check Tools & Settings β Conversions β Uploads for success/failure status
Common errors:
- "GCLID not found" β the click happened outside your conversion window, or the GCLID was malformed
- "Conversion action not found" β the conversion action name in your upload doesn't match exactly what's configured in Google Ads
- "Duplicate conversion" β you uploaded the same GCLID + conversion action + timestamp twice. Google deduplicates automatically, but it flags the row
- Conversions show in reports but Smart Bidding doesn't use them β the conversion action must be set to "Primary" (not "Secondary") in your conversion settings
Quick Start Checklist
- [ ] Create a conversion action in Google Ads (type: Import β CRM, or Click Import)
- [ ] Add hidden GCLID field to all lead forms
- [ ] Add JavaScript to auto-populate GCLID from URL parameter
- [ ] Create a GCLID custom field in your CRM
- [ ] Map form submissions to CRM with GCLID included
- [ ] Perform a test click β form fill β CRM check β upload cycle
- [ ] Schedule regular uploads (daily or weekly via API, Zapier, or CSV)
- [ ] Set conversion window in Google Ads to match your sales cycle + buffer
- [ ] Switch campaign bidding to Target CPA or Target ROAS using the offline conversion as primary































