Browse the help center

Reports that disagree or come back empty

The six checks for an empty report, and why the dashboard and a report, two reports over the same dates, yesterday's numbers or a colleague's view of the same report disagree — periods, pipelines, caching, freshness, shares and column permissions.

Reference network manager publisher advertiser Account → Analytics

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 Epom disagrees with itself: a report with no rows, the dashboard against a report, two reports over the same dates, numbers that moved after the fact, and a colleague who sees different figures or columns in the same report. Gaps against a partner’s own numbers are on Analytics discrepancies against a partner’s numbers; what each counter counts and when is on What each analytics counter counts and when.

Symptom: my report is empty

A report with no rows (or a single row of zeros) has one decisive cause far more often than “no data was lost”. Check in this order — the first one that applies is usually the answer:

  1. The dates. A period that starts after today has nothing yet. Dates are counted in the report’s time zone, so “today” early in the morning can still be empty.
  2. Permissions. The report type (General / Advanced), the time breakdown (Hour, Day…), each grouping and each filter has its own reporting permission; the console simply does not offer what your role lacks, and over the API the report is refused. A role without the Impressions column, or without any column set (base / publisher / advertiser), gets rows with no delivery figures. A role on the publisher- or advertiser-side column set reads those figures only — a period where they were never filled reads as zero for it while the network’s own report shows traffic.
  3. How far back the data goes. Hourly General statistics are kept for a shorter time than daily ones — an old period broken down by Hour is empty while the same days by Day are not. The Advanced report keeps its event logs for the number of days the network is configured for; older periods are empty there but not in General.
  4. The filtered entities. An advertiser, campaign, banner, site, zone or placement id that does not exist or is not shared with you filters everything out; so does one created after the period. Filters also have to agree with each other: a campaign of another advertiser, a banner of another campaign or a placement of another site next to each other match no row.
  5. Advanced only — the data itself. The Advanced report sees an hour only after its event logs have loaded, so today (and, when loading lags, yesterday) can be empty while General already shows delivery. And a filter on a request detail that the network’s compacted Advanced data does not keep (device format, connection type, language, incognito on many networks) matches nothing.
  6. The filters together. If none of the above applies, run the General report for the same dates without filters: empty means nothing was delivered at all in the period (see My ad is not serving); if it has impressions, add the filters back one at a time — the one that empties the report is the one to question.

Ask the assistant: “why is my report empty?” with the same dates and filters — its report check goes through this list and, when the setup explains nothing, runs the General report without filters and then without one filter at a time (up to five analytics requests, counted against your daily limit) to name the filter that leaves nothing. Over the API: GET /rest-api/analytics/report-check (it never runs the report itself).

Symptom: dashboard and a report disagree

  • Different periods. On the publisher/advertiser dashboards every block reports the window in the header’s period control, and each card states it on a pill — read that pill first, then check the report’s own date range covers the same days. A “Today” dashboard still moves while a report you ran an hour ago does not.
  • Different report definitions. Table/chart widgets on the main dashboard render a saved report each — open the widget’s settings to see which report and period it uses; the dashboard’s global period override can silently reframe every widget.
  • Different source. A table or chart widget runs a General, Advanced, Header Bidding or Targeting Cookie report. Comparing a General widget against an Advanced report mixes two pipelines — see the next symptom.

Symptom: two reports over the same dates disagree

  • General vs Advanced/logs read different data. General reads aggregated statistics and Advanced and the log reports read the event logs; the two are loaded on separate schedules (every hour by default, and Epom support or your account manager can shorten them). For recent hours the two can therefore disagree, in either direction.
  • Advanced/log results are cached per query. Rerunning the same query returns the cached result until new data has loaded — two runs minutes apart should be identical, and a run after the next hourly load can differ. See Report types for freshness per type.
  • “Today” is always provisional in Advanced and log reports; the last minutes-to-hours of the day arrive with the next hourly loads. For final numbers, report on yesterday or earlier.
  • Group-by dimensions can drop rows. Advanced reports may exclude dimensions that are not carried by the compacted analytics data — a filter on such a dimension can legally return zero rows while the totals report shows traffic. If a filtered Advanced report returns nothing, retry without the exotic dimension before concluding data loss.

Symptom: numbers changed after the fact

  • Late-arriving data. All report types backfill the recent past; small upward revisions of yesterday are normal until all logs land.

Symptom: a colleague sees different numbers / columns in the same report

  • Sharing scope. Reports only include entities you can view. A user with fewer shares sees smaller totals — same report, different data slice.
  • Column permissions. Column families (base / publisher / advertiser) and individual columns (revenue, profit, eCPM…) are permission-gated; group-by and filter options are too. The report is not “missing data” — your role hides those columns. Compare roles, not reports.
  • Different report type or view. The analytics view level (simple/extended) changes available columns in Advanced reports.

Related pages

Please disable Adblock
Are you using adblock? Disable it and reload the page to proceed to the destination page.

A registration has already been submitted from this page. Please try again in 10 minutes.