Which lead count do I report when Google Ads and HubSpot disagree?
Google Ads and HubSpot will almost never agree on how many leads you got, and that usually isn’t a sign anything is broken. Google Ads counts form fills that followed an ad click. HubSpot counts people. For leads from your forms, report HubSpot’s number: every lead in it has a name, an email address and a status your sales team can act on.
The question tends to come from someone a level or two up, who doesn’t work in either system and has spotted two numbers that should match. It deserves a better answer than “attribution is complicated.” The rest of this guide is that answer, in the order I’d work through it: make sure both systems are counting the same thing, decide what a lead is, then name what’s left, so you can explain the gap instead of apologizing for it.
What counts as a lead?
HubSpot will count leads two ways, and the two give different answers.
A new-contacts report counts people the first time they arrive. When someone fills in a form with an email address HubSpot already has, there’s no new contact. HubSpot adds the submission to the record it already has.
A form submission report counts every form fill, from new people and known ones alike.
Here’s why the difference matters. A customer requested a quote eighteen months ago, went quiet, and today clicks your ad and asks again. Sales has a live lead, and marketing brought them back. A new-contacts report will never show it, because HubSpot already knew the person.
Lifecycle stage won’t catch it either. HubSpot moves stages forward on its own and never back, so a contact who’s already past Lead stays where they are.
Google Ads, meanwhile, counts that customer. So when HubSpot’s number is the lower one, some of the gap can be leads HubSpot’s own report left out. The usual assumption is that Google Ads is padding its numbers. Sometimes it’s the other way around.
I report both. New contacts tell you how many people marketing added to the database. Form submissions tell you how much demand it created. HubSpot’s form submission report splits the two for you.
Is Google Ads counting the same thing?
Start with the conversion actions marked primary, since they’re the ones in the Conversions column. If a phone call, a click on an email link or a page visit is in there next to the form, the Conversions total includes leads HubSpot’s form reports will never see.
Don’t change what’s primary to make a report line up. Primary actions are what the campaigns optimize toward, and calls may be exactly what you want them chasing. Segment the report by conversion action instead, and compare only the form against HubSpot. It’s the same check Google suggests for confirming conversions are reported accurately.
Then look at where the form conversion comes from. There are three usual sources, and each plays by slightly different rules.
- The Google Ads tag on the site follows Google Ads’ own settings.
- A key event imported from Google Analytics brings some of its settings with it, and those can’t always be changed in Google Ads. Imported conversions can also take up to a day to show up.
- HubSpot’s own conversion events can send form fills or lifecycle stage changes to Google Ads. They only count what happens after you set them up, and only for contacts HubSpot can match to Google. Your plan caps how many you can have: 5 on Marketing Hub Starter, 50 on Professional, 100 on Enterprise.
The thing to watch for is two of these tracking the same form. If both are primary, every lead counts twice. Google sometimes marks Google Analytics imports as secondary for exactly that reason. If the import is your only tracking, though, it has to be primary, or the form never reaches the Conversions column.
If the form is tracked with a thank-you page, I’d change that first. A thank-you page conversion counts anyone who sees the page: the person who refreshes it the next morning, the one who lands there by accident, the one who finds it in a Google search because nobody kept it out of the index.
Track the submission itself. Most form tools, HubSpot’s included, announce in the browser when a form has been submitted successfully. A tag in Google Tag Manager can listen for that signal and send the conversion to Google Ads and Google Analytics as an event. It fires when the form succeeds, and a refresh doesn’t fire it again.
Whatever this turns up, fix it before going further. Everything after this assumes both systems are counting the same form.
Is anyone counted twice?
Google Ads’ Count setting decides how many conversions one ad click can produce. “Every” counts each form fill, and “One” counts the first. Google recommends One for leads, to stop page refreshes from counting twice. New website conversion actions start with the Every setting, though, so an account set up in a hurry may still be using it. A change only affects conversions from that day on.
The repeat rate tells you whether it matters in your account. Google shows it for each action in the Conversion actions table. It’s what Every would count divided by what One would count, so a repeat rate of 1.15 means about 15 extra conversions per hundred. It’s easy to miss, and worth a look.
If the form comes in from Google Analytics, check its counting method there as well: every time, or once per session.
Keep this separate from the returning customer. Two fills in one visit is one lead counted twice. A new request eighteen months later is a second lead, and marketing should get the credit for it.
Who gets the credit?
Once both systems count the same form, most of the remaining gap is a disagreement about credit. Neither side is wrong. They’re applying different rules.
Google Ads claims any lead that comes within 30 days of a click on one of your ads. It can’t see what else happened in between, and it doesn’t try. Someone clicks an ad on Monday, leaves, searches for you by name the next week, clicks the organic search result and fills in the form. Google Ads counts it. Some accounts stretch the window to 60 or 90 days for products with a long buying cycle, which widens the gap further.
HubSpot’s Original Traffic Source records the first known visit and keeps it for good. If that same person first found you through organic search a month before they ever saw the ad, HubSpot calls them Organic Search, and it always will.
- A month earlier First visit, from an organic search result
- Monday Clicks your ad, then leaves
- The next week Comes back from an organic search result
- Same visit Fills in the form
- Google Ads records
- One conversion, dated the Monday of the click, credited to the ad
- HubSpot records
- One new contact, created the day of the form, with Organic Search as its Original Traffic Source
That permanence is useful for counting new people and a problem for almost everything else. A contact who first arrived two years ago through organic search, and came back last week through an ad, still reads as organic. Latest Traffic Source doesn’t fix it, because it updates on every visit, form or no form.
| Google Ads | HubSpot | |
|---|---|---|
| Counts | Form fills after an ad click | People, and the forms they fill in |
| Dates it by | The ad click | The day the person became a contact |
| Gives the lead to | Your ad, if clicked in the last 30 days | Wherever the person first came from |
| Sees other channels | No | Yes |
Switching Google Ads to last click is a tempting fix, and it won’t close the gap. Google’s attribution models only divide credit among your ads. A visit from an organic search result or a typed address never gets any, so the conversion stays with Google Ads and just moves between campaigns.
What else keeps the numbers apart?
Three things survive even a careful setup.
Estimates. When Google can’t see a conversion, for instance because the visitor declined cookies, it may estimate one and add it to the Conversions column. Google calls these modeled conversions. There’s nobody behind them, so you’ll never find them in HubSpot.
Dates. Google Ads files a conversion under the day of the click. HubSpot files a new contact under the day it was created. A click on September 29 and a form on October 3 is a September conversion and an October contact. Google Ads also keeps adding conversions to past dates for up to 90 days, so last month’s number is still moving. To compare a month fairly, use the Google Ads columns that report by conversion time, filtered to the form.
Declined cookies. A visitor who declines HubSpot’s cookie banner and then fills in a form still becomes a contact. HubSpot just can’t see where they came from, so it files them under Direct Traffic. Google Ads may still count them, or estimate them. A cookie banner can quietly shrink HubSpot’s paid search number.
If you run Performance Max, YouTube, Smart or Local Services campaigns, there’s one more. HubSpot’s ads reports can’t connect contacts to those campaigns. The contacts can still show Paid Search as their source, but HubSpot’s ads reports will come in lower than Google Ads.
One month, worked through
The numbers here are made up to show the method. Google Ads shows 40 conversions from September clicks. HubSpot shows 26 new contacts from Paid Search.
| Step | Count |
|---|---|
| Google Ads conversions from September clicks | 40 |
| Same person, same visit, counted twice | −3 |
| Google’s estimates, with nobody behind them | −2 |
| Existing contacts who came back through an ad and asked again | −7 |
| New people HubSpot credits to an earlier, non-ad first visit | −3 |
| People who declined cookies, filed as Direct Traffic | −2 |
| HubSpot contacts whose ad click was more than 30 days earlier | +3 |
| HubSpot new contacts from Paid Search | 26 |
Look at what’s wrong in that table. One line. The double count is the only thing to fix. The estimates are Google’s. The seven returning customers are leads a new-contacts report was never going to show. The rest is two systems applying different rules to the same people.
Which number goes in the report?
For form leads, HubSpot’s. Every lead in it has a name and an email address, and sales can call it, qualify it and tell you whether it was any good. Nobody can call a conversion count.
Google Ads’ number still has a job. It’s how the person running the ads sees what’s working, and it’s what the campaigns learn from. It belongs in their reporting. It doesn’t belong next to HubSpot’s in a report for leadership. Two numbers for one result invite exactly the question that started this, from people who don’t work in either system every day.
Pick one way of giving credit and use it on every channel. Being consistent matters more than which rule you pick. For most small and mid-sized companies, I use two.
The first rule comes free with Original Traffic Source. The second takes more work, because Latest Traffic Source keeps moving. Tying each form fill to the visit it happened on means working from the contact’s visit history, in an export or a data warehouse.
Models that split credit across every touch sound more accurate, and at enough volume they can be. Google Ads uses one by default for most conversion actions, and Google Analytics recommends one. Google has retired the simpler multi-touch options, such as linear and time decay, from both. For the Google Ads version, Google recommends at least 200 conversions and 2,000 ad interactions in 30 days. A small B2B company rarely sees 200 form fills in a month. A mid-sized one might.
You can also build a multi-touch model yourself from each contact’s full visit history in a data warehouse, or pay for a tool that builds one. A rules-based version, such as splitting credit evenly across every visit, works at any volume. It still needs that visit history, and it’s still harder to explain.
For most small and mid-sized companies, I’d stay with the two rules above. Anyone can open a contact in HubSpot and see which channel got the credit and why. A model that splits each lead into fractions across several channels is much harder to explain to the people reading the report.
What to do this week
Put the two reports side by side and confirm that both count form fills, from the same forms, set up the same way. Differences from setup are worth fixing. Differences from credit and dates are the systems doing what they were built to do.
The most common cause I see is systems set up by different people at different times, with nobody checking that they agree. Someone has to own how every system counts, or the reports will keep arguing with each other.
Then write down two things and use them in every report: what counts as a lead, and which channel gets the credit for one.
Questions
Should I switch Google Ads to last click to make the numbers match?
No. Last click in Google Ads only chooses among your ads. A lead whose last visit came from somewhere else still counts for Google Ads. Change the model for bidding reasons, if at all.
Why does Google Ads sometimes show more conversions than clicks?
Google removes clicks it judges invalid, the accidental and the fake, from your click count and your bill. If a conversion followed one of those clicks, the conversion stays. You can end up with more conversions than clicks.
Should I change the conversion window?
Lengthen it if your buyers usually take more than 30 days to decide, so the ads get credit for the leads they started. I wouldn't shorten it to make Google Ads look more like HubSpot. You'd give up a useful signal for a number that only looks closer.
Can I see which people Google Ads counted?
Not in Google Ads itself, which shows totals. HubSpot saves the Google click ID on each contact who arrived from an ad, in the Google ad click id field. Google's API can list your ad clicks by that ID for the past 90 days. Matching the two is how you check person by person.
Related
Switchboard Partners works through questions like this with clients as part of analyzing and compiling business data.