Blog· HubSpot analytics 8 min read

Why Your HubSpot and GA4 Numbers Never Match (And Which One to Trust)

Two tools, two totals, one meeting that goes nowhere. The five real reasons HubSpot and GA4 disagree — and the rule we give clients for which number belongs in which report.

Why Your HubSpot and GA4 Numbers Never Match (And Which One to Trust) — HubStack HubSpot article cover
In this article
  • 1. Sessions are defined differently, so totals can never match
  • 2. Cookie consent hides different amounts of traffic from each tool
  • 3. Source attribution rules disagree — especially on 'direct'
  • 4. Conversions are counted on completely different objects
  • 5. Tracking code faults that are worth hunting down
  • The rule we give every client

Every marketing team using HubSpot eventually hits the same meeting: HubSpot says 4,120 sessions and 38 conversions, GA4 says 4,870 sessions and 31 conversions, and nobody can explain the gap. The instinct is that one tool is broken. Neither is. They are answering different questions with different rules, and once you know which rules differ, the numbers stop being a mystery and start being useful.

The gap is normal. In the portals we audit, a 5–15% difference in sessions between HubSpot and GA4 is expected behaviour. What is not normal is a 40% gap, conversions that appear in one tool and not the other, or a source breakdown where half your traffic lands in direct — those are real tracking faults worth fixing.

This guide separates the two. First the structural differences you should stop trying to reconcile, then the genuine misconfigurations we look for during HubSpot technical SEO work — and a simple rule for which tool owns which answer.

1. Sessions are defined differently, so totals can never match

HubSpot's analytics are contact-centric: it tracks visits with its own tracking code and stitches activity onto contact records once someone is identified through a form, a tracked email click or chat. GA4 is event-centric and privacy-modelled: it counts events, groups them into sessions, and applies its own timeout and attribution logic on top.

The practical consequences are unavoidable. HubSpot's session window and GA4's session window end at different moments, GA4 resets a session on a new campaign parameter, and GA4 applies data thresholds and modelling to sparse segments while HubSpot does not.

Chasing a match here is wasted effort. Use each tool's own numbers consistently over time — a 12% gap that stays a 12% gap month after month is a healthy sign, and a sudden change in the gap is the alert worth watching.

2. Cookie consent hides different amounts of traffic from each tool

If you run a consent banner, both tools lose visitors who decline — but rarely the same ones. HubSpot's tracking code respects its own consent settings and cookie categories; GA4 respects your consent mode implementation. Configure one strictly and the other loosely and you have manufactured a permanent gap.

This is the single biggest cause of large discrepancies we see in EU-facing portals. A banner that blocks HubSpot analytics until explicit opt-in while GA4 runs in a modelled consent mode will show two completely different worlds.

Fix it by deciding your consent policy once and implementing it identically in both: the same categories, the same default state, the same regions. Then document it, because in six months someone will ask why the numbers moved.

3. Source attribution rules disagree — especially on 'direct'

HubSpot assigns an original source and a latest source per contact; GA4 assigns a session-scoped source plus a data-driven or last-click model for conversions. So a contact HubSpot files under organic search — because that is how they first arrived in March — can convert in a GA4 session credited to paid social in September. Both are correct answers to different questions.

A bloated direct bucket, though, is a real fault. Its usual causes: internal links or email links stripped of tracking parameters, redirect chains that drop the referrer, links inside PDFs and documents, QR codes without UTMs, and pasted URLs where the campaign parameters were trimmed.

We standardise UTM conventions, remove redirect hops on campaign URLs and make sure email and CTA links carry parameters through to the landing page. The landing page checklist covers the campaign-side details.

Which tool answers which question
QuestionTrustWhy
Which page produced this deal?HubSpotIt joins page views to the contact and the deal record
How much organic traffic did we get?GA4Broader session modelling and Search Console pairing
What is our form conversion rate?HubSpotForm submissions are first-party objects, not events
Which channel drove the most sessions?GA4Session-scoped channel grouping is purpose-built
What is pipeline value by source?HubSpotOnly HubSpot knows the deal amount
How do users move through the page?GA4Event-level scroll, click and engagement data
Did this email lead to revenue?HubSpotEmail, contact and deal live in one system

4. Conversions are counted on completely different objects

In HubSpot a conversion is usually a form submission tied to a contact — deduplicated, so the same person filling in three forms is one contact with three submissions. In GA4 a conversion is an event you flagged as a key event, counted per session or per user depending on the setting.

