HubSpot to Google Ads conversion fix
Google Ads should bid on pipeline, not form fills.
We check how HubSpot sends lifecycle stages to Google Ads and fix it inside your own accounts, with your sign-off, so Smart Bidding uses the stages your sales team qualifies. Fixed price, fixed scope, delivered within 7 business days of access.
$1,200 fixed. If none of our seven checks finds anything that needs changing, you pay only the first half and keep the report.
A named lead on every check
Example
Who this is for
This check fits if all of these are true:
- You run Google Ads with Smart Bidding, such as Maximize conversions or Maximize conversion value.
- Your leads go into HubSpot, and your sales team moves them through lifecycle stages there.
- You have Marketing Hub Starter, Professional or Enterprise.
- Enough leads reach a qualified stage each month for bidding to learn from. We check this on the fit call, and if the volume isn't there, we'll tell you.
It isn't a fit if your CRM is Salesforce, or your HubSpot sync runs from a Google Ads manager account.
The problem
A stage that syncs isn't always a stage that bids
If HubSpot already sends your lifecycle stages to Google Ads, the question is whether Smart Bidding uses them. A stage set as Secondary, or outside the goal your campaigns bid on, is reported but never bid on.
The fix exists. HubSpot can send lifecycle stages to Google Ads as conversions, and Google Ads can pull them in through Data Manager. But Google only bids on a conversion that is set as Primary and sits in a goal your campaigns use. So a connection can sync without those stages ever being used for bidding.
And when the numbers disagree, HubSpot Support won't investigate the gap unless there's a sync error.
If your setup still uses offline conversion import, there's one more reason to look. Google calls it a legacy feature and recommends enhanced conversions for leads. Since 15 June 2026, Google has moved offline conversion uploads to its Data Manager API and blocks them in the Google Ads API.
Side-by-side count
Which gaps are faults, and which are normal
Some difference between the two counts is normal. These ones are explained.
- MQL. Close. Differences alone aren't a fault.
- SQL. Sent twice: HubSpot integration and a Zapier automation.
- Opportunity. Close, so not a fault.
- Customer. Zero: legacy upload isn't recording.
Same 30 days. Stage changes in HubSpot against conversions recorded in Google Ads.
| Stage | HubSpot, from Google Ads contacts | Google Ads recorded | Notes |
|---|---|---|---|
| MQL | 142 | 131 | CloseClose |
| SQL | 61 | 118 | 1Sent twice |
| Opportunity | 24 | 22 | CloseClose |
| Customer | 9 | 0 | 2Not recording |
The check
Seven questions we answer in every check
Which conversions is Smart Bidding actually optimising for, and which are duplicates, tests or leftovers?
Example conversion action list Conversion action Goal Lead form submit Primary HubSpot MQL Secondary HubSpot SQL Secondary Test conversion Secondary Example
Are your lifecycle stages (MQL, SQL, opportunity, customer) set up as conversions, included in your goals, firing, and carrying the right value? When a stage uses the deal amount, HubSpot sends the weighted amount of the most recent associated deal, not the full amount.
Is any stage sent more than once, through HubSpot, Data Manager or a Zapier automation?
Does each contact reach Google with a click ID or contact data (email, phone or address), so it can be matched to an ad click? And is Google's combined enhanced conversions setting switched on?
- Name
- _gcl_aw
- Value
- GCL.1700000000.Cj0KCQ…
- Domain
- .example.com
Example
Is anything still on legacy offline import or a custom API upload, or routed through a manager account that HubSpot can't connect?
Are consent signals set correctly for traffic from the EEA, where Google requires them?
- consent: default
- ad_storagedenied
- analytics_storagedenied
- ad_user_datadenied
- ad_personalizationdenied
Example
For the same period, how do HubSpot's stage changes and Google Ads' conversions compare, and what explains the gap?
Sign-off
We fix it, with your sign-off
We fix everything on the list that lives in Google Ads, HubSpot or Tag Manager settings. You see every proposed change before we make it, and nothing changes without your approval.
You also choose when bidding changes go live. Google says Smart Bidding takes some time to relearn after a change to conversion goals or actions (1 to 2 conversion cycles in most cases).
Finding, close up
Qualified stages are imported but not used for bidding
“Lead form submit” is the only Primary conversion action. “HubSpot MQL” and “HubSpot SQL” are syncing, but they are set to Secondary.
- Note 1. Form fills are the only Primary action, so Smart Bidding looks for more form fills.
- Note 2. Syncing from HubSpot, so the connection looks fine.
- Note 3. Set to Secondary, so Smart Bidding ignores it.
- The fix is a settings change, logged with its undo step and switched on the date you choose.
Conversion actions
Account ID
| Conversion action | Source | Goal | Notes |
|---|---|---|---|
| Lead form submit | Website form | Primary | 1Only Primary action |
| HubSpot MQL | HubSpot, synced | Secondary | |
| HubSpot SQL | HubSpot, synced | Secondary | 2Looks fine3Ignored by bidding |
| Test conversion | Website | Secondary |
Change log row
- Change
- Set “HubSpot SQL” to Primary and add it to the goal. Move “Lead form submit” to Secondary.
- To reverse
- Set “Lead form submit” back to Primary and “HubSpot SQL” back to Secondary.
- Status
- Approved, scheduled
- Go-live date: you choose, because bidding relearns.
The fix, step by step
One setting decides what Google Ads learns from
Set “HubSpot SQL” to Primary and include it in the account-level goal. Move “Lead form submit” to Secondary. You choose the date, because bidding relearns.
Conversion actions
Account ID
| Conversion action | Source | Goal | Note |
|---|---|---|---|
| Lead form submit | Website form | Secondary | |
| HubSpot MQL | HubSpot, synced | Secondary | |
| HubSpot SQL | HubSpot, synced | Primary | Used for bidding |
| Test conversion | Website | Secondary |
Change log row
- Change
- Set “HubSpot SQL” to Primary and add it to the goal. Move “Lead form submit” to Secondary.
- To reverse
- Set “Lead form submit” back to Primary and “HubSpot SQL” back to Secondary.
- Status
- Approved, scheduled
What you get
See exactly what you'll get before you pay
Our sample report is built on a fictional account, finding by finding: what we saw, why it matters, the change, and how to reverse it.
Read the sample report- A written report, with a screenshot for every finding
- A change log of everything we touched, with how to reverse each change
- A recorded screen walkthrough of the findings
- A 30-minute handover call
- A free recheck of your counts and sync status at day 30
How it works
How it works
Fit call, 20 minutes. Tell us your website and Marketing Hub tier. If it's not a fit, we'll say so on the call.
Kickoff. You pay 50% by Stripe invoice and invite us to Google Ads, HubSpot and, if needed, Tag Manager (see “Access and security”).
Check and proposal. We run the seven checks and send the proposed changes for your approval.
Fix and report. We make the approved changes and deliver the report within 7 business days of access, not counting time waiting for your approval. The second 50% is due on delivery.
Handover. A 30-minute call and the recorded walkthrough.
Day 30 recheck, free. We check your counts and sync status again. On long B2B sales cycles, the full effect on bidding can take longer than 30 days.
Change log
We make only the changes you approve
Changes made, with status
- 01Set “HubSpot SQL” to Primary; “Lead form submit” to SecondaryApproved, scheduled
- 02Pause the Zapier automationApproved, done
- 03Tag Manager tag to fill the hidden click ID fieldApproved, done
- 04Move Customer to the HubSpot integration; retire CSV uploadApproved, waiting on first conversions
- 05Consent default tag in Tag ManagerApproved, done
- 06Remove “Test conversion” from the goalApproved, done
Each change has its reversal in the findings. The bidding change goes live on the date you choose.
Pricing
One price.
A named lead on every check.
Check and fix
$1,200, fixed
- Half when work starts, half when the report is delivered, by Stripe invoice.
- Covers everything on the check and fix lists. Anything outside them is quoted before any work starts.
- If none of the seven checks finds anything that needs changing, you pay only the first half and keep the report.
- Delivered within 7 business days of access, not counting time waiting for your approval.
Closed Logic
Every check has a named lead who joins your fit call and stays on your account through handover, so nothing gets handed off mid-check.
Founded by Matt Strydom.
Matt on LinkedIn- Company
- Closed Logic is a trading name of Reubika LLC, a New Mexico limited liability company.
- Billing
- Invoices in USD through Stripe.
- Reply time
- Within one business day
- Booking
- Book a 20-minute fit call. If it's not a fit, we'll say so on the call.
How we handle access
- Named user invites only, never shared passwords. Our accounts use two-step login.
- We use only the access the work needs. We don't export or copy contact records.
- Every change is logged with how to reverse it, and nothing changes without your approval.
- You can revoke our access at any time. We remove it at handover unless you're on the monthly plan.
Monthly plan: we keep the connection fixed
A monitored-account plan, not an hours bank. $750 a month for one HubSpot portal and one Google Ads account.
Every month:
- Monthly checks of the HubSpot to Google Ads connection: sync errors, the gap between HubSpot and Google Ads counts, click ID coverage, changes to Primary conversions, and consent signals.
- A monthly note on what changed and what needs a decision.
- Fixes for anything that breaks, up to 1.5 hours a month.
Other ops work (routing, clean-up, reporting, new builds) is quoted separately in blocks at $150 an hour, 5-hour minimum.
3-month minimum, then month to month with 30 days' notice. Billed monthly in advance by Stripe subscription.
The fix cap
If it isn't working at handover, we keep going (within limits)
For each conversion action on the fix list, “working” means all four of these:
- HubSpot's sync status shows no error.
- Google Ads conversion diagnostics show it as active, with no error.
- It's set as Primary or Secondary, as agreed in the report.
- A test contact we move through that stage is recorded.
Working doesn't mean the HubSpot and Google Ads counts match. HubSpot's own documentation says the totals may not match.
If something on the fix list isn't working at handover, we put in up to 10 extra hours within 30 days of handover at no extra cost. If an in-scope item still isn't working at that cap, we refund the second payment.
This doesn't cover causes outside our scope (such as website code outside Tag Manager), changes made by you or your agency after handover, Google or HubSpot outages, or low lead volume. Full details are in our terms.
Not included
- Code changes on your website outside Tag Manager
- Redesigning lifecycle stages or lead scoring (we'll flag problems and quote separately)
- Campaign management, keywords or ad copy
- Salesforce as your CRM
- Syncs run from a Google Ads manager account
Access and security
- Google Ads:
- Admin on your individual Google Ads account. HubSpot needs Admin on the individual account to connect it, and it can't connect manager accounts.
- HubSpot:
- Super Admin is easiest. At minimum we need Publish access to the ads tools (HubSpot's requirement for connecting ad accounts), plus edit access to properties, workflows and lifecycle settings.
- Tag Manager:
- Publish on the container, only if the fix list touches tags.
How we handle it:
- Named user invites only, never shared passwords. Our accounts use two-step login.
- You can revoke our access at any time.
- We use only the access the work needs. We don't export or copy contact records, and screenshots blur personal data.
- Working files are deleted within 30 days of the work ending.
- We remove our access at handover unless you're on the monthly plan.
Proof
Our sample report shows exactly what you receive. It's built on a fictional account: the company, figures and screenshots are illustrative, not a client result.
Questions
Questions
Do I need Marketing Hub Professional?
No. Marketing Hub Starter supports lifecycle stage conversion events too, up to five events. Professional allows up to 50 and Enterprise up to 100.
Will this disrupt my campaigns?
Changing primary conversions changes what Smart Bidding optimises for. That's the point of the work. Google says bidding takes 1 to 2 conversion cycles in most cases to relearn after a change, so we agree each change and its timing with you before we make it.
Does lead volume matter?
Yes. Google says the learning period depends on the number of conversions, and suggests judging performance over the last 30 days with at least 30 conversions. If a qualified stage only gets a handful a month, we'll tell you in the report.
Will past leads be fixed too?
HubSpot's own sync only counts stage changes that happen after an event is created. If the fix uses Google's Data Manager connection, Google imports the last 14 days of HubSpot data on the first run. Either way, results count from handover forward.
Will my HubSpot and Google Ads counts match after the fix?
Not necessarily. HubSpot says the totals may not match because Google calculates each metric differently. We explain the gap in the report and fix the parts that are errors.
Do you work with agencies?
Yes. Agencies can buy a check for a client and deliver it under their own name. See how we work with agencies.
What access do you need, and is it safe?
Admin on your individual Google Ads account, Publish access to HubSpot's ads tools at minimum, and Tag Manager only if a tag needs changing. Named invites only, every change logged with how to reverse it. See “Access and security”.
Will you change our website?
No. We work in Google Ads, HubSpot and Tag Manager settings. Code changes outside Tag Manager aren't included.
What happens after handover?
Every change is in the change log, and we recheck your counts for free at day 30. If you'd like us to keep watching the connection, that's the monthly plan. We remove our access at handover unless you're on the monthly plan.
Where are you based, and how do we pay?
We work from South Africa. Closed Logic is a trading name of Reubika LLC, a New Mexico limited liability company. We invoice in USD through Stripe.
See whether your stages are being used for bidding
Book a 20-minute fit callPrefer email? hello@closedlogic.com