If you run Google Ad Manager alongside header bidding or direct SSP partners, the impression and revenue numbers will not match across dashboards. Some gap is built into how the systems work. The useful question is not whether a gap exists, but whether you can explain it, and whether it is stable.
Why the numbers differ in the first place
Each system counts at a different point in the delivery chain. A single page view can pass through several of these steps, and each party records the one it can see.
- Ad request. The page asks the ad server or a bidder for an ad. Requests are always the largest number and are not billable.
- Bid response. An SSP returns a bid. Many bids lose, arrive too late, or are never used.
- Win in the ad server. In a header bidding setup, the winning bid is passed to the ad server as key-values and competes with other line items. A bid can win the SSP auction and still lose in the ad server.
- Begin to render. Google Ad Manager counts an impression when the creative begins to render on the page, not when the ad request is made.
- SSP impression. The SSP usually counts when its own creative or tracking call fires. That is a separate event, made by a separate script, and it can fail independently.
- Viewable impression. A subset of rendered impressions that met a viewability threshold. Comparing viewable figures from one side with total impressions from the other produces a large, meaningless gap.
Before comparing anything, confirm both reports are measuring the same event.
Timeouts and bids that never render
Header bidding adds steps between a bid and a rendered ad. The auction has a timeout, the ad server makes its decision, the creative is fetched, and the user may scroll away or close the page while this happens. Lazy loading and refreshing ad slots add more opportunities for a won bid to go unrendered.
Some SSPs report on a win notification, others on a render event. If one partner counts wins and your ad server counts renders, that partner will look higher than the ad server, and the gap will move with page speed, connection quality and device mix.
Invalid traffic filtering
Every party filters invalid traffic (IVT) with its own methods and on its own schedule. Your ad server may filter some activity in near real time. An SSP may filter at the time of the auction, again after the fact, and again when buyers dispute delivery. Late deductions often appear only on the final statement, after the dashboard has shown a higher figure for weeks.
This is one of the main reasons that dashboard revenue and paid revenue differ, even when impression counts were close.
Time zones, cut-offs and currency
Ad Manager reports in the network time zone set when the account was created, though some reports can be run in other time zones. Many SSPs report in UTC. A monthly report in one time zone and a monthly statement in another are covering slightly different hours, which matters most at month boundaries and during traffic spikes.
Currency causes similar drift. The ad server may convert bids into your network currency at one rate, the SSP may report in US dollars, and payment may be converted again at a rate on the payment date. Check which exchange rate and which date each party uses.
Gross vs net, and price granularity
Some partners show gross revenue (what the buyer paid) and deduct their fee later. Others show net revenue (what you receive). Comparing a gross figure from one partner with a net figure from your ad server will produce a gap that has nothing to do with delivery.
Header bidding adds a second revenue issue. Ad Manager does not know the actual clearing price of a header bid. It knows which line item won, and that line item has a fixed rate set by your price granularity. If a bid of 1.27 is matched to a line item priced at 1.20, the ad server records 1.20 while the SSP records 1.27. Coarse granularity, missing price buckets or line item rates that do not match their targeting will all create a revenue gap even when impressions agree.
| Cause | Usually affects | Where to check |
|---|---|---|
| Different counting points | Impressions | Each partner's metric definitions |
| Timeouts, lazy load, refresh | Impressions | Bid wins vs ad server impressions by ad unit |
| IVT filtering | Impressions and paid revenue | Statement deductions |
| Time zone and cut-off | Both, at period edges | Report settings on each side |
| Currency and rate date | Revenue | Network currency and statement terms |
| Gross vs net | Revenue | Partner agreement and report labels |
| Price granularity | Revenue | Line item rates vs bid prices |
How much of a gap is normal
There is no universal standard. A commonly cited convention in contracts and in the industry is that discrepancies within roughly 10% are treated as acceptable, but the threshold varies by agreement, partner and format, and some contracts specify which party's numbers are used for billing. Check your own agreements rather than relying on a general rule.
A stable gap that you can explain is usually less concerning than a small gap that keeps changing.
How to reconcile, step by step
- Pick one partner and one complete month. Ideally a month that has already been paid, so you have a final statement.
- Align time zone and currency. Run reports on both sides with the same time zone where possible, and note the currency and conversion rate each side uses.
- Compare impressions first. In the ad server, filter to that partner's line items or yield partner. Break the comparison down by day, ad unit, device and country if both sides allow it.
- Then compare revenue. Confirm whether each figure is gross or net, and account for price granularity.
- Then compare against what was paid. Note any IVT deductions, adjustments or fees shown on the statement.
Doing this in order matters. If impressions do not agree, revenue comparisons will not tell you much.
Patterns that suggest a real issue
- A gap that grows over time, especially after a site release, template change or wrapper update.
- A gap concentrated in one place: one partner, one format, one device type, one country or one ad unit.
- Mismatched ad unit mapping, where a partner's placement IDs point to the wrong slots or sizes on your site.
- ads.txt or sellers.json problems, such as missing or outdated seller lines, wrong relationship types, or seller IDs that do not match the partner's sellers.json. Buyers may discount or skip that supply. The IAB Tech Lab ads.txt page covers the specification.
- Duplicate or missing line items, such as two line items for the same price bucket, gaps in price buckets, or line items targeting the wrong key-values.
- Revenue on the statement well below the dashboard without a clear IVT or fee explanation.
What to ask a partner for
When you raise a discrepancy, send your own figures and ask for theirs on the same basis. Useful requests include:
- Daily impressions and revenue for the period, in a stated time zone and currency.
- Whether revenue is gross or net, and the fee applied.
- The event they count as an impression.
- A breakdown by placement ID, ad unit, size, device and country.
- IVT deductions and other adjustments, with dates.
- Confirmation of the seller ID and ads.txt line they expect on your site.
Keep the request specific and limited to one period. Partners can respond to a narrow, well-documented question much faster than to a general complaint.
When to get a second pair of eyes
Reconciliation is slow when the setup has grown over years: many partners, several wrappers, inherited line items and unclear contract terms. An outside review can help when the gap is changing and you cannot trace why, when the team that built the setup has moved on, or when you want an independent read before a partner conversation. It will not guarantee more revenue, but it should tell you which gaps are expected and which are worth pursuing. If that would help, you can discuss your website with PubOS.
Common questions
Why does Google Ad Manager show fewer impressions than my SSP?
Often because they count different events. Ad Manager counts when the creative begins to render, while some SSPs count a win or their own tracking call. Bids that win but never render, due to timeouts, lazy loading or users leaving the page, can appear on one side and not the other.
What discrepancy between ad server and SSP is acceptable?
There is no fixed standard. Gaps within roughly 10% are a commonly cited convention, but thresholds vary by contract and partner. A stable, explainable gap is generally less concerning than one that grows or is concentrated in one area.
Why is my SSP payment lower than the dashboard showed?
Common reasons include invalid traffic deductions applied after month close, fees taken from gross revenue, and currency conversion at a different rate or date. Ask the partner for an itemized breakdown of adjustments for the period.
Why does header bidding revenue differ between Ad Manager and the bidder?
Ad Manager records the fixed rate of the winning line item, not the actual bid. With coarse price granularity or missing price buckets, the ad server figure will sit below the bidder's reported revenue even when impressions match.