How to Send HubSpot Deals to Google Ads as Offline Conversions
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "BlogPosting",
"headline": "How to Send HubSpot Deals to Google Ads as Offline Conversions",
"url": "https://mattkundodigitalmarketing.com/blog/hubspot-deals-google-ads-offline-conversions/",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://mattkundodigitalmarketing.com/blog/hubspot-deals-google-ads-offline-conversions/"
},
"author": {
"@type": "Person",
"name": "Matt Kundo",
"jobTitle": "Founder and Growth Marketing Manager",
"worksFor": {
"@type": "Organization",
"name": "Matt Kundo Digital Marketing"
},
"knowsAbout": [
"Search engine optimization",
"Generative engine optimization",
"AI search visibility",
"Digital marketing"
]
},
"description": "HubSpot's Google Ads sync sends lifecycle stages at a fixed value, not deals. Here's how to send deal stages and amounts as offline conversions, step by step.",
"publisher": {
"@type": "Organization",
"name": "Matt Kundo Digital Marketing",
"url": "https://mattkundodigitalmarketing.com/"
},
"datePublished": "2026-11-12",
"dateModified": "2026-11-12",
"image": "https://mattkundodigitalmarketing.com/assets/blog/hubspot-deals-google-ads-offline-conversions/hero.jpg"
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Can HubSpot send the deal amount to Google Ads?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Not natively. HubSpot's lifecycle stage events use a fixed value, and HubSpot says that to use actual deal amounts \"a developer can build a custom setup using HubSpot workflows and Google's Offline Conversions API.\" Since June 2026, Google's path for that upload is the Data Manager API."
}
},
{
"@type": "Question",
"name": "Do I need the GCLID if I use enhanced conversions for leads?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No, the GCLID isn't required, but send it whenever you have it. The Data Manager API accepts an event with a gclid, hashed user data or another listed identifier, and it requires at least one. Each identifier covers gaps in the other."
}
},
{
"@type": "Question",
"name": "What if my sales cycle is longer than 90 days?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Bid on the rung that lands inside the window, usually Opportunity, and keep Closed won as a secondary action for reporting. Standard imports stop at 90 days after the click, and enhanced conversions for leads stop at 63."
}
},
{
"@type": "Question",
"name": "Should offline conversions be primary or secondary?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Start them as secondary, verify them for a few weeks, then promote the one rung you want Smart Bidding to optimize toward. Primary actions feed bidding, and secondary actions only report."
}
},
{
"@type": "Question",
"name": "Can I send the same deals to Microsoft Ads?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, through a separate setup. Microsoft Learn lists HubSpot among the partner integrations for the Microsoft Advertising Conversions API. That API became generally available on October 28, 2026."
}
}
]
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://mattkundodigitalmarketing.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://mattkundodigitalmarketing.com/blog/"
},
{
"@type": "ListItem",
"position": 3,
"name": "HubSpot deals to Google Ads offline conversions",
"item": "https://mattkundodigitalmarketing.com/blog/hubspot-deals-google-ads-offline-conversions/"
}
]
}
]
} HubSpot's native Google Ads integration doesn't send deals. It sends contact lifecycle stage changes, such as Opportunity or Customer, at a fixed value you choose. To send real deal stages and deal amounts as Google Ads offline conversions, you need a custom path: a HubSpot workflow or Zapier that passes the GCLID, the amount and a hashed email to Google's Data Manager API. It's one piece of the measurement layer I cover in my complete guide to Google Analytics 4.
I built this guide from HubSpot's and Google's own documentation, read on November 9, 2026, and linked each step to the page it came from. I haven't hand-tested this exact configuration, so treat the steps as the vendors describe them and confirm your setup with the checklist near the end.
Key takeaways
- HubSpot's native Google Ads conversion events trigger on contact lifecycle stage changes and send a fixed value. HubSpot removed the "Use the Deal amount" option and now tells you to pick a representative amount, such as your average deal size.
- HubSpot can move a contact to Opportunity when a deal is created and to Customer when a deal is won, on all products and plans. That's how deal progress reaches Google without code.
- Starting June 15, 2026, Google moved offline conversion imports and enhanced conversions for leads uploads to the Data Manager API. A new custom build should start there, not in the Google Ads API.
- Google won't import a standard offline conversion uploaded more than 90 days after the last click, or an enhanced conversion for leads after 63 days (Google Ads Help).
- Imported conversions take about 3 hours to show up in Google Ads, per the same page.
How does a HubSpot deal become a Google Ads conversion?
A HubSpot deal becomes a Google Ads conversion when a stage change sends Google an identifier it can match to an ad click, usually the GCLID or a hashed email, along with a conversion action, a timestamp and a value. Google then credits the conversion to the click that started it. Here's the data flow, using a B2B SaaS demo funnel as the illustration.
- A buyer clicks your search ad. With auto-tagging on, Google adds a gclid parameter to the landing page URL.
- The buyer requests a demo on a HubSpot form. HubSpot stores the click ID in the contact's Google ad click ID property, which it describes as "automatically set by HubSpot based on a Google Click identifier (GCLID) provided by Google Ads."
- Sales works the lead from MQL to SQL, opens a deal, and eventually closes it.
- Each stage you choose to send fires a conversion event to Google with the GCLID, the contact's hashed email, the time and a value.
- Google matches the identifier to the original click, and Smart Bidding starts learning which searches produce pipeline instead of form fills.
Steps 3 and 4 are the reason to do any of this. Gartner found that B2B buyers spend only 17% of their purchase time meeting with potential suppliers (2020). A demo request is a weak proxy for revenue, and the CRM is where the real outcome gets recorded.
Which of the three routes should you use?
The right route depends on one question: does Google need to see each deal's actual amount? If a fixed value per stage is enough, HubSpot's native events are the shortest path. If you want target ROAS bidding on real contract values, you need a custom build.
| Route | What triggers a conversion | Value sent | What it requires | Best fit |
|---|---|---|---|---|
| 1. HubSpot native ad conversion events | Contact lifecycle stage change | A fixed value you set per event | Marketing Hub Starter or higher | Most teams starting out |
| 2. Google Ads Data Manager HubSpot connection | Records matching Lifecycle Stage conditions you set in Google Ads | Fields Data Manager maps from HubSpot | A Google Ads account and a HubSpot login, with import quotas that vary by HubSpot plan | Teams who want the import managed on Google's side |
| 3. Custom deal workflow | Deal stage change in a deal-based workflow | Each deal's real amount | Data Hub Professional for custom code or webhooks, or a Zapier plan | Value-based bidding on contract values |
Route 2 is easy to miss. Google's Data Manager lists HubSpot as a direct data source for offline conversion import and enhanced conversions for leads, and it says "all conditions must use the Lifecycle Stage field" unless combined with another condition using AND. So Routes 1 and 2 both run on lifecycle stages. Only Route 3 reads the deal itself.
My recommendation: use Route 1 or Route 2 for the lifecycle rungs, never both for the same stage, and add Route 3 only when you're ready to bid on real deal values.
Step 1: How do you capture the GCLID on HubSpot forms?
You capture the GCLID on HubSpot forms by turning on auto-tagging in Google Ads and running the HubSpot tracking code on every page, so HubSpot can fill the Google ad click ID property when a visitor converts. Forms HubSpot doesn't host need a hidden field and a small script instead. Check these in order.
- Confirm auto-tagging is on in your Google Ads account settings. It's the first prerequisite in Google's GCLID setup guide.
- Confirm the HubSpot tracking code fires on every landing page, including pages built outside HubSpot. HubSpot's properties documentation says it records page views only when the tracking code fires and the visitor's cookie is tied to a contact record.
- For forms HubSpot doesn't host, follow Google's pattern: store the gclid in local storage for 90 days, write it into a hidden form field, and map that field to a contact property. Google publishes the script and a Google Tag Manager version on the same page.
- Pull the contacts created from paid search in the last 30 days and count how many have Google ad click ID filled in. That fill rate is your ceiling for GCLID matching.
Some clicks will never carry a GCLID. Apple's Link Tracking Protection, which shipped with iOS 17 in 2023, removes certain tracking parameters from links in Mail, Messages and Safari Private Browsing. Fathom Analytics lists gclid among them, citing outside testing, and Apple doesn't publish the full list. Cross-device journeys and blocked cookies lose click IDs too. That gap is the main reason to send a hashed email alongside the click ID in Step 5.
Step 2: Which deal stages should map to which conversion actions?
Map no more than four funnel stages to Google Ads conversion actions, give each one a value that reflects what the stage is worth to you, and make only the stage you want bidding to chase primary. I use a four-rung framework I call the Stage-Value Ladder. The example below is an illustration for a B2B SaaS funnel, not data from any account.
| Rung | HubSpot signal | Google Ads conversion action | Value approach | Primary or secondary | Inside the import window? |
|---|---|---|---|---|---|
| 1. Demo request or trial | Form submission | Demo request | Small fixed value | Secondary once rung 3 has volume | Yes, same day |
| 2. Sales qualified lead | Lifecycle stage set to SQL | SQL | Fixed value | Secondary | Usually |
| 3. Opportunity | Deal created, lifecycle set to Opportunity | Opportunity | Expected value | Primary | Usually |
| 4. Closed won | Deal won, lifecycle set to Customer | Closed won | Average deal size, or the real amount via Route 3 | Primary once volume allows | Only on short cycles |
Rung 1 reaches Google through your existing website conversion tag or through a HubSpot form submission event, which HubSpot also syncs with enhanced conversions. Rungs 2 to 4 ride on lifecycle stages or on Route 3.
Rungs 3 and 4 of the Stage-Value Ladder need no code. In HubSpot settings, under Objects, Contacts, Lifecycle Stage, the Automate tab has "Set lifecycle stage when a deal is created" and "Set lifecycle stage when a deal is won." HubSpot documents both as available on all products and plans. There are two catches. The deal-created setting fires on a contact's first associated deal, and neither setting moves a stage backward, so a Customer who gets a new deal stays a Customer. If you want a custom deal stage such as "Demo completed" to set SQL, use a deal-based workflow with the Edit record action on associated contacts, which needs a Professional or Enterprise subscription.
All of this assumes your deal stages mean the same thing to every rep. If they don't, fix the pipeline before you send it anywhere. A HubSpot CRM build for a B2B sales team, with deal stages that match the real sales process is related work on exactly that foundation.
Expected value is simple arithmetic. Say your average first-year contract is $24,000 and about one in four opportunities closes. An Opportunity is then worth roughly $6,000 to you, and that's the fixed value for rung 3. Ginny Marvin, Google's Ads Product Liaison, put the principle plainly in 2023: "If your goal is to differentiate conversions based on how valuable they are to your business, please value them against your business results if possible" (Search Engine Journal).
Volume decides which rung is primary. In the same series, Marvin said most campaigns need at least 15 conversions in the past 30 days to use value-based bidding. Few B2B SaaS accounts close 15 paid-search deals a month, which is why rung 3 usually carries the bidding. Frederick Vallaeys, co-founder and CEO of Optmyzr, described the same ladder in 2021: "In lead gen, that could mean creating offline conversions for 'qualified prospects' after a salesperson speaks with the prospect on the phone and a 'closed deal' when that prospect eventually purchases from their sales rep" (Optmyzr).
Long sales cycles add a hard limit. 6sense's 2024 Buyer Experience Report found that 69% of the purchase process happens before buyers engage sellers and that 81% pick a preferred vendor before talking to sales. The decision forms early, but the signature can still land months after the first click. A deal that closes 120 days after the click can't be imported, because standard offline conversions stop at 90 days and enhanced conversions for leads at 63. Menachem Ani, founder and CEO of JXT Group, handles this by sending each milestone: "Once a lead progresses from prospect to marketing-qualified or sales-qualified lead, we'll send that as another conversion action back to Google Ads" (Search Engine Journal, March 13, 2024).
Step 3: How do you create the conversion actions in Google Ads?
Create every offline conversion action before you start collecting clicks for it, then wait four to six hours before the first upload. Google is explicit about both. Its GCLID guide says to create the actions first or "you won't be able to import your early conversions," and warns that uploads in the first 4 to 6 hours can take 2 days to appear in reports. This step applies to Routes 2 and 3, because Route 1 creates its conversion actions from HubSpot.
- In Google Ads, go to Goals, then Summary, and select Create conversion action.
- Choose Conversions offline and add a data source. Pick HubSpot for Route 2, or skip the data source for now if you're building Route 3.
- Pick the category that matches the rung and name the action after the rung, so reports read clearly.
- Set each new action to secondary while you verify it. Google warns that misconfiguring primary and secondary "can prevent Smart Bidding from optimizing effectively."
Step 4: How do you connect HubSpot to Google Ads?
You connect HubSpot to Google Ads in one of three ways, matching the routes above. Pick one route per rung and follow its steps.
Route 1: HubSpot native lifecycle events
You set up Route 1 entirely inside HubSpot. HubSpot's knowledge base article, last updated October 30, 2026, lists these steps.
- Connect your Google Ads account in HubSpot's ads tool.
- Go to Marketing, then Ads, select Create, then Conversion event.
- Choose Google, your ad account, the Lifecycle stage change trigger, and the stage.
- Enter the fixed value for that rung.
- Pick your consent property, if you collect one, and the contact data to share. HubSpot hashes it with SHA-256 and recommends at least Email.
- Choose "All contacts that move to the selected lifecycle stage(s)," which HubSpot strongly recommends for ad optimization.
- Decide on the primary action checkbox. I'd leave it unchecked until the verification checklist passes.
- On your first lifecycle event, turn on enhanced conversions in Google Ads and choose Google Ads API as the method, as HubSpot instructs.
Only stage changes after you create the event count, and each stage with an event syncs separately. HubSpot caps events by tier: 5 on Starter, 50 on Professional and 100 on Enterprise.
Route 2: Google Ads Data Manager
You set up Route 2 from the Google side. Per Google's Data Manager HubSpot article, you create the conversion action, choose HubSpot as the source, sign in, add Lifecycle Stage conditions, and let Data Manager map the required fields. Google's GCLID setup guide adds the timing: for HubSpot, Data Manager imports the last 14 days of data on its first successful run, then imports the changes reported since the previous run.
Route 3: custom deal workflow
You build Route 3 with a deal-based workflow that fires on the stage you care about and sends that deal to Google. There are two practical ways to build it.
- A HubSpot custom code action, which requires Data Hub Professional or Enterprise, calls the Data Manager API's event ingestion endpoint. Each event needs an eventTimestamp and an eventSource, plus at least one identifier such as the gclid or hashed userData. Send the deal amount as conversionValue with a currency code, and the deal ID as transactionId, which Google uses to deduplicate.
- Zapier, with HubSpot's Updated Deal Stage trigger and the Google Ads Send Offline Conversion action. Google lists Zapier as a supported offline import path in its own help center.
Either way, the GCLID and the email live on the contact, not the deal, so the build has to read the deal's associated contact first. The destination must be a conversion action whose source is Website (Import from clicks), and user data has to be trimmed, lowercased and SHA-256 hashed before it's sent.
Don't start a new build on the Google Ads API. Google's developer documentation says that since June 15, 2026, UploadClickConversions requests fail for developer tokens that sent no offline conversion uploads between December 17, 2025 and June 15, 2026, and it points to the Data Manager API instead.
Step 5: Should you add enhanced conversions for leads?
Yes. Enhanced conversions for leads sends hashed first-party data, such as the lead's email, with each conversion, so Google can match a conversion even when the GCLID is missing. Google now recommends it over GCLID-only imports and reports that advertisers who sent first-party data alongside GCLIDs saw a median 10% increase in conversions compared with standard offline imports (Google Ads Help).
Three details matter for HubSpot users. First, Google said that starting in April 2026 it accepts user-provided data from tags, Data Manager and API connections at the same time, so an account on the new unified enhanced conversions setting may not show the method dropdown HubSpot describes. Second, HubSpot says its enhanced conversions sync doesn't work through a Google Ads manager account, even when you connect the ad account directly. Third, Google recommends getting consent before you share contact data, and HubSpot's consent property limits the sync to contacts who gave it.
How often should HubSpot deals upload to Google Ads?
Upload at least daily, and ideally as each stage changes. HubSpot's native events sync as contacts change stage, and Data Manager imports on its own run schedule. For a custom build, a stage-change trigger is the cleanest cadence, with a nightly job that retries anything that failed.
Google sets three timing rules worth writing down. Imported conversions take about 3 hours to appear. Google won't import the same identifier, conversion name and timestamp twice, so a re-upload is safe. And reporting lags the sales cycle: if clicks take 3 days to convert and you upload nightly, Google's own example says Monday's numbers aren't complete until Friday morning (Google Ads Help).
How do you verify the setup works?
Verify in both systems before you let any of these actions drive bidding. Work through this checklist in order.
- Google ad click ID is filled in on most paid-search contacts created in the last 30 days.
- The Events tab in HubSpot's ads tool shows no Needs Attention section for your events.
- Each conversion action in Google Ads shows imported conversions in the All conv. (by conv. time) column, which Google recommends for validating imports because it reports by conversion date.
- A week of paid-search closed-won deals in HubSpot roughly lines up with the Closed won action. Expect Google to show fewer, because HubSpot notes that Google only counts conversions it can attribute to a campaign.
- No stage reaches the same conversion action through two routes.
- Only then do you promote one rung to primary and change bidding.
What are the most common failure modes?
Most failures come from timing, account structure or duplicate routes, and each one has a specific fix.
| Symptom | Likely cause | Fix |
|---|---|---|
| Contacts sync but no conversions appear | Clicks predate the conversion action, or the upload came within 4 to 6 hours of creating it | Create actions first, wait, and recheck after 2 days |
| Closed-won deals never import | The deal closed more than 90 days after the click, or 63 for enhanced conversions for leads | Bid on an earlier rung |
| Events show as sent in HubSpot but never register in Google | The ad account is managed under a Google Ads manager account | Check account structure before you build, because HubSpot documents no workaround |
| Conversions doubled | A native event and a custom build both feed the same stage | One route per rung |
| Low match rate | Missing GCLIDs from tracking gaps or iOS link stripping | Fix the tracking code and send hashed email |
| Uploads rejected | The conversion action lives in a different account than the one receiving the events | Send events to the account that owns the action |
| A deleted HubSpot event's action still collects data | Deleting a HubSpot event doesn't delete the Google Ads action | Remove or demote the action in Google Ads too |
What does it cost?
These are the prices each vendor listed on November 9, 2026. They change, so check the link before you budget.
| Tool | Listed price | What it covers here | Source |
|---|---|---|---|
| HubSpot Marketing Hub Starter | From $20 per month per Core Seat | Route 1, up to 5 conversion events | HubSpot product catalog |
| HubSpot Marketing Hub Professional | From $890 per month, 3 Core Seats included | Route 1, up to 50 events, plus workflows | HubSpot product catalog |
| HubSpot Marketing Hub Enterprise | From $3,600 per month billed annually, 5 Core Seats included | Route 1, up to 100 events | HubSpot product catalog |
| HubSpot Data Hub Professional | From $720 per month billed annually, 1 Core Seat included | Custom code and webhook actions for Route 3 | HubSpot Data Hub pricing |
| Zapier Professional | From $19.99 per month billed annually, 750 tasks | No-code Route 3 | Zapier pricing |
| Google Ads Data Manager | No separate fee listed | Route 2 and the import itself | Google Ads Data Manager Help |
HubSpot's catalog also lists a one-time onboarding fee for Marketing Hub Professional and Enterprise. The biggest cost in Route 3 isn't a license, though. It's the developer time to build, test and monitor the workflow, and the cost of bad data if nobody owns it after launch.
Where does this fit in your measurement stack?
Offline conversions are the CRM half of paid search measurement, and the same pattern applies to other platforms. I covered the LinkedIn version in my LinkedIn Conversions API decision guide, and the question of moving tags to a server in whether server-side tracking is worth it. Once offline conversions are flowing, an incrementality test tells you whether the pipeline Google now reports is pipeline the ads actually caused. For the campaign side, my Google Ads management guide covers bidding and structure, and this setup is part of the measurement and attribution work I do.
Frequently asked questions
Can HubSpot send the deal amount to Google Ads?
Not natively. HubSpot's lifecycle stage events use a fixed value, and HubSpot says that to use actual deal amounts "a developer can build a custom setup using HubSpot workflows and Google's Offline Conversions API." Since June 2026, Google's path for that upload is the Data Manager API.
Do I need the GCLID if I use enhanced conversions for leads?
No, the GCLID isn't required, but send it whenever you have it. The Data Manager API accepts an event with a gclid, hashed user data or another listed identifier, and it requires at least one. Each identifier covers gaps in the other.
What if my sales cycle is longer than 90 days?
Bid on the rung that lands inside the window, usually Opportunity, and keep Closed won as a secondary action for reporting. Standard imports stop at 90 days after the click, and enhanced conversions for leads stop at 63.
Should offline conversions be primary or secondary?
Start them as secondary, verify them for a few weeks, then promote the one rung you want Smart Bidding to optimize toward. Primary actions feed bidding, and secondary actions only report.
Can I send the same deals to Microsoft Ads?
Yes, through a separate setup. Microsoft Learn lists HubSpot among the partner integrations for the Microsoft Advertising Conversions API. That API became generally available on October 28, 2026.
{
"url": "https://mattkundodigitalmarketing.com/blog/hubspot-deals-google-ads-offline-conversions/",
"ai_url": "https://mattkundodigitalmarketing.com/ai/blog/hubspot-deals-google-ads-offline-conversions/",
"content_type": "sub-page",
"topic_cluster": "none",
"categories": ["Analytics","Google Ads"],
"published": "Nov 12, 2026",
"canonical": "https://mattkundodigitalmarketing.com/blog/hubspot-deals-google-ads-offline-conversions/",
"llms_txt": "https://mattkundodigitalmarketing.com/llms.txt"
}