How Skrypte calculates viewability.
2 July 2026
"Ad views" is the first number in every publisher's dashboard, and it's tempting to assume it just means "an ad tag fired." It doesn't. An impression has to pass a couple of checks before it's counted as an ad view, and those checks are also what your revenue is calculated from.
Was it actually visible
Every impression is checked against whether the ad element actually entered the visitor's viewport. An ad that loaded off-screen, below a fold the visitor never scrolled to, doesn't get counted as a view just because the request was made. This matters because ad requests and ad views are not the same thing: a page can generate plenty of the former without a person ever seeing the latter.
How long it stayed visible
Alongside whether the ad was visible, we track how long it stayed on screen before the visitor scrolled past it or navigated away. An ad that flashes into view for a fraction of a second as someone scrolls quickly down a page is a different event from one that sat in view while someone actually read the surrounding content. Both facts feed into whether the impression counts.
Was it a person
Separately, every impression carries a score used to flag traffic that looks automated rather than human: patterns that don't match how a person actually browses a page. Impressions flagged this way are filtered out before they're counted or billed. This isn't a fraud report generated after the fact and reconciled later; it happens before the impression is ever aggregated into what shows up in your dashboard.
One number, used everywhere
There's no separate, cleaner pipeline used only for the numbers publishers see, and a different one used to calculate what advertisers are billed. The viewability rate in your dashboard, the ad views total next to it, and the revenue figure are all built from the same filtered, per-impression data. It's the same events, checked the same way, every time.