Identity and Privacy

    Identity graph architecture: how to build a first-party identity graph

    Published · Last updated
    Next scheduled review:

    An identity graph is a store of identifiers, such as emails, logins, device IDs and cookies, linked to the person or household they belong to. A first-party identity graph builds those links from your own consented data, then translates them into IDs partners accept, such as UID2, EUID, RampID and ID5. This page shows the architecture, step by step.

    Contents

    Key facts

    • The bid request now says how an ID was matched. OpenRTB 2.6 gives each extended ID an inserter, a matcher and a match method mm, where 3 means authenticated, 4 observed first-party and 5 inferred (OpenRTB 2.6, section 3.2.27; AdCOM 1.0, List: ID Match Methods). The latest release is 2.6-202606, published on 11 June 2026 (openrtb2.x releases).
    • Hashing rules decide whether IDs match. UID2 requires you to normalise an email, hash it with SHA-256 and Base64-encode the raw bytes before sending it; done out of order, the result cannot be matched (UID2 docs, updated 5 November 2026).
    • The largest deterministic graph changed owner. Publicis Groupe completed its acquisition of LiveRamp, owner of RampID, on 2 November 2026 (Publicis Groupe, 2 November 2026). A proposed FTC consent order requires LiveRamp to stay neutral toward rival agencies' clients (PPC Land, 2 November 2026).
    • Consent frameworks name the graph functions. The IAB Europe Global Vendor List, version 184 of 5 November 2026, lists "Match and combine data from other data sources" and "Link different devices" as features vendors must disclose (GVL v3, 5 November 2026).
    • Chrome's Topics API is being removed in stages. Chrome replaced Topics with a stub in Chrome 152, reached 1% of Stable users on Chrome 153 by 24 September 2026, and asked to reach 100% after 15 October 2026 (blink-dev thread).
    Jump to the table

    Definition

    Identity graph: a data structure whose nodes are identifiers and whose edges record evidence that two identifiers belong to the same person, device or household. Each edge carries its source, method, time, confidence and permitted uses. The process that builds it is identity resolution, a form of entity resolution applied to people.

    A first-party graph differs from a vendor graph in one way that matters. You decide which evidence counts and which uses are allowed, and you can prove it. A vendor graph gives you an answer, while your own graph also gives you the reason.

    What an identity graph stores: nodes, edges and clusters

    Think of three layers. Nodes are identifiers you have observed. Edges are claims that two nodes belong together. Clusters are the groups of nodes you treat as one person or one household. Most mistakes come from storing clusters without the edges that justify them.

    7 of 7 rows

    Columns (5)

    SHA-256 of a normalised address

    Login, newsletter, checkout

    Long

    Normalise before hashing, per the UID2 rules below

    Phone hash

    SHA-256 of an E.164 number

    Loyalty, SMS opt-in

    Long

    Same discipline as email

    Customer or account ID

    CRM key

    Your own systems

    Long

    The strongest first-party anchor

    First-party cookie or local ID

    Publisher cookie, SharedID

    Site visits

    Weeks to months

    Browser-scoped

    Mobile or CTV ad ID

    IFA from the device OS

    Apps

    Resettable

    device.ifa in OpenRTB

    Partner ID

    UID2, EUID, RampID, ID5 ID

    Partner calls

    Varies by provider

    Store as a node with its own consent state

    Household

    Derived cluster

    Graph output

    Recomputed

    Hashed email

    Example

    SHA-256 of a normalised address

    Typical source

    Login, newsletter, checkout

    Lifetime

    Long

    Notes

    Normalise before hashing, per the UID2 rules below

    Phone hash

    Example

    SHA-256 of an E.164 number

    Typical source

    Loyalty, SMS opt-in

    Lifetime

    Long

    Notes

    Same discipline as email

    Customer or account ID

    Example

    CRM key

    Typical source

    Your own systems

    Lifetime

    Long

    Notes

    The strongest first-party anchor

    First-party cookie or local ID

    Example

    Publisher cookie, SharedID

    Typical source

    Site visits

    Lifetime

    Weeks to months

    Notes

    Browser-scoped

    Mobile or CTV ad ID

    Example

    IFA from the device OS

    Typical source

    Apps

    Lifetime

    Resettable

    Notes

    device.ifa in OpenRTB

    Partner ID

    Example

    UID2, EUID, RampID, ID5 ID

    Typical source

    Partner calls

    Lifetime

    Varies by provider

    Notes

    Store as a node with its own consent state

    Household

    Example

    Derived cluster

    Typical source

    Graph output

    Lifetime

    Recomputed

    Notes

    See household graph

    Download JSON

    Table by AdSovereign, CC BY 4.0.

    Each edge should be a row you can audit. The record below is our recommended minimum, not a standard format. It shows a deterministic link between a login and a hashed email, created under consent, with a review date.

    {
      "edge_id": "e-000184",
      "from_node": "crm:customer:58210",
      "to_node": "hem:sha256:tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=",
      "method": "deterministic",
      "evidence": "authenticated_login",
      "openrtb_mm": 3,
      "confidence": 1.0,
      "observed_at": "2026-11-02T14:05:00Z",
      "expires_at": "2027-11-02T00:00:00Z",
      "jurisdiction": "EU",
      "legal_basis": "consent",
      "allowed_uses": ["measurement", "personalised_ads"],
      "consent_ref": "tcf:v2:cmp-312:2026-11-02",
      "source_system": "web-login"
    }

    The hash in to_node is the UID2 documentation's own worked value for user@example.com, which we reproduced locally (UID2 normalisation and encoding). The openrtb_mm field copies the AdCOM code, so the same edge can explain a bid request later.

    Deterministic vs probabilistic matching

    Deterministic matching links two identifiers only when they share an exact key, such as a login or a normalised email hash. Probabilistic matching scores the likelihood that two records belong to the same person from weaker signals, such as name, postcode, IP address and timing. Both are legitimate. They answer different questions and carry different risks.

    6 of 6 rows

    Columns (3)

    Evidence

    Shared login, hashed email or phone, customer ID

    Scored agreement on several weak fields

    Precision

    High, if inputs are clean

    Depends on the threshold you choose

    Reach

    Limited to authenticated users

    Wider, including logged-out traffic

    OpenRTB mm value

    3, authenticated

    5, inference

    Main failure

    Shared or typo-ridden emails

    Over-merging people who share a network

    Typical use

    Activation, suppression, measurement

    Reach extension, frequency capping

    Evidence

    Deterministic

    Shared login, hashed email or phone, customer ID

    Probabilistic

    Scored agreement on several weak fields

    Precision

    Deterministic

    High, if inputs are clean

    Probabilistic

    Depends on the threshold you choose

    Reach

    Deterministic

    Limited to authenticated users

    Probabilistic

    Wider, including logged-out traffic

    OpenRTB mm value

    Deterministic

    3, authenticated

    Probabilistic

    5, inference

    Main failure

    Deterministic

    Shared or typo-ridden emails

    Probabilistic

    Over-merging people who share a network

    Typical use

    Deterministic

    Activation, suppression, measurement

    Probabilistic

    Reach extension, frequency capping

    Download JSON

    Table by AdSovereign, CC BY 4.0.

    The trade-off is public. LiveRamp's documentation says its graph favours "accuracy and precision over reach" and that probabilistic graphs "may produce higher reach" with more false positives (LiveRamp, RampID methodology). ID5 says it uses machine learning on consented signals to link identifiers to people and households (company claim) (ID5 technology page, accessed 9 November 2026).

    A worked probabilistic score

    The standard model for scoring record pairs dates from Fellegi and Sunter in 1969 (Journal of the American Statistical Association, 1969). For each field you estimate two probabilities. The m value is the chance the field agrees when the records are a true match. The u value is the chance it agrees by coincidence. Agreement adds log2(m/u) to the score, and disagreement adds log2((1-m)/(1-u)).

    3 of 3 rows

    Columns (5)

    Last name

    0.95

    0.01

    +6.57

    -4.31

    Postcode

    0.90

    0.02

    +5.49

    -3.29

    Same IP /24 within 7 days

    0.60

    0.001

    +9.23

    -1.32

    Last name

    m

    0.95

    u

    0.01

    Weight if agree

    +6.57

    Weight if disagree

    -4.31

    Postcode

    m

    0.90

    u

    0.02

    Weight if agree

    +5.49

    Weight if disagree

    -3.29

    Same IP /24 within 7 days

    m

    0.60

    u

    0.001

    Weight if agree

    +9.23

    Weight if disagree

    -1.32

    Download JSON

    Table by AdSovereign, CC BY 4.0.

    Pair A agrees on last name and postcode but not on IP, so it scores 6.57 + 5.49 - 1.32 = 10.74. Pair B shares only an IP range, so it scores -4.31 - 3.29 + 9.23 = 1.63. With a link threshold of 8, Pair A becomes an inferred edge with mm 5 and Pair B does not.

    The m and u values here are illustrative; in production you estimate them from your own data. The open-source Splink library, maintained by the UK Ministry of Justice, implements this model and reached version 5.0.0 on 18 September 2026 (Splink on GitHub).

    The ID resolution pipeline, step by step

    A first-party resolution pipeline runs the same eight steps whether you build it or buy it. Managed services such as AWS Entity Resolution offer rule-based, machine-learning and data-provider matching, and normalise inputs by default (AWS Entity Resolution user guide).

    1. Ingest with consent attached. Each record arrives with its consent string or opt-out flag and its jurisdiction. Records without a usable permission go to a quarantine table, not into the graph.
    2. Normalise. Trim spaces, lowercase emails, apply provider rules such as removing dots and plus suffixes in gmail.com addresses, and format phones in E.164 (UID2 normalisation rules).
    3. Pseudonymise. Hash direct identifiers at the edge of your system and keep raw values in a separate, locked store. Under GDPR Article 4(5), pseudonymised data is still personal data if the extra information to re-identify it exists (GDPR, EUR-Lex).
    4. Block. Generate candidate pairs only within blocks, such as the same hashed email or the same postcode and surname initial. Comparing every record with every other does not scale.
    5. Score. Apply deterministic rules first, then the probabilistic model to the remaining candidates.
    6. Cluster with guardrails. Build connected components from accepted edges, but cap component size and refuse merges that rely only on network signals. One shared IP can join thousands of devices.
    7. Assign a stable person ID. Keep the ID of the largest prior cluster when clusters merge or split, so downstream systems do not see a new person every night.
    8. Translate and publish. Generate partner IDs (UID2 tokens, EUID tokens, RampIDs, ID5 IDs) for the nodes allowed to carry them, and publish to activation, measurement and the clean room.

    Graph storage: what to choose

    Identity graphs have two very different workloads. Building the graph is a batch job over every edge. Serving it is a lookup that must answer in milliseconds inside a bid or a page load. Most teams separate the two.

    5 of 5 rows

    Columns (4)

    Edge store (system of record)

    Relational or lakehouse table of edges, partitioned by date

    Audit, deletion, recomputation

    Needs a batch job to build clusters

    Cluster build

    Connected components in Spark or SQL; or a managed service

    Nightly or hourly rebuilds

    Giant components from shared IPs or shared emails

    Graph database

    Property graph store

    Exploring paths, debugging merges

    Not needed on the bid path

    Serving store

    Key-value lookup from node to person ID and partner IDs

    Real-time enrichment

    Must expire and delete in step with the edge store

    Managed resolution

    AWS Entity Resolution, with up to 20 data inputs per workflow

    Teams without a matching team

    Data and rules sit inside the provider's service (AWS user guide)

    Edge store (system of record)

    Option

    Relational or lakehouse table of edges, partitioned by date

    Good for

    Audit, deletion, recomputation

    Watch out for

    Needs a batch job to build clusters

    Cluster build

    Option

    Connected components in Spark or SQL; or a managed service

    Good for

    Nightly or hourly rebuilds

    Watch out for

    Giant components from shared IPs or shared emails

    Graph database

    Option

    Property graph store

    Good for

    Exploring paths, debugging merges

    Watch out for

    Not needed on the bid path

    Serving store

    Option

    Key-value lookup from node to person ID and partner IDs

    Good for

    Real-time enrichment

    Watch out for

    Must expire and delete in step with the edge store

    Managed resolution

    Option

    AWS Entity Resolution, with up to 20 data inputs per workflow

    Good for

    Teams without a matching team

    Watch out for

    Data and rules sit inside the provider's service (AWS user guide)

    Download JSON

    Table by AdSovereign, CC BY 4.0.

    Keep the edge table as the source of truth. Clusters and serving keys are derived data, so you can rebuild them after a model change or a deletion. A retailer with a loyalty programme, for example, can rebuild its households nightly from login and address edges while its ad server reads a cache that is at most one day old.

    Consent belongs on the edge, not on the profile. A person can agree to measurement on one site and refuse personalised ads on another. If you store a single flag per person, you will either over-use or under-use data.

    The consent standards name the graph operations directly. The TCF Global Vendor List defines three features that vendors must disclose: "Match and combine data from other data sources", "Link different devices" and "Identify devices based on information transmitted automatically". They are Features 1, 2 and 3 in version 184 of 5 November 2026 (GVL v3). In the US, the GPP string carries state opt-outs instead. The field-level details are in GPP and TCF implementation for engineers.

    Client-side tools enforce some of this for you. With Prebid's User ID module and a TCF consent module, nothing is written to cookies or local storage if consent for Purpose 1 is missing. A change in consent data refreshes every ID submodule (Prebid.org, User ID module). Prebid's activity controls can also block enrichEids, which adds IDs to requests, and transmitEids, which sends them to a bidder (Prebid.org, activity controls).

    Opt-outs must flow the other way too. When a person opts out of UID2, publishers calling the token endpoints get an opt-out response, DSPs receive opt-outs through a webhook, and advertisers see them through the identity map endpoint (UID2 user opt-out). Your graph needs the same path. Mark the node, drop it from partner translation, and delete the edges that relied on it.

    Interoperability with UID2, EUID, RampID and ID5

    Your person ID stays internal. Partners see an ID they recognise, and each one is built differently. The table summarises what each provider documents; capability claims are the providers' own.

    6 of 6 rows

    Columns (5)

    Input

    Email or phone (UID2)

    Email or phone (EUID)

    PII and devices matched to people (LiveRamp)

    Consented signals linked by machine learning (ID5)

    Method

    Deterministic

    Deterministic

    Deterministic (company description)

    Deterministic and probabilistic (company description)

    Consent basis

    Local rules such as CCPA and CPRA

    GDPR and the TCF

    Per LiveRamp contracts

    Per ID5 contracts and the TCF

    EID source in Prebid

    uidapi.com

    euid.eu

    liveramp.com

    id5-sync.com

    How it changes

    Secret salts rotate across over a million buckets (UID2 glossary)

    Same model as UID2

    RampIDs can change when PII is added; no old-to-new mapping is provided

    n/d

    Owner on 9 Nov 2026

    Open-source framework

    Open-source framework

    Publicis Groupe

    ID5

    Input

    UID2

    Email or phone (UID2)

    EUID

    Email or phone (EUID)

    RampID

    PII and devices matched to people (LiveRamp)

    ID5 ID

    Consented signals linked by machine learning (ID5)

    Method

    UID2

    Deterministic

    EUID

    Deterministic

    RampID

    Deterministic (company description)

    ID5 ID

    Deterministic and probabilistic (company description)

    Consent basis

    UID2

    Local rules such as CCPA and CPRA

    EUID

    GDPR and the TCF

    RampID

    Per LiveRamp contracts

    ID5 ID

    Per ID5 contracts and the TCF

    EID source in Prebid

    UID2

    uidapi.com

    EUID

    euid.eu

    RampID

    liveramp.com

    ID5 ID

    id5-sync.com

    How it changes

    UID2

    Secret salts rotate across over a million buckets (UID2 glossary)

    EUID

    Same model as UID2

    RampID

    RampIDs can change when PII is added; no old-to-new mapping is provided

    ID5 ID

    n/d

    Owner on 9 Nov 2026

    UID2

    Open-source framework

    EUID

    Open-source framework

    RampID

    Publicis Groupe

    ID5 ID

    ID5

    Download JSON

    Table by AdSovereign, CC BY 4.0.

    EID sources are those listed by Prebid's User ID module (Prebid.org). Scale claims differ in kind. LiveRamp says it maintains PII on 245 million individuals in the US (company claim) (LiveRamp). ID5 says its graph covers over 1.3 billion individuals and 770 million households (company claim) (ID5, accessed 9 November 2026). Neither figure is independently audited.

    RampID has four types, shown by its first two letters: maintained (XY), derived (Xi), placeholder (Xc or Xm) and household (hY) (LiveRamp). Store the type with the node, because a derived RampID may later become a maintained one. LiveRamp's advice is to overwrite the old value and keep the data you attached to the device. The LiveRamp clean room profile covers its collaboration products.

    When the IDs reach a bid request, they travel in user.eids. The example below shows one authenticated ID per provider. The inserter is the publisher, and the mm values follow AdCOM. IDs are placeholders.

    {
      "user": {
        "eids": [
          {
            "source": "uidapi.com",
            "inserter": "publisher.example",
            "matcher": "publisher.example",
            "mm": 3,
            "uids": [{ "id": "AgAAAAVacu1uAxgAxH+HJ8+nWlS2H4uVqr6i", "atype": 3 }]
          },
          {
            "source": "liveramp.com",
            "inserter": "publisher.example",
            "matcher": "liveramp.com",
            "mm": 3,
            "uids": [{ "id": "XY1000placeholderRampID", "atype": 3 }]
          },
          {
            "source": "id5-sync.com",
            "inserter": "publisher.example",
            "matcher": "id5-sync.com",
            "mm": 5,
            "uids": [{ "id": "ID5*placeholder", "atype": 1 }]
          }
        ]
      }
    }

    One rule from the implementation guide matters most. An ID that arrived with mm 3, 4 or 5 keeps that match method when you forward it. This holds even if your own link came from a cookie sync (OpenRTB implementation guide, section 7.12). Cookie sync mechanics are covered in Prebid Server cookie sync, and the rest of the bid request in OpenRTB 2.6 explained.

    Privacy controls that belong in the architecture

    Privacy controls are cheaper to design in than to bolt on. These are the ones we would not ship without.

    • Separate keys from data. Raw emails and phones sit in a vault with its own access list. The graph only ever sees hashes. UID2 applies the same idea with secret salts kept in its core service (UID2 glossary).
    • Purpose on every edge. Store allowed uses on each edge and check them at read time, not only at ingest.
    • Expiry by design. Edges from cookies and device IDs expire. LiveRamp keeps devices for 90 days (LiveRamp); choose and document your own windows.
    • Minimum audience size. Release audience counts and segments only above a threshold, the idea behind k-anonymity.
    • Deletion that reaches derived data. A deletion removes edges, rebuilds the affected cluster, refreshes the serving store and stops partner translation.
    • Access logs. Log who read which cluster and why. This is your evidence when a regulator or a partner asks.

    Regulators are still refining the rules on hashing. The European Data Protection Board consulted on Guidelines 01/2025 on pseudonymisation until 14 March 2025 (EDPB). Treat a hashed email as personal data unless your counsel says otherwise.

    What changed in Chrome, and what did not

    Third-party cookies remain in Chrome, but the Privacy Sandbox APIs are on their way out. For the Topics API, the removal plan moved. The owners first planned removal in Chrome 150. In June 2026 they proposed a stub in Chrome 152 and a staged rollout of the removal. On 24 September 2026 they reported that removal had reached 1% of Chrome 153 Stable users with no breakage. They asked to reach 100% after 15 October 2026 (blink-dev, "Intent to Deprecate and Remove: Topics API"). We could not confirm full rollout on 9 November 2026.

    Our page on identity after Privacy Sandbox still shows the earlier Chrome 150 target for the Topics API; treat that milestone as out of date until the page is revised. The practical lesson is the same either way. A first-party graph does not depend on a browser API, which is why the identity and privacy hub treats it as the base layer, with partner IDs on top.

    Common mistakes

    1. Hashing before normalising. User@Example.com and user@example.com produce different hashes. Normalise first, every time.
    2. Base64-encoding the hex string. UID2 expects Base64 of the 32 raw bytes, a 44-character string. Encoding the 64-character hex text gives an invalid value (UID2).
    3. Treating IP as a deterministic key. Shared networks join strangers. Use IP only as one weighted field, and label the result mm 5.
    4. Unbounded transitive closure. If A links to B and B links to C, you may not want A linked to C. Cap cluster size and review the largest clusters weekly.
    5. Dropping the match method on the way out. Forward the incoming mm, as the OpenRTB guidance requires.
    6. One consent flag per person. Consent varies by site, purpose and law; store it per edge.
    7. Opt-outs that stop at the CRM. Push them to the serving store and to partner translation the same day.
    8. Treating a new RampID as a new person. LiveRamp may re-key a device; overwrite the ID and keep the history.

    The RTB architecture hub links the bidder and bid request pages that consume these IDs, and first-party data strategy for publishers covers how to collect the inputs.

    FAQ

    What is an identity graph?
    It is a database that links identifiers, such as hashed emails, logins, cookies and device IDs, to the person or household they belong to. Each link records why it exists and how it may be used. Ad platforms use it for targeting, frequency capping, suppression and measurement.
    What is the difference between deterministic and probabilistic identity resolution?
    Deterministic resolution links records only on an exact shared key, such as a login or a hashed email. Probabilistic resolution scores weaker evidence, such as name, postcode and IP, and links records above a threshold. OpenRTB labels the first as match method 3 and the second as match method 5 (AdCOM 1.0).
    Can I build an identity graph without third-party cookies?
    Yes. A first-party graph rests on logins, customer IDs, hashed emails and your own cookies. Partner IDs such as UID2 and EUID are generated from emails or phone numbers, not from third-party cookies (UID2 overview).
    How do UID2 and RampID differ?
    UID2 is an open-source framework that turns an email or phone into an encrypted token, with secret salts that rotate over time. RampID is LiveRamp's people-based ID, built by matching PII and devices in LiveRamp's own graph, now owned by Publicis Groupe (Publicis Groupe, 2 November 2026). Many publishers pass both.
    How do I handle opt-outs in an identity graph?
    Mark the affected node, remove it from partner ID generation, delete the edges that depended on it and refresh the serving store. For UID2, also honour the global opt-out signals the operator returns (UID2 user opt-out).

    How this works on owned infrastructure

    The hard part of an identity graph is not the matching algorithm. It is proving, edge by edge, which evidence linked two records and which uses that person allowed. When resolution runs inside a vendor's graph, you receive the cluster but not the evidence. AdSovereign is an enterprise RTB stack (DSP, SSP, exchange, DMP and clean room) designed to run on infrastructure you control. Its DMP is built to keep the edge table, the consent references and the partner ID translations in your own environment, so a deletion or an opt-out can be traced through to the bidstream. The architecture page shows where the DMP and clean room sit, and the security page describes how keys and hashes are separated.

    Sources

    1. IAB Tech Lab, OpenRTB 2.6 specification, sections 3.2.27 (EID) and 3.2.28 (UID) (accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md
    2. IAB Tech Lab, openrtb2.x releases, 2.6-202606 (11 June 2026). https://github.com/InteractiveAdvertisingBureau/openrtb2.x/releases
    3. IAB Tech Lab, OpenRTB 2.x implementation guide, section 7.12 "ID Match Method Guidance" (accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/implementation.md
    4. IAB Tech Lab, AdCOM 1.0, "List: ID Match Methods" and "List: Agent Types" (accessed 9 November 2026). https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/main/AdCOM%20v1.0%20FINAL.md
    5. Unified ID 2.0, "Normalization and encoding" (updated 5 November 2026). https://unifiedid.com/docs/getting-started/gs-normalization-encoding
    6. Unified ID 2.0, "How the UID2 token is created" (updated 5 November 2026). https://unifiedid.com/docs/ref-info/ref-how-uid-is-created
    7. Unified ID 2.0, "Glossary" (salt, salt bucket) (accessed 9 November 2026). https://unifiedid.com/docs/ref-info/glossary-uid
    8. Unified ID 2.0, "User opt-out" (updated 5 November 2026). https://unifiedid.com/docs/getting-started/gs-opt-out
    9. Unified ID 2.0, "Unified ID 2.0 overview" (updated 5 November 2026). https://unifiedid.com/docs/intro
    10. European Unified ID, "EUID overview" (updated 2 November 2026). https://euid.eu/docs/intro
    More sources (14)
    1. LiveRamp, "Interpreting RampID, LiveRamp's People-Based Identifier" (accessed 9 November 2026). https://docs.liveramp.com/identity/en/interpreting-rampid,-liveramp-s-people-based-identifier.html
    2. LiveRamp, "RampID Methodology" (accessed 9 November 2026). https://docs.liveramp.com/identity/en/rampid-methodology.html
    3. ID5, "Your Adaptive Identity Engine" technology page (accessed 9 November 2026). https://id5.io/technology/
    4. Prebid.org, "User ID Module" (accessed 9 November 2026). https://docs.prebid.org/dev-docs/modules/userId.html
    5. Prebid.org, "Activity Controls" (accessed 9 November 2026). https://docs.prebid.org/dev-docs/activity-controls.html
    6. IAB Europe, Global Vendor List v3, version 184 (5 November 2026). https://vendor-list.consensu.org/v3/vendor-list.json
    7. I. P. Fellegi and A. B. Sunter, "A Theory for Record Linkage", Journal of the American Statistical Association 64 (1969). https://doi.org/10.1080/01621459.1969.10501049
    8. UK Ministry of Justice, Splink repository, release v5.0.0 (18 September 2026). https://github.com/moj-analytical-services/splink
    9. Amazon Web Services, "What is AWS Entity Resolution?" (accessed 9 November 2026). https://docs.aws.amazon.com/entityresolution/latest/userguide/what-is-service.html
    10. Publicis Groupe, "Publicis Groupe completes LiveRamp acquisition" (2 November 2026). https://www.publicisgroupe.com/en/news/press-releases/publicis-groupe-completes-liveramp-acquisition-launches-the-industry-s-first-plug-and-play-ai-growth-engine-that-clients-fully-own-and-control
    11. PPC Land, "Publicis acquires LiveRamp, the data hub its agency rivals rely on" (2 November 2026). https://ppc.land/publicis-acquires-liveramp-the-data-hub-its-agency-rivals-rely-on/
    12. Chromium blink-dev, "Intent to Deprecate and Remove: Topics API" (thread from 7 November 2025; updates 11 June, 24 September and 30 September 2026). https://groups.google.com/a/chromium.org/g/blink-dev/c/_R85yctz4Rs
    13. Regulation (EU) 2016/679 (GDPR), Article 4(5), EUR-Lex. https://eur-lex.europa.eu/eli/reg/2016/679/oj
    14. European Data Protection Board, "Guidelines 01/2025 on Pseudonymisation", public consultation (comments until 14 March 2025). https://www.edpb.europa.eu/our-work-tools/documents/public-consultations/2025/guidelines-012025-pseudonymisation_en