MIQAS
By Ensign
2026-08-11 · 6 min read

GA4 shows half the sessions Google Ads does

Short answer:because Google Ads and GA4 are not measuring the same thing, and were never built to. Google Ads counts a click and credits it last-click, inside its own account, using its own rules for what counts as a valid interaction. GA4 counts a session, and a session only exists if a cookie was set, consent was given, and the visit fits inside GA4’s own session and attribution rules, credited under last non-direct click, a different model entirely.

A practitioner put it plainly: “Google Ads work on last-click attribution and Analytics work on Last-non direct click. That’s just one of the many reasons for the mismatch in numbers.” The two dashboards will never converge, because they were never asking the same question.

What the gap actually looks like

A campaign runs. Google Ads shows a clean number of clicks, because a click is the simplest thing on the internet to count: someone tapped the ad. GA4, looking at the same traffic, shows fewer sessions, sometimes far fewer. Nothing was lost. GA4 is applying its own filters before a visit becomes a countable session.

  • Consent. No analytics consent, no _ga cookie, no session. The click happened; GA4 never saw it.
  • Session definition. By default, GA4 closes a session after 30 minutes of inactivity and requires the visit to qualify as engaged, roughly meaning it stayed past a short threshold, viewed more than one page, or fired a conversion event, before it counts toward most reports.
  • Cross-domain and app-to-web gaps. If the click lands on one domain and the purchase completes on another, or the flow crosses from an app to a browser, GA4 can lose the thread unless cross-domain measurement was configured for that exact path.
  • Attribution model. Even for the sessions GA4 does capture, it credits the channel differently than Google Ads credits the click, so the same visitor can appear once in one report and be split or excluded in the other.

None of this is a bug in either platform. It is two products, built by the same company, answering two different questions with two different rulebooks.

Why this matters more than it looks

The instinct is to trust whichever number is bigger, or whichever number the account manager reports. Neither is a safe default. Google Ads’ click count includes clicks GA4 correctly excluded: invalid, accidental, or ones that never resulted in a real visit reaching your site. GA4’s session count excludes real visitors GA4 simply lost: no consent cookie, a slow page that timed the session out, a cross-domain jump it was not configured to follow.

Optimising spend against either number alone means optimising against a number that is, by design, only part of the picture.

Where MIQAS comes in

MIQAS does not try to force Google Ads and GA4 to agree, because they were built not to. Instead it captures the one identifier both systems can actually use to reconcile: the click ID on the click, and a persistent visitor identity that survives past a single session window.

Every purchase MIQAS records is forwarded server-side to GA4 through the Measurement Protocol with a stable visitor ID, not a new random one per event, so a returning visitor is measured as one person across their sessions instead of several. The click ID travels with the event, so the click that started the journey stays attached to the sale that finished it, even if GA4’s own session logic would have split them.

That server-side event fires once, tied to the confirmed purchase, and is sent whether or not the browser was still open when the sale completed. It does not depend on GA4’s session window catching the moment, and it does not inflate the click count Google Ads was already reporting on its own terms. It is also gated on consent: the event only fires when the visitor has already accepted analytics.

Check yours today

  • Open Google Ads and GA4 side by side for the same seven-day window and the same campaign.
  • Compare clicks in Google Ads against sessions from Google paid search in GA4. A gap is normal; a gap of more than roughly a third is worth investigating for a consent-mode or cross-domain configuration issue specifically, rather than treating it as a general tracking failure.
  • In GA4, check whether Consent Mode is active and whether _ga cookies are actually being set for ad clicks. Blocked consent is the single most common reason for a session gap this large.
  • Stop asking which number is correct. Ask which decision you are trying to make, then use the platform built to answer that question: spend efficiency from Google Ads, on-site behaviour from GA4, rather than one number standing in for both.

The mismatch is not a sign that either platform is broken. It is a sign that a click and a session were never the same unit of measurement, and no dashboard refresh closes that gap on its own.

See it on your own data.

One dashboard that shows which ad drove every order; the live demo needs no card.

Related