Data

Who we think you are, and when we refuse to guess

Animated: a bid request arrives asking who is this. It reaches a red gate marked opted out. If yes, a red dot drops to a box reading no id at all, not the ad id, not a fingerprint, a non-personalised ad still served. If no, a teal dot climbs four rungs that light in order: an id they sent, a person; the advertising id hashed, only when tracking isn't limited, a person; a fingerprint, needs an IP, never on iPhone, never after do-not-track, never a person; nothing, a contextual ad chosen by the page, still served. Caption: one id per request, its kind written down, no guessing after an opt-out.

Every bid request asks the same quiet question: who is this? Much of the industry answers by guessing — stitching an IP address and a browser into a “user” and following it around. In October we rewrote how our bidder answers. The honest version has one gate, four rungs in strict order, and a rule that the kind of answer decides what it may be used for. Here it is in plain English: what we decide, what each answer is allowed to do, and when we refuse to guess.

One request, one answer, and its kind written down

For every bid request the bidder settles on one identifier, or none, and records which rule produced it. That kind travels with the request into every log, so a report can say how many impressions were tied to a known person, how many to a probabilistic link, and how many to nobody at all — rather than quietly adding them all up as “users”. It also means nobody can pass one kind of id off as another: an id from our own tag is marked as ours, a hashed advertising id as what it is, and a fingerprint as a fingerprint.

The gate, then the four rungs

The order matters, and it is the same for every request.

  1. The gate comes first. If the device has limited ad tracking, the browser sends Do Not Track or Global Privacy Control, or a privacy law applies and there is no consent, the request gets no identifier at all — not the advertising id, not a fingerprint. Opting out and then being tracked by IP address would make the opt-out meaningless, so we don't. The ad still serves, chosen by the page, not the person.
  2. An id someone sent on purpose. The exchange's own user id, or the first-party id our web tag keeps in the browser for that site: a random id, not a cookie, not derived from the device — which is why it is allowed on iPhones. Our mobile SDK's install id counts here too. This is a real person for every purpose below.
  3. The device's advertising id, hashed. Only when the phone has not limited ad tracking, and only ever as a hash: the raw id is never stored, and it leaves the platform only inside the industry's standard verification macros, never when tracking is limited. A real person.
  4. A fingerprint, under three conditions. Only when the request carries an IP address, never on iOS, and never after a do-not-track signal. Without an IP nothing is derived at all, because a phone model and a browser alone would merge thousands of people into one “user”. The fingerprint is keyed with a secret the platform holds, so a log row cannot be turned back into an address, and it is kept for days, not months. Above all it is a probabilistic link, not a person: never counted in reach, never frequency-capped, never retargeted. Its only job is to tie events together for a short while — a click to its impression, say, when nothing better survived.
  5. Nothing. When none of the above applies, the request has no id, and that is a legitimate answer. It is logged as such, reach for it is estimated and labelled rather than invented, and the ad is chosen by context.
Animated grid: four kinds of id down the side — an id they sent, the advertising id hashed, a fingerprint, no id — against four uses across the top: counted as a person for reach, frequency cap, retargeting lists, ad still served. The cells fill row by row. The first two kinds get yes in every column. The fingerprint gets never, never, never, and yes for ad still served. No id gets estimated for reach, no, no, and yes. Caption: a fingerprint may never be a person; a reader with no id is estimated, labelled, and never capped or retargeted.

The kind of id decides what it may do. These rules are enforced in the bidder, not in a policy document.

What each kind of id may do

  • Frequency caps count only ids that name one device or person. An opted-out reader may therefore see an ad more often than a capped reader would. We would rather that than track someone in order to cap them.
  • Retargeting lists enrol only such ids: never a fingerprint, never a device that limited tracking, never an empty id. Seeing or clicking an ad enrols in real time, and an advertiser can use a list to include or to exclude. Exclude is honoured even where include is denied.
  • Reach counts the people it can identify and estimates the rest from the frequency measured on identified impressions in the same campaign. Every table that contains such an estimate says so in a footnote. How the report is built.
  • Deletion removes an identifier from every store that holds it — profile, caps and retargeting lists included — whichever kind of id it was.

No personalised ads is not no ads

Some readers do not opt out of everything; they say no to personalised ads. The tag's own flag, Do Not Track, Global Privacy Control, a US-privacy or GPP opt-out, or a GDPR request without consent for personalisation all mean the same thing to the bidder. Such a reader keeps an id for frequency caps and reach, but it is never used to personalise: no profile enrichment, no enrolment into retargeting lists, and a denial on every audience include — while an exclude list, which protects the reader, still applies. The ad that serves is chosen by the page.

