How to send HubSpot and Salesforce pipeline data back to Google Ads

How to import SQLs, opportunities and closed-won deals from HubSpot or Salesforce into Google Ads, with click ID capture, consent and a set-up table.

Door Pixel Communications Bijgewerkt 8 min lezen
Vat dit artikel samen met ChatGPTClaudePerplexityGemini

Belangrijkste punten

  • Form fills are a weak bidding signal in B2B SaaS because Smart Bidding cannot tell a student from a buying committee until the CRM says which lead became pipeline.
  • Capture the GCLID, the gbraid where present, and the email at form submission, and make sure all three survive every handover between tools.
  • Google now recommends enhanced conversions for leads, with the GCLID sent alongside hashed email whenever you have it.
  • Imports must arrive within 90 days of the click for GCLID matches and 63 days for enhanced conversions for leads, so long sales cycles push bidding towards SQLs and opportunities.
  • Create one conversion action per funnel stage, use the same actions in every account, and make only the stage you want to bid on primary.

Most B2B SaaS Google Ads accounts still bid on form fills. A demo request from a student, one from a competitor and one from a 200-person team evaluating a switch each count as the same single conversion. Smart Bidding then learns to find more form fills, and the cheapest form fills usually come from the people least likely to buy.

The fix is to send later funnel stages from your CRM back to Google Ads: sales-qualified leads, opportunities and closed-won deals, each matched to the original ad click. That means capturing the click ID and email at form submission, carrying both through HubSpot and Salesforce, and uploading each stage as its own conversion action, daily.

Google now recommends enhanced conversions for leads as the default method, with the GCLID sent alongside hashed email whenever you have it. The native HubSpot integration and Google Ads Data Manager cover most set-ups without custom code.

Why form fills are a weak bidding signal

A form fill says nothing about company size, fit or budget. Without CRM data in the ad account, a hobbyist and a 40-person team evaluating a switch look identical to Smart Bidding. In accounts we run, the gap between form fills and qualified pipeline varies widely by keyword theme and by market, and bidding on form fills alone pushes spend towards whichever themes produce the cheapest leads.

Sending pipeline stages back gives bidding the outcome you care about, and cost per SQL by campaign is a far more useful report than cost per lead.

Capture the click ID and email at form submission

With auto-tagging on, Google adds a gclid parameter to the landing page URL. On some iOS traffic you will see gbraid or wbraid instead. Google's help pages recommend storing gbraid in a hidden form field next to the GCLID, and the conversion upload API accepts all three identifiers.

  1. Store the click ID when the visitor lands. Save the parameter in a first-party cookie or local storage, so it is still there when the visitor reaches the form three pages later.
  2. Write it to hidden form fields. Add hidden fields for GCLID and gbraid to every lead form, including chat and meeting-booking tools.
  3. Map the fields to CRM properties. HubSpot has a contact property for the Google click ID. In Salesforce, create a custom field on Lead and map it to Contact and Opportunity in the lead conversion settings.
  4. Capture the email. For enhanced conversions for leads, the Google tag (or Tag Manager) must capture the email at form submission. The Google tag hashes it automatically. If you upload emails yourself, normalise them (lower case, spaces removed) and hash with SHA-256.

Never let an empty value overwrite a stored click ID.

Accounts often have conversions split across GA4 imports, old Universal Analytics imports, CRM form events and legacy thank-you-page tags. Offline import is quick to set up only if the GCLID survives the handover between your CRM and sales tools, so check that first.

Enhanced conversions for leads and the GCLID together

Enhanced conversions for leads matches hashed email or phone numbers against signed-in Google accounts. It works for leads whose click ID was lost, which is why Google now points advertisers to it ahead of GCLID-only imports. The GCLID still gives the most precise match, so send both.

A robust set-up uses two keys. The GCLID is the primary match key; hashed email is the fallback for rows without one. A row can go out with either key on its own, so a lead with a lost click ID still reaches Google Ads. GA4 stays in place for reporting, while Google Ads receives the offline conversions. For why the two sets of numbers never match, see GA4 vs Google Ads numbers.

Which integration to use

Option What it imports Good fit Watch out for
HubSpot native Google Ads events (Marketing Hub) Lifecycle stage changes and form submissions HubSpot is the system of record for lead stages The number of events depends on your HubSpot tier, and supported event types vary; check HubSpot's current documentation
Data Manager, HubSpot connector Contacts filtered on the Lifecycle Stage field You want the import managed inside Google Ads Conditions must use Lifecycle Stage; HubSpot quota limits can pause imports
Data Manager, Salesforce connector Lead, Opportunity or Order objects, filtered to define each stage Salesforce holds pipeline and opportunity stages One object per connection; older Salesforce integrations in Google Ads are being replaced by Data Manager
Data Manager file sources (Google Sheets, SFTP, HTTPS, cloud storage) Any stage you can export Custom stages, data warehouse, or mixed CRMs Keep the export schedule and time zone consistent
Data Manager API or Google Ads API Anything, with full control In-house engineering and complex deduplication Google is steering new integrations towards the Data Manager API; check which API Google currently recommends before you build

