Compliance with international media standards

Adfox uses industry standard methods and technologies approved by the international media standards. According to the international media standards, the key performance indicators for placements are viewable impressions and clicks.

Information about ad viewability is important for both advertisers and publishers: it makes it easier for advertisers to evaluate the effectiveness of their ads on a particular placement, while publishers can identify site areas with low ad viewability and optimize them.

Important. In Adfox, international media standards-based viewability accounting technology applies if the following conditions are met:
  • Your campaign doesn't use external monetization.
  • In the campaign settings, you've specified the impression count method of Impression (IMS), Viewable Impression (IMS), or Viewable impression, Yandex (IMS).
  • Banners are created using templates with “IMS”  in their names.
  • For banner ads, ad tags with the context.js library are used.

Counting impressions

Basic principles of counting ad impressions in Adfox:

  • A viewable impression only counts if it matches the specified viewability parameters.
  • The delivery of an ad and impression tracking link is initiated solely by the user. The ad content downloads when the user sends an HTTP request from the browser.
  • Impressions count after the ad content loads on the browser page.

The Rules of participation in Yandex Advertising Network allow auto-refreshing no more than once every 30 seconds.

Adfox tracks that partners follow this guideline by using a special request parameter, adf_refresh. Site traffic is checked for auto-refresh criteria once per quarter. If a site abuses auto-refresh, we take administrative action against it.


Ads shown on pre-fetched pages aren't counted.

Preventing pre-fetch on the partner site:

  1. The ad content is called using a link that is called only after processing special JS code.

  2. Configuring and monitoring antifraud rules.

Caching control

To prevent caching in headers, special headers are used in requests and responses: cache-control: no-cache, pragma: no-cache.

A special mechanism is used to prevent caching of the link that is generated on ad click. The link is created using dynamic parameters: placement ID, banner type ID, banner ID, and others. Then, for security reasons, all the link parameters are hashed.

Counting clicks

The diagram below shows the click counting workflow:

The user initiates a click on an ad banner containing a tracking link in the format[crypted-data]. The [crypted-data] segment contains the encoded data allowing you to identify the banner associated with the link and site originating the click.

The link data is sent to the backend system that counts a banner click and defines the link for the redirect to the advertiser website. The user is redirected to the advertiser website specified in the campaign settings.

The click count accuracy is provided by the following:
  • The backend counts clicks before redirecting the user to the advertiser website.

  • A click made outside of the ad banner area is not recorded and not included in the click count.
Duplicate clicks

If there were several clicks during the ad display, only one click is counted in the statistics.

Click validation

A common mechanism for historical data handling is used to validate clicks. If more than 24 hours has passed since the last user action, all the technical filter data is deleted from the history.

The mechanism validates clicks as follows: if more than 24 hours have passed between the ad impression and ad click, the click is considered invalid and is not counted.

If no impressions that passed antifraud are found for the validated clicks, the clicks do not count.

Clicks statistics
In statistic reports, the number of clicks is displayed in the Clicks, IMS column. This indicator includes filtering invalid traffic (SIVT and GIVT) by special fraud protection mechanisms. To view the count of invalid clicks, see the report on ad campaigns with “IMS” in the columns Filtered clicks (IMS), GIVT/SIVT.


The following viewability criteria apply to banner ads:

Impression count method Banner ads Large banner ads

(> 970 × 250 px)

Viewable impression, Yandex (IMS) At least 50% of the banner area is in the active browser window for at least 2 seconds. At least 30% of the banner area is in the active browser window for at least 2 seconds.
Viewable impression (IMS) At least 50% of the banner area is in the active browser window for at least 1 second. At least 30% of the banner area is in the active browser window for at least 1 second.

If less than the mentioned area of the banner area is viewable in the active browser window, but the user clicks on the ad and the click is counted by the system, this will also count as a viewable impression. This rule works for banner ads both on websites and in mobile apps.

Adfox performs viewability measurement based on the ad container. The ad for placement is selected according to the container dimensions, that is, the container and ad dimensions are always the same.

Viewability is checked during ad impression tracking.

After the banner loads on the page, the following events are tracked for statistics:
  • Rendering the banner on the page.
  • Banner viewability.

