← All posts

Connect Your CRM to Google Ads: Offline Conversions from HubSpot and Salesforce (2026 Guide)

Your Google Ads account thinks every form fill is a win. Your sales team knows most of them are not.

Connecting your CRM to Google Ads closes that gap. When a lead becomes an SQL, an opportunity, or a closed deal in HubSpot or Salesforce, that event flows back into Google Ads as an offline conversion.

Smart Bidding then learns which clicks produce pipeline, not just which clicks produce form submissions. For B2B advertisers with long sales cycles, it is the single biggest lever on lead quality.

The setup also changed a lot in 2025 and 2026. Google retired the legacy Salesforce connector, merged its enhanced conversions settings, and moved API-based offline uploads to a new API. Many guides ranking today still describe the old paths.

This guide covers the current setup for both CRMs, how to choose a connection method, which stages to send, and how to confirm the data is actually landing.

What Changed in 2025 and 2026 (Read This First)

If you set up offline conversions more than a year ago, part of your setup may already sit on a deprecated path. Here is what changed, newest first.

DateChangeWho it affects
June 15, 2026Google Ads API stops accepting offline conversion and ECL uploads from developer tokens that were not already uploading. The Data Manager API replaces it.Custom integrations, in-house scripts, some third-party tools
April 2026Enhanced conversions for web and for leads merge into one on/off setting. Google accepts user-provided data from tags, Data Manager, and API connections at once.Every account using enhanced conversions
February 2, 2026Google Ads API stops accepting new adopters for session attributes and IP address data in conversion imports.Custom API builds
May 31, 2025Legacy Google Ads Conversion Import for Salesforce loses support. Salesforce imports move to Data Manager.Anyone still on the original Salesforce link

Sources: Google Ads Help, Google Ads Developer Blog, PPC Land, Google Ads Help: Salesforce (Legacy).

The practical takeaway: native integrations are now the low-maintenance path. That means HubSpot's built-in sync, or Salesforce and HubSpot through Data Manager.

If you or a vendor built a custom uploader on the Google Ads API, confirm it has moved to the Data Manager API. Offline conversion tracking is not going away. The plumbing underneath it is what changed.

How Offline Conversion Tracking Works

Every CRM-to-Google Ads setup needs three things: a way to identify the person who clicked the ad, a CRM event worth reporting, and a conversion action in Google Ads to receive it.

The identifier is where the two methods differ.

GCLID-based offline conversion import (OCI). Google appends a click ID (GCLID) to your landing page URL. Your form captures it in a hidden field, it is stored on the CRM record, and the CRM sends it back with the conversion. Lose the GCLID anywhere along the way and the conversion cannot be matched.

Enhanced conversions for leads (ECL). Your Google tag captures hashed user-provided data, usually email, when the form is submitted. Later, your CRM sends the same hashed email with the conversion event. Google matches the two, along with signed-in Google account data.

GCLID import (legacy)Enhanced conversions for leads
Match keyGoogle click IDHashed email or phone (GCLID optional)
CRM changes neededCustom GCLID field, hidden form field, cookie scriptUsually none beyond storing email
Survives lost click IDsNoYes
Cross-device and engaged-view creditNoYes
Upload limitRejected after 90 days from the clickRejected after 63 days from the last click
Google's positionLegacyRecommended

You do not have to choose one or the other. If you already store GCLIDs, keep sending them alongside email. More match keys means a higher match rate.

Setting up the tag side is its own job. We walk through it in how to set up enhanced conversions in Google Ads.

One caution on ECL: it only works if the Google tag captured the email at form submission. Forms inside an iframe, a third-party scheduler, or a chat widget can slip past the tag. ECL will quietly under-match, so test it before you assume it works.

Choose Your Connection Method

There are five realistic ways to get CRM data into Google Ads. The right one depends on your CRM, how complex your funnel is, and how much engineering time you have.

MethodBest forEffortWatch out for
HubSpot native ad conversion eventsHubSpot users syncing lifecycle stagesLowOnly syncs stage changes after the event is created
Google Ads Data ManagerSalesforce users; HubSpot users who need other fieldsLow to mediumFirst run only pulls the last 14 days
ZapierSmaller teams, simple triggers, other CRMsLowPer-task cost and fragile field mapping
CDP or attribution tool (Segment, CustomerLabs, Ruler)Syncing Google, Meta, and LinkedIn from one sourceMediumAdded cost and one more system to QA
Data Manager API (custom build)Data warehouses, unusual data models, high volumeHighNeeds a developer

Our default: HubSpot shops start with the native integration. Salesforce shops use Data Manager. Only build custom when the native path cannot express the event you need to send.

Before You Start: Prerequisites