That is why HubSpot commonly shows fewer conversions than GA4: duplicates, test submissions and repeat downloads collapse onto existing contacts, while GA4 counts each firing event. Add a thank-you-page event that also fires on refresh and the gap widens further.

The fix is definitional, not technical. Write down what counts as a conversion for the business, then configure both tools to that definition and stop comparing the raw totals across them.

5. Tracking code faults that are worth hunting down

Some gaps really are bugs. The list we work through: the HubSpot tracking code missing from non-HubSpot pages such as a WordPress blog on a subdomain, GA4 present twice so sessions inflate, the code sitting below other scripts that break execution, and tracking absent from thank-you pages so conversions never register.

Cross-domain setups cause more damage than anything else. If your site is on one domain and your booking tool or checkout on another, a visitor crossing the boundary starts a fresh session and loses the original source unless cross-domain measurement is configured in both tools.

Speed matters too: scripts blocked by a slow third-party tag or a heavy hero can fail to fire on mobile entirely. Our Core Web Vitals guide walks through the loading order we use.

The rule we give every client

Use HubSpot for anything that touches a person, a deal or revenue: which page produced the enquiry, what the pipeline is worth by source, whether this campaign generated customers rather than clicks. That join between behaviour and money is the reason to run marketing on the same platform as the CRM.

Use GA4 for anything that touches traffic and behaviour: channel volumes, landing page performance, engagement, search visibility paired with Search Console. It sees the anonymous majority HubSpot never identifies.

Then pick one tool per report and never mix them in the same chart. Most of the reporting arguments we walk into are not analytics problems at all — they are two definitions competing for one slide. If the underlying CRM data is also inconsistent, start with the CRM data cleanup guide first, because clean attribution on dirty records still lies.

FAQ

Questions people actually ask AI about this.

Why do HubSpot and GA4 show different session counts?

They define a session differently, apply different timeout and campaign-reset rules, and are affected differently by cookie consent. A consistent 5–15% gap is normal; a 40% gap usually means a tracking or consent misconfiguration.

Which tool should I trust for conversions?

HubSpot, when the conversion is a form submission tied to a contact or deal. It deduplicates onto contact records and connects the conversion to pipeline value, which GA4 cannot do.

Why is so much of my HubSpot traffic showing as direct?

Usually missing tracking parameters, redirect chains that drop the referrer, links in PDFs or QR codes without UTMs, and pasted URLs with parameters trimmed. Standardise UTMs and remove redirect hops on campaign links.

Can I use HubSpot analytics instead of GA4?

For revenue and contact-level questions, yes. For anonymous traffic volume, engagement detail and search visibility, GA4 plus Search Console still gives you more. Most teams run both with clear roles.

Does cookie consent affect HubSpot analytics?

Yes. HubSpot's tracking code honours your consent settings and cookie categories, so declined visitors are not tracked. If your GA4 consent mode is configured differently, the two tools will permanently disagree.

Why does HubSpot show fewer conversions than GA4?

HubSpot deduplicates submissions onto existing contacts while GA4 counts each qualifying event, including repeats and refreshes on thank-you pages.

How do I track a non-HubSpot page in HubSpot?

Install the HubSpot tracking code on that page or subdomain and add the domain to your portal's tracking settings. Without it, those pages are invisible to HubSpot attribution.

What breaks attribution across two domains?

A visitor crossing from your site to a separate booking or checkout domain starts a new session and loses the original source unless cross-domain tracking is configured in both HubSpot and GA4.

Does original source or latest source matter more?

Original source tells you which channel earns new audiences; latest source tells you what closes them. Report both — optimising only for last touch quietly defunds the channels that create demand.

Can HubStack fix our HubSpot tracking setup?

Yes. Tracking code coverage, consent alignment, UTM conventions, cross-domain measurement and conversion definitions are part of our HubSpot technical SEO engagements, with the setup documented at handover.

Proof

What this looks like when it's done right.

Related

Technical SEO services

Redirect mapping, metadata baselines, canonical configuration, schema and indexing controls — handled as an ongoing programme rather than a launch-week scramble.

HubSpot technical SEO
Keep reading

How to Set Up HubSpot CRM for a 30-Person Team (Without Overbuilding It)

Most failed CRM rollouts are overbuilt, not underbuilt. Here is the order we configure HubSpot for a 30-person company — and everything we deliberately leave out of version one.

Read article