When you first connect HubSpot or Salesforce through Data Manager, the first run imports only recent conversions, so do not expect a full historic backfill.

Which stages to import, and the timing limits

Create one conversion action per stage, with the source set to import from clicks. Google's timing rules shape which stages are useful for bidding:

  • Conversions uploaded more than 90 days after the last click are not imported for GCLID matches. For enhanced conversions for leads the limit is 63 days.
  • Conversions within about a day of the click may not be recorded yet, so upload with a short delay.
  • Google recommends uploading daily, and bidding learns faster from stages that happen soon after the click.
Stage Typical delay after click Suggested role
Form fill or trial request Minutes Primary at first, then secondary once deeper stages have volume
MQL Days Secondary; definitions change too often to bid on
SQL One to three weeks Usually the best primary action
Opportunity Weeks Primary where volume allows, often with a value
Closed-won Often beyond 90 days Secondary, for reporting what does fall inside the window

The delays are a rule of thumb from accounts we run. Check your own median days from click to each stage.

Set counting to "One" for stage actions, so a lead that moves back and forth between stages is not counted twice. Google deduplicates on click ID, conversion name and conversion time, which does not protect you against the same stage being recorded at two different times.

Primary and secondary conversion actions

Primary actions appear in the Conversions column and are used for bidding. Secondary actions appear only in All conversions. Keep a new offline action secondary for its first few weeks while you confirm match rates.

We report a single primary action per account instead of "total conversions", because a total mixes different actions and hides what moved. If you run several Google Ads accounts, use identical conversion actions and identical primary settings in each. When two accounts use different primary actions, their cost per conversion cannot be compared.

Consent Mode v2 has four parameters: ad_storage, analytics_storage, ad_user_data and ad_personalization. When ad_user_data is denied, Google disables the use of personal data for advertising, including hashed user-provided data.

For offline imports that means:

  • Record the visitor's consent state in the CRM at form submission, next to the click ID.
  • Send the consent field with every upload. Google warns that conversions without it may not be attributable.
  • Accept Google's customer data terms and name Google as a recipient in your privacy notice. Your legal counsel or DPO should confirm the lawful basis.

Consent rates differ by market and banner design, so match rates will too. Compare each market against its own history.

Step-by-step set-up

Step Where Action Check
1 Google Ads Turn on auto-tagging and accept customer data terms gclid appears on a test click
2 Website Store GCLID and gbraid on landing; write them to hidden fields Test lead shows the values in the form payload
3 Tag Manager Capture email at form submission Enhanced conversions diagnostics show data
4 CRM Create click ID and consent properties; map lead fields through to Contact and Opportunity A converted test lead keeps the GCLID on the opportunity
5 Google Ads Create one import action per stage, counting "One", set to secondary Actions named consistently across accounts
6 Integration Connect HubSpot or Salesforce, or schedule a daily file First import shows no match errors
7 Google Ads After a few weeks, make the chosen stage primary The stage appears in the Conversions column and the bid strategy status shows no errors

Common failure points

  • Click ID lost at a handover. A chat tool, meeting scheduler or enrichment tool creates the lead without hidden fields, or Salesforce lead conversion does not map the field.
  • Duplicate leads. The same person submits three forms. Key each stage upload on the CRM record ID so one person counts once per stage.
  • Inconsistent accounts. Different action names or primary settings per account break comparisons.
  • Changing stage definitions. When sales redefines an SQL, log the date.

First steps

  1. Pull ten recent opportunities from Salesforce or HubSpot and check whether each one holds a GCLID.
  2. If most of them have no click ID, fix capture and field mapping before building any import.
  3. Add hashed email capture, then import SQL as a secondary action.
  4. Once it matches reliably, move to value-based bidding with stage values.

Our measurement work follows the same order: one trusted conversion framework first, then bidding built on it.

Vragen

Do we still need the GCLID if we use enhanced conversions for leads?

Yes. Google recommends including the GCLID whenever it is available because it gives the most accurate match. Hashed email covers leads whose click ID was lost or never captured.

Can we import closed-won deals if our sales cycle is six months?

Only deals that close within 90 days of the click (63 days for email-matched conversions) will import. Import closed-won for reporting where you can, and bid on an earlier stage such as SQL or opportunity.

Should the imported stages replace the form fill as the primary conversion?

Once an imported stage has enough volume and has run as secondary for a few weeks, yes. Keep the form fill as a secondary action so you can still see lead volume.

Does Consent Mode v2 affect offline imports?

Yes. When a visitor denies ad_user_data, their data should not be used for ads measurement, so store the consent state with the lead and pass it in the upload.

Vertel ons waar je aan werkt.

Een kennismaking van 30 minuten. We bekijken je setup, vragen naar je doelen en zeggen eerlijk of we kunnen helpen.

Neem contact op