Most failed setups trace back to one of these. Check them before touching either integration.

  • Auto-tagging is on in Google Ads account settings. Without it, there is no GCLID.
  • The Google tag or GTM fires sitewide, including every lead form and thank-you page.
  • Customer data terms are accepted in Google Ads conversion settings. If conversions are tracked at the manager account (MCC) level, accept them there.
  • Enhanced conversions are turned on in your conversion settings.
  • You have admin access to Google Ads and the CRM. Salesforce also needs API access for the integration user.
  • Each stage has one definition. If "SQL" means three things to three reps, you will train bidding on noise.

That last item is not a technical step. It is also the one most teams skip.

How to Connect HubSpot to Google Ads

HubSpot's native integration syncs lifecycle stage changes to Google Ads as ad conversion events. It supports enhanced conversions for leads, so you do not need to build GCLID capture to get started.

Step 1: Connect your Google Ads account

In HubSpot, go to Marketing > Ads and connect your Google Ads account. Turn on auto-tracking so HubSpot adds its tracking parameters to your ads.

Step 2: Create a lifecycle stage conversion event

In the Ads tool settings, create a new ad conversion event. Set the trigger to Lifecycle stage change and choose the stage to send, such as SQL or Opportunity.

If your naming does not match Google's, you can map the HubSpot stage to a different stage label on the ad network side.

Step 3: Turn on enhanced conversions

Check the option to use enhanced conversions and select which identifiers to send. At least one must be selected.

If this is your first enhanced event, you also need to turn on enhanced conversions for leads inside Google Ads and accept the customer data terms.

Step 4: Choose which contacts to sync

HubSpot offers two options: every contact that reaches the stage, or only contacts who interacted with your ads.

With enhanced conversions on, we usually pick all contacts. Google only credits conversions it can match to an ad interaction. HubSpot's own ad attribution misses cross-device journeys that Google can still match.

Step 5: Create one event per stage

Repeat for each stage you want Google to see. If a contact moves through several stages that each have an event, HubSpot syncs each one separately. HubSpot documentation.

HubSpot limitations to know

  • No backfill. Only lifecycle stage changes that happen after you create the event are synced.
  • Lifecycle stages, not deal stages. The native triggers are lifecycle stage changes and form submissions. If your real signal lives on the deal, use a workflow to update the contact's lifecycle stage when the deal moves, or use Data Manager.
  • Stages only move forward by default. A recycled lead already past a stage will not fire that event again.
  • MCC restriction. If you work through a manager account, Google's enhanced conversions are not available for HubSpot form submission events.

How to Connect Salesforce to Google Ads (Data Manager)

Google's original Salesforce connector lost support on May 31, 2025. The current path is Google Ads Data Manager, which accepts both user-provided data (email, phone) and GCLID as match keys.

Step 1: Prepare Salesforce

If you will send GCLIDs, create a custom GCLID text field on the Lead and Opportunity objects. Then map the Lead field to the Contact and Opportunity fields in your lead conversion settings.

This is the most common Salesforce failure we see. The GCLID sits on the Lead, a rep converts it, and the Opportunity that later closes has no click ID.

If you are using ECL only, make sure email is reliably populated on Leads and Contacts. ECL does not require a GCLID field.

Step 2: Capture the click ID on your forms (GCLID only)

Add a hidden GCLID field to your web-to-lead form or form tool. Store the GCLID in a first-party cookie so it survives multi-page sessions.

Test with a URL like yoursite.com/demo?gclid=test123 and confirm the value lands on the new Lead.

Step 3: Connect Salesforce in Data Manager

In Google Ads, open Data Manager under Tools, add a new connection, and select Salesforce. Authenticate with a Salesforce user that meets Google's minimum permissions and has API access.

Step 4: Define your events

Choose the object (Lead or Opportunity) and the picklist value that signals the event, such as Lead Status = Qualified or Opportunity Stage = Closed Won.

Map Opportunity Amount to conversion value if you want revenue in your reporting.

Step 5: Map match keys and schedule the sync

Map email, phone, and GCLID where available. Data Manager can hash user-provided fields during import.

Set the sync schedule. On the first run, Data Manager only imports the last 14 days of Salesforce or HubSpot data. After that, it imports every change since the last successful run. Google.

Watch for skipped stages

Google's Salesforce documentation notes that if a rep jumps an Opportunity from stage 1 straight to stage 3, the skipped stage is not recorded.

If your reps routinely skip stages, enforce stage progression in Salesforce or build the event on a stage that cannot be skipped.

Which CRM Stages Should You Send?

Send every meaningful stage, but let only one drive bidding. Google recommends a separate conversion action per funnel stage, which keeps reporting clean and lets you choose what Smart Bidding optimizes toward.

Here is a typical B2B SaaS setup:

