Data Flows for your DPIA

A publisher that runs a Data Protection Impact Assessment (DPIA) needs to know what AdPriva collects, where it goes and how long it stays. This page lists those facts. It does not include a lawful-basis analysis, which depends on how each publisher uses AdPriva.

Where data goes

  1. Visitor’s browser → ingest server. The tag sends one event per page load: aggregate interaction counts, automation hints, a low-detail device snapshot, the page path, the referrer and a one-time nonce. The server also receives the request’s IP address and user agent.
  2. Ingest server → scoring service. The signals needed for a verdict are passed to AdPriva’s internal scoring service. The verdict comes back and is stored with the proof.
  3. Anchor worker → Horizen. Only a batch’s Merkle root, which is a hash, is revealed. Horizen receives the root itself. New batches send nothing to zkVerify. Batches anchored before 2026-09-28 also sent it a zero-knowledge proof whose only public input was that root.
  4. Database → console. The publisher sees its own organization’s proofs, verdicts and reports.
  5. Database → public Explorer and public API. Anyone can look up a proof by its id. No publisher, site, page or visitor data is shown.
  6. Database → model training. Pseudonymous copies of proof records and their scoring signals are exported to a private storage bucket used to train and test the scoring models. Raw IP addresses, user agents, page URLs and referrers are not exported.

Data inventory

DataSourceUsed forRetentionPublic
Aggregate interaction counts and automation hintsTagScoringScoring signals emptied after 180 daysNo; only the score and verdict
Device snapshotTagThe platform value classifies the device typeNot storedNo
Interaction summary (mouse-move and touch counts, scroll depth, recent click intervals and relative pointer moves)TagNot usedNot storedNo
Page path and referrerTagConsole reports (pages, traffic sources)Kept with the proof recordNo
IP address, user agentHTTP requestScoring; deriving country, device class, browser, OSRaw values emptied after 30 days; hashes keptNo
Proof id, timestamps, validity score, verdictIngest serverVerification and reportsKept: the proof id is a Merkle leafYes
Merkle rootAnchor workerAnchoringPermanent on HorizenYes
Consent certificate fieldsTag, on forms the publisher marksConsent evidenceSee Data-Processor Posture §4Public lookup shows no personal data

The retention windows are the current production settings.

Risks and safeguards

RiskSafeguard
A captured event is replayedEach event carries a one-time nonce; a reused nonce is refused
A stored proof is changed laterEach proof’s sealed fields are covered by an HMAC, which AdPriva checks. The anchored batch root fixes which proofs are in each batch, and for consent certificates their sealed content. It does not fix a view proof’s score or verdict
A visitor is identified from the public recordThe public record carries no publisher, site, page, IP address, user agent or visitor reference
Raw network identifiers are kept too longRaw IP addresses and user agents are emptied after 30 days
Form contents are capturedThe tag never reads form field values or keystrokes