What each analytics counter counts and when
Why impressions land in the wrong country or city, why there are more impressions than page views, why pop and direct-link counts differ from the traffic source, what video "No ads" and Fill Rate count, and why conversions drop or expire after an attribution window or a server-to-server setting changes.
A detail page of Analytics discrepancies, which has the 60-second check, the cause table and what to send support. This page holds the checks where the question is what a counter counts, or when — the country and city of an impression, impressions against page views, pop and direct-link counts, video No ads and Fill Rate, and conversions that drop or expire after an attribution window or a server-to-server setting changes. Gaps against a partner’s own numbers are on Analytics discrepancies against a partner’s numbers; reports that disagree with each other or come back empty are on Reports that disagree or come back empty.
Symptom: impressions in the wrong country or city (VAST, geo database, outside targeting)
- The country is decided at the ad request. Targeting and the country of the impression come
from the IP that called the ad tag. When that caller is a server — a video player’s or SSP’s
server, a server-side ad insertion stitcher, a proxy — the country is the server’s, unless the
caller forwards the viewer’s IP (
clientIp,X-Device-IP,X-Forwarded-For), see Serving behind server-side ad insertion. - Location (city) and IP are read from each hit. The impression and click rows take the region, city and IP of the pixel or click request itself; a pixel fired from a server reports the server’s city even when the request’s country was right.
- Two IP data providers differ. Epom resolves IPs with the IP data provider set for your network (ask Epom support or your account manager which one). A partner on another provider puts a share of IPs — mobile carriers, VPN exits, new ranges — in a different country or city. Country-level differences of a few percent are normal; city level differs much more.
- Targeting was not where you think. Another campaign linked to the same placement with wider geo targeting fills those countries — group by Country and Campaign to see which one.
Symptom: pop or direct-link numbers differ from the traffic source
A traffic source that sends visitors to your direct URL counts the visits it sent; Epom counts the redirects it served. Expect a larger gap than for banners:
- No-ad answers. A request that no banner can serve — capped, out of targeting, over a
limit — gets a
404and a no ad, not an impression. Remove caps and targeting temporarily to measure the raw gap. - Impressions only for counting templates. A redirect counts an impression only when the template has Template impressions record ticked (or the banner is an OpenRTB pop) — see what counts.
- Filtered traffic. Bots and invalid traffic are excluded from standard metrics; pop traffic carries more of both.
- Find the bad sources. Ask the source to append its sub-source ID as a custom parameter
(
&cp.source={source_id}) or as the channel (&ch=…), then group by Channel, or break an Advanced report down by that custom parameter, and compare per source. A per-impression comparison is possible when the source passes its transaction or click ID as a custom parameter and you export the raw Impressions Log.
Symptom: video — many “No ads” or fill rate differs per advertiser
- In an Advanced report, No ads counts every time the ad server answered without an ad and every time a video player fired the Error URL of an ad Epom returned. A third-party VAST tag that turned out empty in the player therefore lands in No ads even though Epom returned an ad for that request.
- Fill Rate in General is per placement: a request is filled when any banner served. Requests cannot be split by advertiser (the request happens before an advertiser is chosen), so there is no per-advertiser Fill Rate in General — see My fill rate is low. For a per-network picture of a VAST setup, compare each banner’s impressions with the requests of a placement that carries only that banner, or use the Advanced report’s no-ad columns.
Symptom: conversions dropped after shortening an attribution window
Shortening an action’s post-click or post-view window (Account → Conversion Actions → action) immediately disqualifies every conversion whose matching click or view is now older than the window — the drop is expected, not data loss. To size it, add the Expired post-click conversions and Expired post-view conversions columns to a General report (they are opt-in — pick Expired windows under Split columns by, or tick them in the report’s Columns settings): each matched-but-out-of-window conversion is recorded there as a zero-revenue diagnostic instead of vanishing. If the expired columns roughly equal the missing conversions, the window change explains the drop; widen the window (or accept the stricter attribution) deliberately. Note the expired diagnostics are excluded from all conversion and revenue totals and never trigger CPA pricing, capping, limits or piggybacks — and conversions recorded before the attribution feature shipped report as Unattributed, not as expired.
Symptom: S2S conversions started expiring after an action setting changed
A server-to-server postback is only measured against an attribution window when it claims a click or a view. Two settings on the action can start such a claim where there was none: Default attribution type (set to Post-click or Post-view, it classifies every postback that declares nothing) and Apply attribution window to server-to-server conversions (ticked, it lets the windows apply to S2S at all). Switching both on turns postbacks that used to count unconditionally into window-checked ones, and the late ones become zero-revenue Expired post-click conversions / Expired post-view conversions rows.
Check, in this order: the action’s Default attribution type, the S2S window checkbox, then the two window values against the partner’s real conversion latency (trials and delayed approvals can be weeks). The Conversions Log’s Attribution Type column shows which arm the conversions moved into. The effect ramps up over days rather than appearing at once, because stored values expanded before release 149 carry no timestamp and keep counting until the partner’s database rotates them out. Reverting the default to Unattributed stops the expiry for postbacks that declare nothing; conversions already recorded as expired stay as diagnostics.
Neither setting takes effect the second you save it. The ad servers read action settings from a cache reloaded on a schedule — every 10 minutes on a standard network — so both the change that started the expiry and the change that stops it land up to one reload later. Judge a test postback only after that.
Related
- Analytics discrepancies — the 60-second check, the cause table and what to send support
- Analytics discrepancies against a partner’s numbers
- Reports that disagree or come back empty
- Pop-under and direct-link placements
- My fill rate is low
- VAST errors and playback
- Conversion actions