CRM eventConversion action nameGoal categoryPrimary or secondaryValue
Form submit (website tag)Lead - FormSubmit lead formSecondary once offline data is stableLow or none
MQLCRM - MQLQualified leadSecondaryOptional
SQL or meeting heldCRM - SQLQualified leadPrimary for most accountsWeighted
Opportunity createdCRM - OpportunityConverted leadPrimary if volume allowsWeighted
Closed wonCRM - Closed WonConverted leadSecondary, for reportingActual deal amount

Pick the deepest stage with enough volume

Choose the deepest stage that still produces enough conversions for bidding to learn. Our working rule is roughly 30 per month per bid strategy. Below that, Smart Bidding swings hard week to week.

Most B2B accounts do not have enough Closed Won volume to bid on directly. That is fine. Send it anyway for reporting, and bid on SQL or Opportunity.

Give earlier stages a weighted value

If you bid on an earlier stage, assign it a value: average deal size multiplied by that stage's close rate.

An SQL that closes 20% of the time on a $15,000 average deal is worth about $3,000. Setting values now lets you move to Maximize Conversion Value or target ROAS later without rebuilding.

Settings that matter

  • Count: One, for every lead-based action.
  • Click-through window: 90 days if your sales cycle is long.
  • Demote the form fill: once offline volume is steady, set the form-submit action to secondary. Run both side by side for two to four weeks first, rather than flipping overnight.

How to Test and Verify the Integration

A "sync successful" message does not mean conversions are matching. Verify at three levels.

  1. CRM to connector. Move a test record through a stage and confirm the integration logs the event.
  2. Connector to Google Ads. Open the conversion action in Goals > Conversions and check its diagnostics. Data Manager also shows run history and errors.
  3. Match quality. Compare stage changes in the CRM for Google-sourced leads against conversions recorded in Google Ads for the same period. A big gap means match keys are missing.

Allow 24 to 72 hours after the first sync before calling anything broken. Offline imports are processed in batches.

SymptomLikely causeFix
Zero conversions after 72 hoursTest stage change happened before the event existed; data terms not accepted; wrong accountTrigger a fresh stage change; accept terms at the conversion-tracking account
Plenty in CRM, few in Google AdsLow match rate from lost GCLIDs or emails the tag never capturedAdd ECL, fix Lead-to-Opportunity GCLID mapping, check iframe forms
"Too old" upload errorsEvent falls outside the 90-day (GCLID) or 63-day (ECL) limitBid on earlier stages; shorten the sync interval
Duplicate conversionsStage reached twice, or tag and import both count the same leadSet Count to One; dedupe on lead or order ID
Custom uploader suddenly failingJune 15, 2026 Google Ads API changeMigrate to the Data Manager API
Conversions landing in the wrong accountCross-account tracking set at the MCCConfirm which account owns conversion tracking

Mistakes We See in Almost Every Audit

  1. Bidding on form fills after offline data exists. The integration is live, but form submit is still primary. Google keeps optimizing for volume.
  2. Losing the GCLID at lead conversion. Still the most common Salesforce failure.
  3. Sending only Closed Won. It feels like the purest signal. At eight deals a month, it is too sparse to bid on.
  4. No stage definitions. Reps mark leads as SQL to clear their queue, and bidding learns to find more of them.
  5. Assuming the setup still works. The 2025 and 2026 platform changes broke many quietly running integrations. Check diagnostics monthly.

FAQ

Do I still need GCLID if I use enhanced conversions for leads?

No, but it helps. ECL can match on hashed email or phone alone. Sending GCLID too, when you have it, raises match rates.

Is the Salesforce integration still available?

Yes, through Google Ads Data Manager. The legacy connector, where Salesforce appeared directly in the conversion import list, lost support on May 31, 2025.

What happened to Google Ads API offline conversion uploads?

Starting June 15, 2026, the UploadClickConversions request stopped working for developer tokens that were not already using it. Offline conversion and ECL uploads now run through the Data Manager API.

Can I import conversions older than 90 days?

No. GCLID conversions more than 90 days after the click are rejected, and ECL uploads more than 63 days after the last click are rejected. Long sales cycles should bid on earlier stages.

How long until bidding improves after connecting my CRM?

Plan on four to eight weeks, depending on volume. Do not change the primary action and the bid strategy in the same week.

Can I use Zapier instead?

Yes. Google supports Zapier as an import path for offline conversions and ECL. It works well for simple triggers and lower volumes.

Does this work for Meta and LinkedIn too?

HubSpot syncs lifecycle stage events to LinkedIn and Meta from the same Ads tool. Salesforce users usually need a third-party tool or each platform's conversions API.

Sources

Want this run on your account?

We review your account, show you what is capping results, and walk through the fixes live with a senior operator.

Get a Free Account Review ↗