If the banner is rendered on the page, but no viewability data was saved to the log, the impression is considered non-viewable.

Viewable, non-viewable and undetermined impressions for statistics are counted after events are recorded in the log and processed by the anti-fraud system.

Viewability criteria and check procedure for banner ads

Ad viewability is checked based on the following criteria:

  • The browser tab must be active.
  • The ad must be in the viewport (the viewport is the viewable area of the web page that the user can see without scrolling) for at least 2 seconds according to the Yandex standard and at least 1 second according to the international media standards. More than 30% of the area for large blocks (a block is treated as large if its area is greater than 242 500 pixels (equivalent to 970 × 250 px)) and more than 50% of the area for regular blocks (a block is treated as regular if its area is less than 242 500 pixels (equivalent to 970 × 250 px)) must be inside the viewport.
  • The midpoint must not be overlaid.

The viewability criteria are checked in the following order:

  1. Checking the active tab.
  2. Checking the viewport intersection using IntersectionObserver. If the browser doesn't support IntersectionObserver, the position of the element on the page is calculated, taking into account the chain of parent frames (it works if the viewability measurement code is in a friendly-iframe).
  3. Midpoint overlay.

Ad impressions on pre-fetched pages are not counted.

Processing of cross-domain iframes

To measure viewability, we use IntersectionObserver (including when cross-domain iframes are used to call ads).

Caching control

To prevent caching, the same methods are used as for impressions.

Tracking multiple ad display

Only one ad can correspond to each unique display in Adfox.

Viewability metrics

For viewability accounting, the following metrics are used in Adfox:

  • Viewable ad impressions, Yandex (IMS): Impressions meeting the Yandex viewability criteria: 50% (30% for ads with an area of at least 242500 pixels, which is the equivalent of 970 × 250 px) of the banner area is in the active browser window for at least 2 seconds, with invalid traffic filtered out.
  • Impressions (IMS): Events that occur when ad rendering starts, with invalid traffic filtered out.
  • Viewable ad impressions (IMS): Ad impressions in the viewable area of the window in the active browser tab, counted according to the international media standards criteria: the minimum percentage of pixels in the viewable area for the duration of being in the viewable browser area, with invalid traffic filtered out.
    • Display web/in-app: an impression is viewable when 50% of the ad’s pixels is viewable during 1 continuous second.
    • Large ads: ads larger than 242 500 pixels (equivalent to 970 × 250мpx) are considered as viewable when 30% of the pixels are viewable during 1 continuous second.
    • Video web/in-app: a video impression is viewable when 50% of the video ad’s pixels is viewable during 2 continuous seconds of video playback.
  • Viewable rate (IMS): Percentage of impressions in the viewable area of the browser window counted according to the international media standards criteria, relative to the measurable impressions, with invalid traffic filtered out. Calculated in the following way:

  • Measured Rate (IMS): Percentage of impressions used to determine viewability from the total number of Impressions (IMS), with invalid traffic filtered out. Calculated in the following way:

  • Non-viewable ad impressions (IMS): Impressions for which the rendering on the page is recorded, but viewability according to the international media standards criteria isn't verified, with invalid traffic filtered out.
  • Undetermined ad impressions (IMS): Impressions for which the viewability status can't be determined, with invalid traffic filtered out.

These metrics do not include invalid impressions (SIVT and GIVT) and viewable ad impressions, filtered out by special fraud protection mechanisms.

Mobile advertising

Processes for delivering content, methods for counting impressions and clicks on mobile devices, and the procedures and policies used for auto-refresh and prefetch are similar to those used for websites.

In-app advertising

Yandex ads are served in apps using the MobileAds SDK, a set of libraries to adapt Yandex Advertising Network (Yandex Advertising Network) ads for mobile apps. Read more about the MobileAds SDK in the documentation.

The same principles of viewability apply to both in-app advertising and advertising on websites:

  • Viewability is measured according to the international media standards: 50% of the banner area must be viewable in the active browser window for 1 continuous second.
  • For video ads, a viewable impression is counted if at least 50% of the player is viewable on the user's screen for at least 2 seconds.

For banner, interstitial, and native advertising, viewability is also measured by click: if less than 50% of the banner area is viewable in the active browser window, but the user clicks on the ad and the click is counted by the system, this will also count as a viewable impression.

