> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adxensor.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Traffic Quality & Scoring

> How AdXensor's invalid-traffic shield protects your account, how your site reputation score (0–100) is calculated, and what it unlocks.

Advertisers pay for real humans. AdXensor's job is to make sure that's what they get — and to reward the publishers who deliver it. Two systems do this: the **invalid-traffic (IVT) shield** that filters fraud in real time, and the **reputation score** that grades each of your sites from 0 to 100 and shapes how much your inventory is valued when advertisers plan campaigns.

<Info>
  **Why this is in your interest.** Clean traffic isn't just a policy box to tick — it's the single biggest lever on your earnings. Invalid traffic is never paid, it drags down your reputation, and low reputation means less demand and slower payouts. Protecting quality *is* protecting revenue.
</Info>

## The invalid-traffic (IVT) shield

Every ad event is inspected on **four separate hot paths** — the ad serve, the impression beacon, the click redirect, and the SDK's tracking beacons. Nothing is counted or paid until it clears the shield.

### How traffic is classified

```mermaid theme={null}
flowchart TD
    E[Incoming ad event] --> UA{Known bot<br/>user-agent?}
    UA -->|yes| B[Flag: invalid]
    UA -->|no| IP{Known<br/>data-center / bot IP?}
    IP -->|yes| B
    IP -->|no| V{Abnormal request<br/>flood from source?}
    V -->|yes| B
    V -->|no| OK[Valid — count & pay]
    B --> LOG[(Recorded for your<br/>traffic-quality report)]
```

AdXensor combines three independent signals: a maintained **bot user-agent** library, a **known-bot IP** blocklist, and **flood protection** that catches abnormal request rates from a single source. The signals are layered so that precise detection runs first and the rate-based backstop only catches what slips through.

### What happens to flagged traffic

The shield runs in one of two modes, and in **both** the golden rule holds — flagged traffic is *recorded but never monetized*:

|                          | Recorded for reports | Counted as impression | Advertiser charged | You get paid |
| ------------------------ | :------------------: | :-------------------: | :----------------: | :----------: |
| **Valid traffic**        |       ✅ Reports      |           ✅           |          ✅         |       ✅      |
| **Invalid — log mode**   |       ✅ Reports      |           ❌           |          ❌         |       ❌      |
| **Invalid — block mode** |    ⚠️ Forensic log   |           ❌           |          ❌         |       ❌      |

<Note>
  In **log mode**, invalid traffic is preserved as **"protected inventory"** in your reports — you can see exactly how much was filtered — but it never touches a counter, a charge, or a payout. In strict **block mode**, flagged requests are dropped to a separate forensic log rather than your normal stats. Either way, a click by a suspected bot still safely redirects a possibly-misjudged real user, but nothing is billed or credited.
</Note>

### No double-counting, ever

A single rendered ad can fire more than one beacon (the tracking pixel and the SDK beacon). AdXensor routes both through **shared per-impression guards**, so one render always equals **one counted impression and one charge** — your stats stay in exact lock-step with advertiser spend.

## Your site reputation score (0–100)

Once a day, AdXensor recomputes a **reputation score** for each of your sites from the **last 30 days** of traffic. The score answers: *how much real, healthy, valuable traffic does this site deliver?*

It's built from four inputs:

<CardGroup cols={2}>
  <Card title="Volume" icon="chart-column">
    How many **valid** impressions the site served in 30 days. Higher volume unlocks higher scoring bands.
  </Card>

  <Card title="Healthy CTR" icon="hand-pointer">
    Click-through rate inside the healthy band of **0.5%–6%**. Too low looks dead; too high looks like click fraud.
  </Card>

  <Card title="Invalid rate" icon="bug-slash">
    The share of impressions flagged invalid. It scales your score down — up to **−40 points** as invalid traffic climbs toward 100%.
  </Card>

  <Card title="Ad value (CPM)" icon="coins">
    The average CPM your inventory earns. It lifts only the very top: a high-volume, healthy-CTR site reaches the full **90** only when its 30-day average CPM is at least 300 XOF.
  </Card>
