The short answer
Connecting Google Ads to your CRM means three things: capturing the Google click ID (gclid) on every form submission, storing it against the lead in your CRM, and uploading meaningful pipeline events (qualified lead, opportunity, closed deal) back to Google Ads as offline conversions. Once the loop is closed, Smart Bidding optimises towards real revenue instead of form submissions, and your CPA looks dramatically more honest.
For HubSpot, Salesforce and Zoho there are native Google Ads integrations that handle most of this in 2-3 hours. For Pipedrive, Monday, Microsoft Dynamics and custom-built CRMs, the same pattern works via Zapier, Make, or the Google Ads API directly.
Why connecting your CRM to Google Ads matters
Most UK lead-gen accounts treat "form submitted" as the conversion. Google then optimises towards more form submissions - including the junk leads, the wrong-fit ones, and the bots that slip past hCaptcha. Within weeks the algorithm has learnt to find people who fill in forms but never buy.
Connecting your CRM flips this. Smart Bidding sees only the conversions you tell it about - and you only tell it about leads that became real. The downstream effects are dramatic:
- CPA looks higher in the Google Ads UI (you're counting fewer conversions) - but real-world CPA drops 30-55%
- Lead quality improves within 60 days as Smart Bidding shifts spend to higher-converting segments
- Sales team stops complaining about marketing leads
- Budget conversations change - finance can see spend tied to revenue, not vanity lead volume
- tROAS becomes possible if you pass actual deal values, unlocking Google's most powerful bid strategy
According to Think with Google's own published data, advertisers using value-based offline conversions see a 30-50% uplift in conversion value at the same CPA. Ben's UK client data sits inside that range - typically 35-45% CPA reduction within 90 days.
How the connection works end-to-end
Here's the data flow at a glance:
- User clicks a Google Ad → URL gains a
?gclid=ABC123parameter - JavaScript on the landing page captures the gclid and stores it in a 90-day cookie
- User submits a form → hidden field passes the gclid into the form payload
- CRM stores the gclid against the lead/contact record (custom property)
- Lead progresses through the pipeline - SQL, Opportunity, Closed Won
- At each meaningful stage, the CRM (or middleware) uploads the event to Google Ads with the original gclid
- Google Ads credits the conversion to the original click and feeds Smart Bidding
This is called offline conversion import (OCI). It's the foundation of every closed-loop attribution setup in Google Ads. Google's official documentation lives in the offline conversions help centre.
Step 1: Capture the gclid on every landing page
Before anything else, enable auto-tagging in Google Ads (Admin → Account Settings → Auto-tagging). Without auto-tagging, gclids never appear on URLs and the rest of this setup does nothing.
Then add a small script to every landing page that catches the gclid from the URL and stores it for 90 days:
(function() {
var params = new URLSearchParams(window.location.search);
var gclid = params.get('gclid');
if (gclid) {
document.cookie = 'gclid=' + gclid + ';max-age=7776000;path=/;SameSite=Lax;Secure';
}
})();
On every form, add a hidden field and populate it from the cookie:
<input type="hidden" name="gclid" id="gclid_field">
<script>
var match = document.cookie.match(/gclid=([^;]+)/);
if (match) document.getElementById('gclid_field').value = match[1];
</script>
Most form builders have native gclid capture - HubSpot Forms, Gravity Forms, Formstack, Marketo, Pardot, Webflow Forms - so check there first before writing custom JavaScript. HubSpot's gclid capture takes one click in form settings.
Step 2: Store the gclid against the lead in your CRM
Create a custom property on your lead/contact object called something like google_click_id or gclid. Single-line text, 100 characters is enough. Map your form's hidden gclid field to this property so every new lead arrives with the gclid attached.
Same idea applies whatever CRM you use:
- HubSpot: Custom property on Contact called "Google Ad Click ID"
- Salesforce: Custom field on Lead and Opportunity objects called "GCLID__c"
- Pipedrive: Custom field on Person/Deal called "Google Click ID"
- Zoho CRM: Custom field on Lead and Deal modules
- Microsoft Dynamics 365: Custom field on Lead and Opportunity entities
Also store the utm_source, utm_medium, utm_campaign and landing page URL alongside the gclid - useful for diagnostics and channel reporting later.
Step 3: Create offline conversion actions in Google Ads
In Google Ads navigate to Goals → Conversions → New conversion action → Import → Other data sources or CRMs → Track conversions from clicks. Create one conversion action per pipeline stage you want to track. Ben's standard setup:
- SQL Qualified - OCI (Primary, no value)
- Opportunity Created - OCI (Secondary, expected deal value)
- Closed Won - OCI (Secondary, actual revenue)
Set the SQL stage as Primary because that's the earliest point where you have enough signal for Smart Bidding to act on, but late enough to filter out junk. The other stages stay Secondary - tracked and visible, but not driving bidding. See Ben's separate guide on Primary vs Secondary Conversions for the full reasoning.
Step 4: Sync pipeline events back to Google Ads
This is where most setups break. You need an automation that, every time a lead reaches your trigger stage (e.g. moves to "SQL"), uploads a row to Google Ads containing:
- Google Click ID (the original gclid)
- Conversion Name (matching the action name in Google Ads)
- Conversion Time (ISO format with time zone, e.g.
2026-05-04T14:30:00+01:00) - Conversion Value (the deal value)
- Conversion Currency (GBP)
Three options for sending this:
- Native CRM integration - HubSpot, Salesforce, Zoho all have one. By far the easiest.
- Middleware (Zapier/Make) - good for Pipedrive, Monday, Airtable, Notion-as-CRM and similar. ~£30/month.
- Direct Google Ads API - for custom CRMs or high-volume accounts. Requires a developer.
HubSpot integration walkthrough
HubSpot has the most polished native Google Ads integration in 2026. Setup takes ~30 minutes:
- Install the Google Ads app from the HubSpot App Marketplace
- Authenticate with a Google account that has access to your Google Ads MCC
- In HubSpot Settings → Marketing → Ads, link the Google Ads account
- Toggle on "Track ad interactions" - this enables gclid capture on HubSpot Forms automatically
- Open Lifecycle Stage → Sync conversions and map each HubSpot lifecycle stage (Lead, MQL, SQL, Opportunity, Customer) to a Google Ads conversion action
- Set the conversion value source - "Amount" field on Deal records is the standard
- Save and wait 24 hours for the first sync
HubSpot's official integration documentation walks through edge cases like multi-touch attribution and Customer Match audience sync (covered below).
Salesforce integration walkthrough
Salesforce's native Google Ads integration uses Sales Cloud and the Salesforce-Google Ads connector. Setup is more involved (~2-3 hours) and needs an admin:
- In Google Ads go to Tools → Linked accounts → Salesforce → Manage and link
- Authenticate with a Salesforce admin account
- Map Salesforce Lead and Opportunity stages to Google Ads conversion actions
- Add the GCLID__c custom field to Lead, Contact and Opportunity objects
- Update your Web-to-Lead form (or third-party form integration) to populate GCLID__c on submission
- Configure the sync schedule - default is hourly, which is plenty
If you use Pardot/Account Engagement for forms, install the Pardot Google Ads connector separately - it handles the form-side gclid capture so you don't need to write JavaScript.
Pipedrive and other CRMs (Zapier/Make pattern)
Pipedrive, Monday, Airtable and most niche CRMs don't have native Google Ads integrations in 2026. The standard workaround is a Zapier or Make automation:
- Trigger: Deal stage updated in Pipedrive (or equivalent)
- Filter: Only proceed if new stage is "Qualified" (or your Primary trigger stage)
- Action: Send a row to Google Ads via the "Upload Click Conversion" action
- Map fields: gclid → Google Click ID, deal value → Conversion Value, deal close date → Conversion Time
Zapier handles ~5,000 conversion uploads/month on its £25/month plan. Make is cheaper at scale (~£15/month for 10,000 operations). For high-volume accounts (50,000+ conversions/month), skip middleware and use the Google Ads API directly.
Sync CRM segments as Customer Match audiences
The reverse direction is equally valuable: push CRM segments into Google Ads as Customer Match audiences. Examples:
- Lookalike seed: "Closed Won customers in last 12 months" - Google Ads uses this to find similar users via Smart Bidding audience signals
- Suppression: "Existing customers" - exclude from acquisition campaigns to stop wasting spend on people who already bought
- Re-engagement: "Lapsed customers (no purchase in 6 months)" - target with retention messaging
- Upsell: "Customers on starter tier" - target with upgrade messaging
HubSpot, Salesforce and Zoho all support automated Customer Match list sync. For other CRMs, export segments to CSV and upload to Google Ads manually monthly - takes 5 minutes and recovers a lot of wasted spend on existing customers.
UK GDPR and Consent Mode v2
Three compliance points UK businesses must get right:
- Consent Mode v2 - required across the UK and EEA since March 2024. Implement via your Cookie Management Platform (Cookiebot, OneTrust, CookieYes, Iubenda). When users decline marketing cookies, Google's modelling fills in the gap so you don't lose conversion data entirely. See Google's Consent Mode v2 guide.
- Lawful basis for offline upload - uploading lead data to Google Ads counts as processing personal data. Cover this in your privacy policy under "third-party processors" and rely on legitimate interests (with a clear opt-out) or explicit consent.
- Data minimisation - only upload the gclid and conversion event. Never upload PII (name, email, phone) unless you're using Enhanced Conversions for Leads, in which case the data must be hashed (SHA-256) before transmission.
The ICO's UK GDPR guidance covers the legal basis side in detail.
Troubleshooting common issues
"Conversion uploaded but not appearing in Google Ads"
Three usual causes: gclid expired (older than 90 days), gclid not auto-tagged correctly (check Google Ads → Admin → Account Settings → Auto-tagging is ON), or conversion action name mismatch. Diagnose via Tools → Conversions → Diagnostics.
"Conversions match in CRM but Google Ads shows fewer"
Almost always due to gclid loss between click and form submit. Common causes: cookie cleared, user switched device, traffic routed through a redirect that stripped the URL parameter. Add server-side gclid capture as backup if losses exceed 20%.
"Smart Bidding performance got worse after switching to OCI conversions"
Two possibilities. First: not enough OCI conversions to feed Smart Bidding (under 30/campaign/month). Solution: temporarily run both form-fill and OCI as Primary, transition fully once OCI hits volume. Second: 21-day learning period - performance always wobbles for the first 2-3 weeks after a Primary conversion change.