Child-directed requests are a different case. A request flagged as child-directed gets no bid from us at all, personalised or otherwise.

Animated: a reader who said no to personalised ads passes five stations that light in turn — id kept, for caps and reach and nothing else; no segments, profile enrichment skipped; no retargeting, never enrolled into any list; no include, audience include denied while exclude is still honoured; contextual ad, chosen by the page, still served. Below: the signals recognised, and the note that child-directed requests get no bid at all. Caption: no personalised ads means no personalisation, not no ads.

What “no personalised ads” changes, and what it doesn't.

What we never do

NeverWhy
Fingerprint an iPhoneThe platform's rules say so, and so does the point of asking permission to track
Derive an id without an IP addressA phone model and a browser alone would merge thousands of people into one
Count, cap or retarget on a fingerprintIt is a probabilistic link, not a person
Keep the raw advertising idA hash is enough to match on; the raw id is a liability
Use any id after an opt-outAn opt-out that is tracked anyway is not an opt-out
Bid on child-directed requestsThere is no case, personalised or contextual, worth the risk
Set a cookie from our ad tagThe first-party id lives in the browser's own storage, for that site only

What this costs us, and why we pay it

Honesty about identity is not free. Frequency caps now cover fewer impressions than a system that caps on a fingerprint would, because we refuse to cap on one. Retargeting lists are shorter, because they hold only people who can be addressed without guessing. Reach contains estimates, and says so, where a looser platform would print a bigger number. On our own web supply the first-party id replaced the fingerprint for most readers the day it shipped, which moved a large share of our impressions from “probably someone” to “this browser, on this site”. We measure what share of requests arrives with each kind of id, and we will publish those coverage figures once they have settled — not before.

The lesson that travels

An identifier is a claim about a person. Record how strong the claim is, let that strength decide what it may be used for, and accept “nobody” as an honest answer.

See how your campaign is counted

Questions we get asked

Does the AdZoic ad tag set cookies?

No. The web tag keeps a random first-party id in the browser's own storage for that site. It is not a cookie, it is not derived from the device, and it is dropped the moment the reader opts out.

Why might a frequency cap not apply to every impression?

A cap counts only identifiers that name one device or person: an id the exchange or our tag sent, or a hashed advertising id. A reader who opted out, or whose request carried no usable id, cannot be capped without tracking them, so we don't. Those impressions are reported as delivery, and reach for them is estimated and labelled.

What happens when a reader opts out?

The request gets no identifier at all: not the advertising id, not a fingerprint. The ad still serves, chosen by the page rather than the person. A reader who only said no to personalised ads keeps an id for caps and reach but is never enrolled in retargeting and is denied on every audience include.

A note on numbers

This post describes principles, not configuration: no thresholds, retention periods, keys or endpoints are given, on purpose. The signals named — limit ad tracking, Do Not Track, Global Privacy Control, the TCF and GPP consent frameworks, the US-privacy string, the child-directed flag — are industry standards, used here as the bidder reads them. No coverage or performance figure appears because none has been published yet; they will be, once measured. Behaviour described is how the bidder works as of 13 October 2026 and may change. This describes our own platform; it is not legal advice, and it is not a description of anyone else's.

A
AdZoic team
Making ad buying make sense, from Dhaka.
Keep reading

Related reading

Animated: billed impressions walk down five gates — served, rendered, measurable, viewable, valid — with a red slice peeling off at each gate for its reason, and the valid remainder turning tealMeasurement

Served, rendered, viewable, valid: the standard behind every impression we report

You buy ten thousand ads and the report says fewer. The five questions an impression must answer, the published standard for each, and why we keep two records of every ad.

Sep 2026 · 9 min read
Animated: a bid request carrying only an app ID reaches the bidder, which makes one lookup into a shelf of pre-computed verdicts and answers with what the app is about, while a context engine slowly fills the shelf ahead of timeEngineering

Contextual targeting without cookies: how we rebuilt our context engine

Most of our bid requests arrive with no page to read. How we understand sites and apps before the auction and look them up in a fraction of a millisecond — without cookies or device IDs.

Oct 2026 · 8 min read
Database cylinder with a consent checkmark orbiting itData

Why first-party data is your most valuable ad asset

As third-party cookies fade, the data you own becomes your edge. Here's how to put it to work.

Jun 2026 · 5 min read

← Back to all posts