On this page+
Meta Ads says your campaign drove 1,000 clicks. GA4 says it drove 600 sessions. Either Meta is lying, GA4 is lying, or 400 visitors evaporated somewhere between the click and the landing. The third option is mostly correct, and the gap is wider in 2026 than it was in 2020 because of changes on both sides.
Here is the practical guide to reading both numbers without going crazy.
What Meta counts vs what GA4 counts
Meta counts at the ad platform. A click is recorded the moment a user taps the ad. Meta does not see what happens next; the visitor leaves Meta's ecosystem at that point and lands somewhere Meta cannot observe.
GA4 counts at the landed session. A session is recorded only after the GA4 script loads on the destination page. If the GA4 script does not load (ad-blocker, cookie consent rejection, page never finished loading), the session is not recorded.
The gap between the two is mechanical. Every click that does not result in a recorded GA4 session is the source of the discrepancy.
Where the missing visitors go
Five categories of click-without-session, in order of magnitude:
1. Cookie consent rejection. The visitor lands, sees a cookie banner, declines or ignores it. Without consent, GA4 does not record the session in standard mode. In EU markets this can erase 20 to 40 percent of clicks from GA4 reports. Outside the EU, the rate is lower (5 to 15 percent) but still meaningful.
2. Ad-blockers and privacy browsers. Brave, Firefox with Enhanced Tracking, Safari with strict mode, and most ad-blockers (uBlock, AdGuard) block the GA4 script entirely. The session is not recorded. Erosion is roughly 10 to 20 percent of clicks across most audiences, higher for tech-savvy ones.
3. iOS App Tracking Transparency (ATT). Meta's view-based attribution depends on cross-app tracking, which iOS users opt out of by default. Meta still reports the view-based "click" but GA4 never sees a landed session, because the user never actually clicked the ad; Meta attributed a view.
4. In-app browser drop-off. A user taps an Instagram or Facebook ad, the link opens in the Meta in-app browser. If the page is slow or the user gets distracted, they swipe back without finishing the load. Meta counts the click; GA4 never gets the session.
5. Pre-fetch crawlers. Some email apps and security tools pre-fetch URLs before the user clicks. These show up as Meta clicks (technically the URL was opened) but not GA4 sessions (the script never loads in a real browser).
The combined effect: a 20 to 40 percent gap between Meta's click count and GA4's session count is structural and normal. Wider gaps suggest a tracking config problem.
Which platform to trust for which decision
The split is clean once you know which decision you are making:
| Decision | Platform to trust |
|---|---|
| Did this ad get attention? | Meta (engagement, click count, view-through) |
| Did this ad creative outperform the other one? | Meta (the platform tested both at the source) |
| Did this campaign drive landed sessions? | GA4 |
| Did this campaign drive conversions on my site? | GA4 |
| Should I increase or decrease the budget? | Both, weighted (see below) |
Both platforms for budget decisions. The right number is closer to GA4's session count for "real visitors who saw the page" but closer to Meta's view-through count for "people who saw the ad and might have converted later through another channel." Most marketing teams blend the two: use GA4 for last-click attribution and Meta for view-through context, then make budget calls on the combined picture.
How to read both side by side
A practical weekly review:
- 01
Pull Meta's click count for the date range.
Meta Ads Manager → Campaigns → click metric for the period. This is the top of the funnel. - 02
Pull GA4's session count for the same campaign.
GA4 → Acquisition → Traffic Acquisition → filter to utm_source=facebook OR utm_source=instagram, utm_medium=paid_social. Compare to Meta's number. - 03
Calculate the gap.
(Meta clicks - GA4 sessions) / Meta clicks. A 20 to 40 percent gap is normal. A 50+ percent gap is a tracking issue. - 04
If the gap is wider than 50 percent, diagnose.
Most common: cookie consent banner is blocking GA4 entirely. Second most common: a server-side redirect is stripping query parameters. Third: utm_medium value is not in GA4's channel grouping match list. - 05
Calculate conversion rate using GA4 sessions rather than Meta clicks.
GA4 conversions divided by GA4 sessions = the actual conversion rate of landed visitors. Using Meta clicks understates the rate because of the gap.
What about Meta's "Click-Through Rate"?
Meta's CTR (clicks divided by impressions) is the right number for evaluating ad creative. It tells you whether the ad is interesting enough to make people tap. The number is calculated entirely inside Meta and is not affected by the GA4 gap.
GA4's "session rate" (sessions divided by impressions, if you can construct it) is roughly Meta's CTR minus the structural drop-off. Most teams do not bother calculating it. Use Meta's CTR for ad-creative decisions; use GA4 sessions and conversion data for budget and channel-mix decisions.
What about iOS users specifically?
Apple's privacy changes (ATT in iOS 14+, intelligent tracking prevention in Safari) have widened the Meta-vs-GA4 gap on iOS by roughly 10 to 20 percentage points compared to Android.
Meta's response was to expand "modeled conversions": Meta's algorithm estimates how many conversions a campaign drove based on aggregated, anonymized signals when explicit attribution is blocked. GA4 has no equivalent.
For iOS-heavy audiences (consumer brands, lifestyle, fashion), expect the gap to be wider. For Android-heavy or B2B audiences, the gap is narrower.
What UTMs to use on Meta Ads
The recommended UTM template for Meta paid:
utm_source=facebook (or instagram)
utm_medium=paid_social
utm_campaign={{campaign.name}}
utm_content={{ad.name}}
The {{}} placeholders are Meta's URL parameter macros, which auto-fill with the campaign and ad names from Ads Manager. For Meta placements where macros are not available (organic posts, Stories with manual link stickers), the free Trakl UTM builder generates the tagged URL by hand without losing the lowercase convention. This gets you per-ad attribution in GA4 without typing each URL by hand.
For organic Meta posts (not paid), the template differs: utm_medium=social instead of paid_social. The piece on utm_source vs utm_medium covers the channel-by-channel mapping.
What not to do
- Do not "reconcile" the numbers in a spreadsheet. Pretending Meta's clicks and GA4's sessions should match is a fight you will lose every quarter. Accept the gap.
- Do not pick the higher number for stakeholder reports. Meta's number tends to be higher and tempting for "we drove X clicks" claims. Stakeholders learn the gap exists and you lose credibility.
- Do not trust either number alone for ROI calculations. Use GA4 for landed-session-based ROI. Use Meta for incremental-conversion ROI (which includes view-through). Document which you used.
For the broader question of why GA4 disagrees with platforms, why your UTM data is messy covers the half-dozen specific causes. For the GA4-side setup that minimizes structural gap, UTM tracking in GA4 is the next read.
Frequently filed
Common questions.
Q.01Why does Meta Ads report more clicks than GA4 sessions?+
Three structural reasons. Meta counts clicks at the platform; GA4 counts landed sessions, which lose visitors to in-app browser drop-off, ad blockers, and cookie-consent rejection. Meta uses a 7-day click and 1-day view attribution window by default; GA4 uses last-click. iOS App Tracking Transparency erodes Meta's view-based attribution.
Q.02Which platform's numbers should I trust?+
Both, for different decisions. Meta's numbers are right for "did this campaign drive engagement at the ad level." GA4's numbers are right for "did this campaign drive landed sessions and conversions on my site." The gap is structural and not closing.
Q.03How big a gap is normal?+
A 20 to 40 percent gap between Meta-reported clicks and GA4-reported sessions is normal in 2026 for retail ecommerce. B2B campaigns often see smaller gaps (15 to 25 percent) because the audience uses fewer ad-blockers. Gaps wider than 50 percent usually indicate a tracking config problem rather than the structural gap.
By the byline
Trakl TeamEditorial team
We build Trakl, a link shortener and UTM tracker for marketing teams. We write here from the cleanup work, support tickets, and campaign reviews that fill the rest of our week. Specifics over slogans, and we cite the source.
Photo: Logan Voss on Unsplash


