Analytics and ad platforms count different things at different moments. Consent refusals, ad blockers, bot filtering, lazy-loaded ad slots, time zones and the definition of a page all change the numbers. Compare trends and ratios (impressions per pageview, revenue per 1,000 pageviews) rather than raw totals.
Every publisher has opened GA4 and AdSense side by side and found numbers that do not match. That is normal. The goal is not to make them equal, but to know why they differ and which one to use for which decision.
The main reasons
| Cause | Effect |
|---|---|
| Consent refusals | cookie-based analytics misses visitors who refuse; ad tags may still serve non-personalised ads |
| Ad blockers | block ads and often GA4; a lighter analytics script is blocked less |
| Bot filtering | each platform filters different bots |
| Lazy loading | an ad slot below the fold is only requested if the reader scrolls to it |
| Ad refresh | one pageview can produce several impressions on refreshing slots |
| Time zones | AdSense days may use another time zone than your analytics property |
| Page definition | single-page apps and AMP pages can be counted differently |
Pageviews are not ad requests
A pageview is one page loaded. An ad request is one slot asking for an ad. A page with five slots, two of them lazy-loaded, can create anything from three to eight requests depending on how far the reader scrolls. That is why "impressions per pageview" is a more useful number than either total.
Which number to trust for what
- Revenue and RPM: your ad platform, because that is what you are paid on.
- Editorial decisions (what to write, which source works): your analytics, because it counts readers, not slots.
- Traffic trends: cookieless analytics, because it does not lose the visitors who reject consent.
How to compare properly
- Set the same time zone in both tools.
- Compare one week, not one day, and the same pages.
- Calculate impressions per pageview and revenue per 1,000 pageviews each week; watch the trend.
- When the ratio moves suddenly, look for a change: a new ad layout, a consent banner update, a template change.
Where PubPulse helps
Because PubPulse counts visitors who reject cookies and filters bots before storing data, its pageviews are usually closer to what your ad server sees than GA4's are. Use them as the denominator for page RPM.
Try PubPulse free for 30 days
Every feature, no pageview limit, no credit card. Paste one line of code and your first visits show up within seconds.
Start your free trialor click around the live demo first, no sign-up needed