Skip to content
AdPixDocsSearch the docsEnglishOpen console

Why was this flagged

Every flag in Fraud Protection has an evidence packet behind it: which signals fired, at what size, and which one decided the tier. AdPix writes a reason only for a condition that actually fired — so the reason list is never boilerplate.

The two places a flag shows up#

Inside Fraud Protection, two tabs take you from a headline number to the evidence:

  • Drill-down starts at the top. You pick a dimension — channel, source, medium or campaign — and AdPix ranks it by flagged sessions. The first row is your main fraud source.
  • Entities is the flat list of every scored slice, with a Top signal column and a severity filter.

Both end in the same place: an entity's evidence drawer. That is where the "why" is written down.

The invalid rate does not include Review rows

The Review tier means AdPix deliberately did not decide and handed the case to a human. Those sessions are counted separately and never enter the invalid rate. A number under In review is not yet a claim about anything.

What an "entity" actually is#

The unit of scoring is not a user and not an IP — it is a traffic slice, built from five dimensions joined with |:

source | medium | channel | campaign | device

So google|cpc|Paid Search|spring-sale|mobile is one slice and the same campaign on desktop is another. The split is deliberate: fraud usually concentrates in one corner of a media buy, not across a whole channel. It is also what makes a flag actionable — you pause a slice, not an entire channel.

Getting to the evidence packet#

1
In the sidebar, open the Fraud protection group, then the Fraud Protection page.
2
Select the Drill-down tab and choose your dimension under Break down by.
3
Click the row with the most flagged sessions. The drawer opens, and under Why this was flagged you get every flagged or in-review slice under that value.
4
Click one of those slices to open the full evidence packet: score, confidence, Detection signals, Detector scores and Network context.

If you would rather start from the complete list, the Entities tab opens the same drawer with one click on the entity ID.

The Detection signals card#

This card is the most important thing on the page. Each line is a condition that actually held against this slice's own data. AdPix does not manufacture reasons to fill space and does not print a reason that played no part in the decision; if a condition did not fire, its line is simply not there. So a one-line list is not a sign of thin evidence — it is a sign of a clean signature.

Signals are printed in English

The signal strings are produced by the scoring engine and are shown the same way in both languages. The table below is what each one means.

The signal dictionary#

The signal you see What it means When it fires
fingerprint shared across many businesses one browser fingerprint has been seen across several independent businesses on the AdPix network — the classic bot-ring signature a fingerprint shared across 5 or more organisations
datacenter/proxy traffic most sessions came from data centres, proxies or known bot networks more than half of the slice's sessions
click flooding — repeated hits from one address within minutes, no interaction a burst of sessions from one address block inside one clock hour, with nobody interacting 8 or more sessions from one /24 in one hour, with an interaction rate under 10%
one device rotating across many networks (IP-block evasion) one device changing address to escape IP blocking one fingerprint across 8 or more /24 blocks, subject to the guards below
uniform dwell (human-variance collapse) every session lasted almost exactly as long as every other; people do not behave that way dwell coefficient of variation under 0.1 across at least 20 sessions
near-total bounce almost no session went past the landing page bounce rate above 80%
sub-3s sessions average dwell under three seconds always a corroborating signal, never the deciding one
paid ad clicks — advertiser budget is being consumed the slice arrives mostly on paid clicks, so the flooding is eating your budget directly half or more of sessions carry an ad click ID
anomalous behavior profile no structural signature was found; the slice is only a statistical outlier only alongside a weak corroborating behavioural signal
too few sessions to confirm — needs human review the evidence may be right, but the volume cannot support a definitive claim under 3 sessions, on any path
converting but carries structural fraud signals — needs human review the slice both converts and carries a structural fraud signature; a human decides always routes to Review, never further

The newer signals, in marketing terms#

Four of these measure exactly what a real person does and a bot does not.

Click flooding (burst_max). This counts the busiest single combination of one address block and one clock hour. Eight sessions from one block in an hour proves nothing on its own — an office on a single connection looks the same. What separates a click farm from a corporate network is the interaction guard: the people in that office scroll, click and fill in forms. A burst plus an interaction rate under 10% is not an office.

