Guide

Why AdSense and GA4 revenue don't match (and when the gap is a real problem)

AdSense is the source of truth for what you earn, GA4 is an attribution view of part of that revenue, and the gap between them only matters when it changes suddenly or concentrates in one place.

Updated · 6 min read

If you have linked Google AdSense to Google Analytics 4 (GA4), you have probably noticed that the two rarely show the same revenue for the same period. That is expected. The two systems measure different things, at different times, under different rules. The useful question is not whether they match, but whether the gap is stable and explainable. This guide covers why the numbers differ, how to reconcile them, and the patterns that suggest something is actually broken.

Which number to trust

For what you will be paid, trust AdSense. It is the system that serves the ads, counts the impressions and clicks, applies invalid-traffic adjustments, and issues the payment.

GA4 is an analytics view. It takes AdSense data and attaches it to the pages and sessions GA4 was able to measure. That makes it useful for questions AdSense cannot answer well, such as which content, traffic sources or user journeys produce revenue. It is not a ledger, and it should not be used to check payments.

What each system records, and when

AdSense records an impression when an ad is served and counted on your page, regardless of whether any analytics tag ran. Its earnings figures in reports are estimates until the month closes.

GA4 records events only when its own tag loads and is allowed to send data. Revenue in GA4 is tied to those measured page views and sessions. If GA4 did not see the visit, it has nowhere to put the revenue, even though the ad was served and AdSense counted it.

GA4 data also takes time to process. Figures for the last day or two are often incomplete, so recent dates are the worst place to compare.

Estimated vs finalized earnings

The earnings you see in AdSense reports during the month are estimated. Finalized earnings are calculated after the month ends and appear on the Payments page early in the following month. The difference usually comes from invalid traffic deductions and other adjustments made after Google reviews the activity.

Do not assume GA4 reflects those later adjustments. If you compare GA4 against finalized AdSense earnings for a closed month, part of the gap may simply be deductions that GA4 never received.

Time zone and date boundaries

AdSense reports days in the time zone set for your AdSense account. GA4 reports days in the reporting time zone set on the GA4 property. If these differ, every "day" covers a different 24-hour window, and daily totals will not line up even when the monthly totals are close.

Check both settings directly rather than assuming. Also note that changing a GA4 property's time zone only affects data going forward, so historical comparisons can shift at the date the setting changed.

Currency

AdSense reports in your account's reporting currency. GA4 converts revenue into the property's currency. If those differ, exchange-rate conversion alone will produce small, moving differences. Set both to the same currency where you can, or convert at a consistent rate before comparing.

What the AdSense–GA4 link covers, and what it doesn't

The link is set up in GA4 under Admin, Product links, AdSense links. Once active, AdSense impressions, clicks and revenue become available in GA4's publisher ad reporting.

It covers AdSense only. It does not include:

  • Revenue from Google Ad Manager, which has its own separate integration with GA4.
  • Header bidding or other SSP revenue that is paid outside AdSense.
  • Direct-sold campaigns, affiliate income or sponsorships.

Some GA4 revenue metrics combine sources. If you have linked Ad Manager or send ad revenue events from other partners, filter to AdSense before comparing. If you run multiple demand sources, neither AdSense nor the AdSense view in GA4 represents total site ad revenue.

Consent, ad blockers and missing measurement

Ad serving and analytics measurement are separate requests, and they can be blocked independently.

  • When a visitor declines analytics consent, ads may still serve (for example, as non-personalized or limited ads), while GA4 records less or nothing for that visit, depending on how consent mode is configured.
  • Some browsers and privacy extensions block analytics scripts but not all ad requests.
  • Pages where the GA4 tag is missing, delayed or failing still earn AdSense revenue that GA4 cannot attribute.

Each of these makes GA4 lower than AdSense. The size of the effect depends on your audience, consent setup and geography, so there is no universal "normal" figure. What matters is that it stays roughly constant over time.

Page and session attribution

Even when both systems see the same revenue, they may break it down differently. AdSense reports by site, URL channel, ad unit or page. GA4 reports by page path, landing page, session source and other dimensions it collected. Query strings, redirects, AMP or alternate URLs, and single-page apps that do not send a page view on route change can all cause revenue to land on a different page in GA4 than you expect.

Sessions that cross midnight can also place activity on different dates in the two systems.

Source of differenceUsual directionNormally stable?
Invalid traffic and finalizationAdSense finalized lower than estimatedMostly, month to month
Time zone mismatchShifts revenue between daysYes; nets out over longer periods
Currency conversionEither directionSmall and varies with exchange rates
Consent and blocked analyticsGA4 lowerYes, unless consent setup changes
Missing or broken GA4 tagsGA4 lowerNo; often starts on a specific date

A step-by-step reconciliation

  1. Pick a closed date range that is at least a few days old, so GA4 processing is complete.
  2. Confirm the time zone in AdSense and in the GA4 property. If they differ, compare at weekly or monthly level, or note the offset.
  3. Confirm both systems use the same currency, or convert consistently.
  4. In GA4, make sure you are looking at AdSense revenue only, not a combined ad revenue metric.
  5. Export daily revenue from both systems for the same range and calculate the gap for each day, as a ratio rather than an absolute amount.
  6. Look at the trend in that ratio. A flat line is normal. A step change is a lead worth following.
  7. If there is a step change, break both systems down by site, device, country and page or template to find where the gap sits.
  8. For the affected segment, open real pages and confirm that the GA4 tag fires, consent behaves as intended, and page views are sent.

Signs the gap is a real problem

  • The gap changes suddenly. A stable gap that widens on a specific date usually lines up with a site release, a new consent banner, a tag manager change or a template migration.
  • The gap is concentrated. If most of the difference sits on one device type, one country, one subdomain or one set of pages, look for a measurement fault there rather than a general cause.
  • Tags are missing on templates. New article layouts, AMP pages, landing pages and infinite-scroll pages are common places where the GA4 tag or page view events are absent.
  • GA4 traffic is steady but AdSense revenue falls. This is not a measurement gap. It points to a change in ad serving, demand or policy status, and should be investigated in AdSense itself.
  • Large deductions recur. Repeated, significant differences between estimated and finalized earnings deserve a closer look at traffic quality and sources.

When to get a second pair of eyes

Most AdSense–GA4 gaps are explained by the settings and limits above, and a careful daily comparison will confirm that. It becomes harder when several demand sources, a consent platform and multiple templates interact, or when the gap moved and nobody can tie it to a specific change. In those cases, an independent review of tagging, consent behavior and reporting setup can separate measurement issues from revenue issues. If that would help, you can discuss your website with PubOS.

For official reference, see the Google AdSense Help Center, the Google Analytics Help Center and the Google Ad Manager Help Center.

Common questions

Why is my GA4 ad revenue lower than AdSense?

Usually because GA4 can only attribute revenue to visits it measured. Declined analytics consent, blocked analytics scripts and pages without a working GA4 tag all reduce what GA4 shows, while AdSense still counts the ads served.

Should I use AdSense or GA4 for revenue reporting?

Use AdSense for what you earn and are paid. Use GA4 to understand which pages, traffic sources and audiences contribute to that revenue, accepting that it will not capture all of it.

Does GA4 show Ad Manager or header bidding revenue?

Not through the AdSense link. Google Ad Manager has a separate GA4 integration, and revenue paid outside Google's systems is not included unless you send it to GA4 yourself.

Why don't my daily AdSense and GA4 totals line up even when the monthly totals are close?

Most often the two accounts use different time zones, so each day covers a different 24-hour window. Recent days can also be incomplete in GA4 while data is still processing.