</CardGroup>

### The scoring ladder

The base score is set by 30-day valid-impression volume, with a bonus for keeping CTR inside the healthy band:

| 30-day valid impressions |     Healthy CTR (0.5%–6%)    | Unhealthy CTR |
| ------------------------ | :--------------------------: | :-----------: |
| 0                        |               0              |       0       |
| 1 – 999                  | 10 – 39 (scales with volume) |    10 – 39    |
| 1,000 – 9,999            |            **55**            |       42      |
| 10,000 – 49,999          |            **70**            |       58      |
| 50,000+                  |          **82 – 90**         |       65      |

Then the **invalid-traffic penalty** is applied — up to **−40 points**, proportional to your invalid rate:

| Invalid rate | Score penalty |
| ------------ | ------------- |
| 10%          | −4            |
| 25%          | −10           |
| 50%          | −20           |
| 100%         | −40           |

<Info>
  **Invalid rate** = invalid impressions ÷ (valid + invalid impressions), measured over 30 days. It's an impression-based measure. A clean site (\< 2% invalid) is barely touched; a dirty site can lose nearly half its score.
</Info>

### How your score reads in the dashboard

Your dashboard translates the raw number into plain labels:

<Tabs>
  <Tab title="Reputation label">
    | Score   | Label         |
    | ------- | ------------- |
    | ≥ 80    | **Excellent** |
    | 65 – 79 | **Good**      |
    | 45 – 64 | **Average**   |
    | \< 45   | **Low**       |
  </Tab>

  <Tab title="Traffic-quality label">
    | Invalid rate | Label     |
    | ------------ | --------- |
    | ≤ 2%         | **Clean** |
    | ≤ 10%        | **Good**  |
    | ≤ 25%        | **Watch** |
    | > 25%        | **High**  |
  </Tab>
</Tabs>

## What reputation unlocks

Reputation isn't a vanity metric — it feeds directly into how much you earn and how fast:

<Steps>
  <Step title="More demand for your inventory" icon="magnet">
    When advertisers estimate their reach, a site's reputation **scales** its projected audience and CPM value (a factor of score ÷ 100). A higher-reputation site is valued and surfaced more in that planning, so more demand flows toward it. An unscored site defaults to a neutral 0.5 factor.
  </Step>

  <Step title="A better payout tier" icon="layer-group">
    Your sites' reputations roll up into an account-wide **payout tier** — `new`, `standard`, or `trusted` — which controls your earnings hold and minimum payout. See [Earnings & Payouts](/publishers/how-it-works/earnings).
  </Step>
</Steps>

<Warning>
  Payout tiers use the **worst** invalid rate across *all* your sites, not the average. A single dirty site can cap your whole account's tier — so quality has to hold across every property, not just your best one.
</Warning>

## Impressions vs. views

Two different signals, often confused:

| Signal         | Fired when                                                                                      | Billable?                                                                  |
| -------------- | ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| **Impression** | The ad is rendered and its beacon fires                                                         | ✅ Yes — the paid event for CPM campaigns (CPC campaigns bill on the click) |
| **View**       | The ad meets the IAB viewability standard (≥ 50% on screen for ≥ 1 second), measured by the SDK | ❌ No — a quality signal only                                               |

<Note>
  Viewability is measured **client-side by the SDK** and reported as a separate "view" count. It has no billing impact — it exists so you and advertisers can see how visible your placements are. High viewability is a strong signal of good placement, which correlates with healthy CTR and reputation.
</Note>

<Card title="Next: Earnings & Payouts" icon="wallet" href="/publishers/how-it-works/earnings">
  You've served a valid impression on a reputable site. Here's exactly how that turns into money in your wallet.
</Card>