Proxy rotation (ips_per_fp). When an ad platform or your firewall starts blocking IPs, the attacker's answer is to rotate addresses. This signal tracks one device fingerprint across address blocks. It carries three guards so it cannot catch a real user: the fingerprint has to dominate the slice (a common fingerprint naturally appears from hundreds of networks), the interaction rate has to be under 20%, and mobile traffic must not dominate — under half the sessions on a carrier network, because carrier CGNAT legitimately moves a real handset between address blocks.

Interaction rate (interaction_rate). The share of sessions with at least one genuine interaction event: click, scroll, form start or submit, video start, file download, on-site search. It is deliberately stricter than the engaged-session definition. A bot that opens two pages clears the GA4 engaged bar and still never scrolls.

Paid click rate (paid_click_rate). The share of sessions that arrived with an ad click ID. This signal discovers nothing; it sets priority. Invalid organic traffic is annoying, invalid paid traffic costs money.

Mobile share (mobile_share). The share of sessions on a mobile-carrier network. It never flags anything — it only protects, and it is what keeps millions of real users on carrier networks out of the IP-rotation signature.

Why something that looks suspicious was not flagged#

If you are looking at a slice you personally distrust that came back Clean or Review, one of these guards stopped it. All of them are deliberate and all of them favour precision.

Guard Effect
Conversion a slice that converts — a purchase, one of the property's registered key events, revenue, or a source-level conversion rate above 2% — is treated as real and is not flagged
Conversion plus a structural signal conversion never overrides a structural signature (otherwise a ring would whitelist itself), but it is never auto-flagged either; the result is Review
Engaged sessions a slice where at least half the sessions are engaged is never flagged on model opinion alone
Volume under 3 sessions nothing exceeds Review; a fingerprint ring needs at least 5 sessions to reach Confirmed
Direct traffic Direct is the unattributed bucket; only a hard structural signal may flag it
Referral exclusions payment gateways and hosts you excluded yourself, plus your own domain and brand, are treated as clean from the start

Score, confidence and detector scores#

The three numbers at the top of the drawer say three different things.

  • Fraud score is this slice's relative position in the distribution of your own traffic, not a probability. In any dataset — including a perfectly healthy one — somebody is in the top percentile. That is exactly why a high score alone is never sufficient.
  • Confidence comes from how many detectors agreed and from whether the final tier is a positive claim at all.
  • Detector scores breaks out the three independent members of the ensemble: ecod, copod and iforest. When enough human labels exist, a pu member is added. All three high means three independent methods reached the same conclusion; only one high means a weak signature.

Below them, Network context says whether this entity appears in a ring touching several independent businesses. Only counts are shown here — no other organisation's identifiers are ever disclosed.

After you have read the evidence#

Three sensible moves remain:

  • You agree. Pause or cap the slice in the ad platform, and take the relevant networks to the blocklist exports.
  • You want to build a financial case. Use Download dispute evidence to export the entity summary, signals, per-detector scores and network context as a CSV.
  • You disagree. Use Report false positive. Your explanation is stored as a label and enters the retraining loop; Sensitivity and false positives covers exactly what happens next.

If the flag is on a network or ASN rather than a traffic slice, the path is different — Networks and ASN is the other side of this.

Frequently asked questions#

Why do two sources with almost the same score get different severities?

Because the score alone does not decide severity. The decision runs down a ladder — conversion first, then structural signatures, then session volume, and the model's opinion last. A slice that converts, or whose sessions are engaged, is never auto-flagged even at a high score; it stops at Review.

Why does the signal list have only one line?

Because only one condition fired. AdPix does not generate filler text for a flag; every line you see was evaluated against this slice's own data and held true. One signal is enough, provided it is a structural one and the volume is there.

What does `anomalous behavior profile` mean?

It means no specific structural signature was found and the slice is simply statistically outside the distribution of the rest of your traffic. It is the weakest form of evidence — on its own it never reaches Confirmed, and on engaged or low-volume traffic it flags nothing at all.

Can I send the evidence to the ad network?

Yes. The same evidence drawer has a Download dispute evidence button that produces a CSV with the entity, severity, score, model version, signals, per-detector scores and network context. For a refund claim, the sealed network-level evidence is the stronger instrument.

Build with the APIUnderstand where revenue comes from.
Was this page helpful?