Flow for confirming ad viewability:

  1. The ad loads.
  2. The ad is added to the screen or called in the show method. At this point, a rendering event is sent.
  3. The SDK starts checking ad viewability. The following factors are checked in turn:
    1. Ad viewability percentage (Visibility Percent);
    2. The interval when the ad must continuously be in the viewability zone (Shownotice Delay).
  4. A timer starts, which checks the Visibility Percent every 0.2 seconds. The continuous viewing time starts to be counted.
  5. For continuous viewability during the Shownotice Delay, the timer stops, and the SDK sends a request via the viewability confirmation link. Otherwise, the continuous viewing time is reset and starts again.

    If no confirmation is sent within 60 seconds because of a slow connection, the viewable impression isn't counted.

The SDK gets information about the properties of the device and platform from the system API that's provided by iOS and Android: the ad ID, the location, if access is allowed in the app and SDK, and the device screen properties.

Restrictions for different OS versions

When an ad is requested, the platform version is passed. Depending on the platform, there are various restrictions:

The minimum supported version is Android 2.3.3. Video ads are only selected for devices with Android 5.0 and higher.

Checking the app runtime status

Ad viewability is checked and impressions are counted only if the following criteria are met:

  • The app is active, meaning the device screen is unlocked.
  • The app is not running in the background.
  • The ad is shown in the active window of the app.

Impressions are also counted if the app was launched on an emulator or simulator and the above criteria were met.

Auto-refresh, prefetch

There are no external methods for refreshing blocks. The procedures and policies for auto-refresh and pre-fetch are the same as on websites.

Fraud protection

To remove invalid traffic (IVT), a log marked by the antifraud system is used. The data that passed the antifraud check is used for statistics.

Main sources of invalid traffic detection:
  • Monitoring system.
  • Complaints from advertisers and site owners.
  • Regular analysis of IVT generation service market.
  • Searching for patterns.
  • Extending the list of known IVT types.

Advertising events initiated by Yandex employees from the internal network are not counted in statistics.

The ad antifraud system protects Adfox from general and sophisticated IVT. To filter these kinds of invalid traffic, we use the following methods:

General (GIVT — General Invalid Traffic)
  • Technical filtering.
  • Internal traffic filtering. This kind of filtering is done using a common list of IP address ranges (IP ranges of Yandex data centers and IP ranges of the Yandex internal user networks).
  • Filtering of primitive bots. This kind of filtering is done through User-Agent validation based on lists, IP addresses, link signature, user cookie, and referer.
Sophisticated (SIVT — Sophisticated Invalid Traffic)
  • Heuristic rules.
  • Machine learning-based rules.
  • Machine learning models.
  • Clustering, and other methods.

The ad antifraud system actively shares statistics with other Yandex antifraud systems and reuses the data.

Identification of new IVT types
The following controls are used to identify new IVT types:
  • Monitoring system tracks traffic deviations.
  • Various methods for clustering traffic and sites.
  • Advertiser complaint analytics.
  • Signals received from related antifraud systems.
IVT detection based on lists or parameters

The system uses the tables that list the ranges of IP addresses generating a large amount of fraudulent traffic. You can use the options in order to:

  • Configure forwarding of events from such addresses to a separate log not counted anywhere.
  • You can use a specific flag for events from such addresses. Based on this you can forward them to your main antifraud system, which will mark them as fraudulent.

In addition, the system uses a table of regular expressions to detect fraudulent User Agents. The User Agent must match at least one regular expression from the allowed expression list and mismatch every expression in the fraudulent User Agent expression list. You can use special flags to set up fraudulent event forwarding to a separate log. Such events will not be processed in any way.

Fake viewable impressions

Anti-fraud rules and tools apply to both impressions and viewable impressions.

Filtered impressions, viewable impressions and clicks are removed from all statistics reports. You can view statistics on filtered (invalid) impressions, viewable impressions, and clicks in the report on ad campaigns with “IMS”.

If an advertiser believes that there is unfiltered fraud in his statistics, they can contact Yandex via the feedback form. The request is investigated, and if suspicions are confirmed, filtered impressions, viewable impressions and clicks are removed from all statistics reports.

Contact support