AdOps Core
MEASUREMENT

Why don't my ad server and third-party reports match?

Most reporting discrepancies are not a counting bug. They come from comparing two systems that use different timezones, date ranges, event definitions or invalid-traffic filtering. A gap that clusters on day one or at midnight is almost always a timezone or flight-start misalignment.

Before assuming a tag is broken, confirm the two reports are describing the same thing. Publisher and third-party systems frequently use different timezones, different late-event allowances, and different definitions of what counts (served vs viewable impressions, deduplicated vs raw, filtered vs unfiltered for invalid traffic).

A single-digit percentage difference is generally considered standard and expected. The signal that points to a real cause is where the gap concentrates: a spike on the first day usually means the flight started at different local times, and a gap that appears at midnight points to a timezone boundary. A gap spread evenly across the flight is more likely a counting-method or filtering difference.

To reconcile, align the timezone, date range, and event definition on both sides first, then compare matched request IDs. Only after those match should you investigate deduplication, invalid-traffic filtering, or attribution windows as the remaining cause.

Go deeper

FAQ

What is a normal reporting discrepancy?

A difference of roughly a few percent between two ad-serving systems is generally considered normal and expected, caused by timing, redirects and filtering.

Why is the discrepancy biggest on day one?

A large first-day gap usually means the two systems started serving or counting at different local times or under different timezone boundaries, not that a tag failed.

← All guides