User counting

How eyeo protects privacy while counting users.

To improve eyeo's understanding of cross-platform usage and versioning, the eyeo Browser Ad-Filtering Solution collects some user data.

Because one of eyeo's driving principles is to respect user privacy, no requests sent to data collection services contain any personally identifiable information (PII).

This page contains information on how and why eyeo implements user counting in its ad-filtering solutions.

Why eyeo count users

eyeo count users who have both ad-filtering and Acceptable Ads scheme enabled, as well as those who only have ad-filtering enabled. eyeo does this for the following reasons:

  • Understanding user distribution across Chromium and Solution versions helps eyeo decide which versions to maintain and which to deprecate.

  • Understanding user distribution across operating systems and platforms helps eyeo prioritize quality assurance and automation efforts on the most popular platforms and OS versions.

  • Understanding how users perceive Acceptable Ads, which eyeo determines from user opt-out rate. eyeo wants to ensure that ads that users see don't negatively impact user experience.

  • Establishing the basis of payouts to partners who monetize their Acceptable Ads users.

How user counting works

A ping request is sent automatically by the Solution to eyeo's dedicated service at least twice per day, if the browser is in use (including in the background) and ad-filtering is enabled. These contain no personally identifiable information.

Ping request payload

To track active clients while maintaining user privacy, the server combines the values of ping timestamps with a randomly-generated tag. Dates are truncated to further protect privacy.

The following table outlines the parameters sent with the ping:

ParameterTypeDescription

nonce

string

Number only used once, one of the algorithms that might be used to generate nonce is UUID4. This helps to anonymously distinguish between several ping requests with the same values for the rest of the parameters.

addon_name

string

Identifier of the Solution. Example: eyeo-chromium-sdk

addon_version

string

Version of the Solution, corresponding to addon_name. Example: 2.0.0

application

string

Name of the application. Used for attributing users to a specific product. Example: My great browser

application_version

string

Current version of the application. Often follows the underlying Chromium version. Example: 86.0.4240.183

first_ping

string

Timestamp of the first ping sent by the client and acknowledged by the server (as measured by the server), extracted from the first 2xx response body. Example: 2022-02-28T19:50:00Z

last_ping

string

Timestamp of the last ping sent by the client and acknowledged by the server (as measured by the server), extracted from 2xx response body. Example: 2022-02-28T19:50:00Z

last_ping_tag

string

Number generated by the client using UUID4 when it receives a response with a last_ping. Empty in the first message. If a ping is retried, the same last_ping_tag number should be used; this helps to anonymously distinguish between several ping requests with the same value of last_ping.

previous_last_ping

string

Timestamp of the previous to last ping sent by the client and acknowledged by the server (as measured by the server), copied from the last request. Example: 2022-02-28T19:50:00Z

aa_active

bool

Whether the client opted into Acceptable Ads.

platform

string

Client operating system. Example: Android

platform_version

string

Respective version corresponding to the OS. Example: 10

Last updated