Read the Traffic Quality report
Find the placements whose traffic is invalid — one figure per placement per day, what was paid for it, an Act / Watch / OK status, the reasons in plain words, a Details panel and a PDF report with AI analyst notes — and know what each status asks of you.
Traffic Quality gives each placement one figure per day — the share of its impressions that are invalid — with what was paid for them, a status that says whether to act, and the reasons in plain words. It is evidence, not enforcement: nothing in ad serving reads the status, so a placement marked Act keeps serving until you pause it, unlink it, add a Traffic Risk Score rule or talk to the publisher. How the figure is built: Invalid traffic (IVT) and how Epom flags it.
Example. Yesterday the Sports Daily › sidebar › 300×250 placement received 41,000 impressions; 34 % of them carry a strong invalid signal (likely 31 %–37 %, High confidence), far above the 10 % Act line for web placements, so the row reads Act. Paid for invalid says $41.20 of the day’s $132.80 gross went to invalid impressions; Main reasons are Counted twice 19 %, Data-centre servers 11 % and Declared bots and crawlers 6 %. What to do suggests setting Impression deduplication to Enforce and asking the publisher why the pixel fires twice.
Typical scenarios
| You want | Do | Where |
|---|---|---|
| See which placements need attention today | Open the page: the Status filter is on Act + Watch and the list comes worst first | Account → Traffic Quality |
| Know whether a publisher’s 34 % is unusual | Read network median on the row and Your network today in Details | The row; Details |
| Decide whether a placement’s bad day is a trend | Read the arrow on the row (up from 14 %) and Last 7 days in Details | The row; Details |
| Get something you can send the publisher | Generate report on the row, then Download PDF: page one is the verdict, the analyst notes end with a neutral message for the publisher | The Report column |
| Cut what you pay for repeats on every placement | Set Impression deduplication to Enforce | Validation settings |
| Check a week that looks clean after the publisher said they fixed it | Pick each Date; a scored day keeps its figures | The Date filter |
Step by step
Traffic Quality is computed once a day, for yesterday; the page reads what that run saved. The walk-through of the screen and of the report are on two pages:
- Open Account → Traffic Quality, read the six summary cards, set the Date and Status filters and read the rows, worst first — Read the Traffic Quality cards, rows and Details.
- Open Details on a placement for the whole picture of the placement-day: confidence, likely range, the Suspicious / Routine bots / Counted twice split, the facts, Why and What to do — the same page, step 5.
- For evidence to send the publisher, generate the PDF report on the row and, once a key and allowance are at hand, add the analyst notes — Generate the Traffic Quality PDF report.
- To fill a gap, ask Epom support or your account manager to run a backfill. It covers only recent days that have no Traffic Quality data at all; it cannot rescan a date you choose.
Caveats and exceptions
- Evidence, not enforcement. No part of ad serving reads the status, so a placement marked Act keeps serving exactly as before. Acting on it — pausing or unlinking the placement, adding a Traffic Risk Score rule, talking to the publisher — is a manual step.
- One day at a time, and only placements with enough traffic. Traffic Quality is computed once a day, for yesterday, and later retries fill days that were missed. A quiet placement is never judged and never appears.
- The invalid share is taken over everything the placement sent, refused impressions included — what a publisher sends does not change when the network switches a check from Monitor to Enforce. Paid for invalid counts only what was billed, so enforcing a check lowers the money but not the share, and Refused before counting grows instead.
- A repeat counts once. The copies of one ad view (same ad request and creative) are grouped: one clean copy is the original, and every other copy is invalid — in Counted twice when it carries no other strong signal, in Suspicious or Routine bots when it does. Repeats impression deduplication refused are included. The Counted twice reason under Why counts every repeat, whatever else it carries, so it can be larger than the Counted twice part of the split.
- A day that is scored again refreshes its rows — except rows that already have a PDF report, which keep the numbers the report was built from. A backfill only ever scores days with no scores at all, though, so in practice a day that already has scores is not rescanned.
- The report’s own caveats — a report made without notes, and generation that gives up silently — are on Generate the Traffic Quality PDF report.
- Reconciling with the Advanced report. Run the report for the same placement and the same day in the time zone the ad server’s logs are cut in (the server’s own): a report in another time zone starts its day at a different hour. In Details, Impressions under All signals then matches the report’s Impressions, Refused before counting its Rejected impressions, Counted the difference, and the gross after of in Paid for invalid traffic its Gross. Two cases still differ: where the network’s reports leave out events not matched to an ad request, Traffic Quality keeps judging them, so its Impressions is larger by that much (Counted and Refused before counting still match); and where the server is set not to store refused events at all, nothing is refused in either place.
- The legacy page opens without the grants. A role without both Traffic Quality grants can still open the legacy Traffic Quality page by its address. It shows no figures and No placements match this date and status — the data request is refused silently. An empty grid there is not evidence of clean traffic; check the role first.
- Roles. Network managers and administrators who switch into a network user see the tab with both permissions. Rows of placements on sites your role has no view access to are left out of both the cards and the grid.
Not working?
Traffic Quality is computed once a day, for yesterday, and the page only reads what that run saved. Zeros or an empty grid mean one of:
| Symptom | Check | Where |
|---|---|---|
| Every day is empty | The feature is not switched on for your network — it is a server-side setting, off by default. | Epom support or your account manager |
| Today, or yesterday early in the day, is empty | Today has no data by design; yesterday’s appears only after the nightly run. Pick an earlier Scan date. | The Date filter |
| Cards show numbers above an empty grid | Every placement was OK or Not enough data; the grid shows only Act + Watch by default. Tick the other two statuses. That is the good outcome, not a broken page. | The Status filter |
| A placement you expect is missing | Its site is not visible to your role, or the placement had too little traffic that day to be judged — a quiet placement never appears. | The site’s shares; the placement’s traffic |
| Checked by IP screening is 0 % on every placement | The risk-scoring service is not switched on for the network. The reasons that come from IP screening never fire; everything else is computed without it. | Epom support or your account manager |
| The Invalid traffic card shows a dash | The day was scored before release 155 and has no exact share; its rows show the old estimate (≈ 37.6% (estimate)). | The Date filter |
| The legacy page shows No placements match this date and status | Your role lacks one of the two Traffic Quality grants; the data request was refused silently. | Admin → Users & access → User roles & permissions |
| A day’s numbers changed after a backfill, but one row did not | Rows with a PDF report keep the numbers the report was built from. | The Report column |
| Generate report never turns ready, or the report has no analyst notes | See the report page. | Generate the Traffic Quality PDF report |
Reference
Traffic Quality statuses
Act is decided on the day; OK and Watch on the last 7 days. A bad day reaches Act at once, while the choice between OK and Watch is made on the placement’s invalid share over the seven days before the day — the Last 7 days figure in Details — so one noisy day does not flip a placement from OK to Watch and back. The day’s own share is decided on the low end of its likely range, not on the figure itself, so a placement with few people behind its impressions has to be clearly over the Act line to reach it. A placement without such a week — a new one, or one whose earlier days were scored before release 155 — is judged on the day alone, the same way.
| Status | When | What it asks of you |
|---|---|---|
| Act (red) | The day’s whole likely range is at or above the Act line for the placement’s format, and confidence is not Low | Worth acting on now. The nightly run prepares the deep analysis only for these placements; it never writes a report — that is made when someone asks for it. |
| Watch (amber) | Not Act, and over the last 7 days the invalid share is at or above the Watch line, or suspicious traffic alone is at least 5% of the impressions — or the day itself is over the Act line with Low confidence, whatever the week | Keep an eye on it; act if it persists. A Low confidence day over the Act line stops here: a clean week never turns it OK. |
| OK (green) | Not Act, the day itself is not over the Act line, and over the last 7 days the invalid share is below the Watch line | Nothing. |
| Not enough data (grey) | Too few people stand behind the day’s impressions to judge it, and the last 7 days do not hold enough either | Judge the placement over several days. A small day with a week of enough data behind it gets OK or Watch from the week instead. |
So a placement can read Watch on a clean day after a bad week, or OK on a bad day that is still under the Act line: the status says how it has been doing, the share says how the day went.
The lines depend on the placement’s format:
| Lines for | Placement types | Watch from | Act from |
|---|---|---|---|
| Web and display | Site, Mobile Site, Non-standard, Native, Click-through and Email placements | 3% | 10% |
| In-app | Application placements | 5% | 10% |
| Video | Video placements | 8% | 15% |
These lines are provisional: they start at the invalid-traffic bands the IP screening service publishes for each channel and may move once they are calibrated on Epom’s own traffic. Details always shows the lines that applied to the placement.
A day scored before release 155 has no exact share. Its status is read from the level it was given then — Clean as OK, Suspicious as Watch, Fraudulent and Critical as Act — and the page shows the old estimate as ≈ 37.6% (estimate), with the note Scored before release 155. Paid for invalid on such a day is the old estimate too, and it has no reasons, actions, likely range or split. The Critical level (called Blocked before release 153) is retired.
Traffic Quality — what to do
What to do in Details and on page one of the PDF is a fixed list, not AI text, so every user sees the same advice in their own language. It is shown on Watch and Act placements, for the largest reasons first, at most three:
| Action | Shown for |
|---|---|
| Set Impression deduplication to Enforce (Admin → Validation settings) so repeats stop being paid | Counted twice |
| Ask the publisher why the impression pixel fires more than once: a doubled tag, a cached page or a script | Counted twice |
| Set Impression signature check to Enforce so tampered pixels are refused | Tampered or unsigned impression pixels |
| Ask the publisher whether their tag or a script rewrites or strips the impression pixel | Tampered or unsigned impression pixels |
| Filter bots and data-centre traffic on this placement with Traffic Risk Score targeting | Declared bots and crawlers, Automated browsers, Data-centre servers, Bots (IP screening), Bots detected by the ad server |
| Keep IP blacklist check and Impressions validation in Enforce: refused addresses cost nothing | Addresses on your blocklist, Addresses the ad server auto-banned |
| Review where this supply comes from with the publisher | Bots detected by the ad server, Known fraud (IP screening) |
| Set Clicks validation to Enforce so invalid clicks stay out of your reports | Invalid clicks at 10% or more of at least 50 clicks — on any status; on Watch and Act it takes the last of the three places |
What each reason means: Traffic Quality reasons. The checks named above are set on Validation settings.
Permissions
| Permission | Lets you |
|---|---|
| Traffic Quality Tab Visible + Traffic Quality Reports (both) | See the tab, the cards, the grid, Details, and generate or download reports |
| View access on the site | Have that site’s placements in the cards and the grid |
| An AI key (own / network / platform with the plan’s AI switched on) + monthly AI allowance | Have the PDF’s analyst notes written, and Add AI notes |
Over the API
The same verdicts, a placement’s deep analysis and its report (the AI findings as text, and the
PDF) are available over the
Traffic Quality endpoints of the REST API, and to
an AI assistant through the MCP tools traffic_quality and
traffic_quality_analyze. Over the API the deep analysis can also be run on its own, without the
AI findings and the PDF — quicker when the assistant draws its own conclusions.
traffic_quality_analyze with report: true writes the analyst notes onto a report that has none.