How Identity Signals Support Attribution
When a shopper sees an ad and then makes a purchase, Criteo connects those two events using identity signals — user identifiers you pass through the API. The quality and completeness of these signals directly determine how accurately attribution is measured for brand campaigns running on your inventory. This article explains the four signals Criteo uses, what each one does, and how to configure them correctly.
What Are Identity Signals?
Identity signals are user identifiers included in every API call your site makes to Criteo. For each ad event and purchase event, Criteo evaluates all available signals in parallel and keeps the best available match to determine whether a sale should be attributed to an ad interaction.
Two signals are required: Customer ID and Retailer Visitor ID. A third signal, Hashed Email, is strongly recommended. The fourth signal, Criteo ID, is managed automatically by Criteo and requires no configuration from you.
The Four Signals at a Glance
Signal | Parameter | Required? | Set by | Available for |
|---|---|---|---|---|
Customer ID | customerId | Required | Retailer | Authenticated users only |
Retailer Visitor ID | retailerVisitorId | Required | Retailer | All visitors |
Hashed Email | hashedEmail | Recommended | Retailer | Authenticated users only |
Criteo ID | Criteo-managed | Default | Criteo (automatic) | Where third-party cookies are available |
Signal Details
Customer ID
Your internal customer relationship management (CRM) identifier for a logged-in user — typically a hashed account or loyalty ID. Because it is consistent across all authenticated sessions and devices, Customer ID is the most reliable signal for cross-device attribution.
Parameter: customerId
Scope: Cross-device
Reliability: High
When to send: Authenticated sessions only.
Only populate this field when the user is logged in. If the user is not authenticated, leave the field empty.
Note: Never send a placeholder value — such as "guest", "0", or "null" — when a user is not logged in. Placeholder values cause distinct shoppers to collapse into a single synthetic identity, which corrupts cross-device matching and distorts performance reporting for brand partners.
Retailer Visitor ID
A first-party cookie value assigned to every site visitor, authenticated or not. It is scoped to the user's browser and device, making it the only signal available for anonymous visitors.
Parameter: retailerVisitorId
Scope: Same device and browser
Reliability: Medium
When to send: Every API call, for all visitors.
Always include retailerVisitorId in every call, regardless of authentication status. Anonymous visitors often represent the majority of your site traffic. Without this signal, most anonymous browse events and ad exposures are unlikely to be matched to purchases — even if those visitors later log in and convert, particularly in environments where Criteo’s own ID or other user identifiers are not available.
Hashed Email
The SHA-256 hash of the authenticated user's email address. It enables cross-retailer identity resolution when the same email is recognized elsewhere in Criteo's network, extending attribution across devices and sessions beyond what Customer ID alone can cover.
Parameter: hashedEmail
Scope: Cross-device and cross-retailer
Reliability: High
When to send: Authenticated sessions only, alongside customerId.
To maximize match rates, prepare all email addresses before hashing: remove leading and trailing spaces, convert to lowercase, and encode in UTF-8.
Criteo ID
A Criteo-managed identifier set automatically by the Criteo tag via Criteo's own identity graph. No configuration is required on your side.
Scope: Cross-device (Criteo identity graph)
Reliability: Medium (dependent on third-party cookie availability)
Criteo ID serves as a fallback when retailer-provided signals are unavailable or do not produce a match.
How Matching Works
Criteo evaluates all available signals in parallel for every ad event and purchase event. When multiple identifiers produce eligible matches, Criteo keeps the best match based on this reliability order:
Customer ID → Hashed Email → Retailer Visitor ID → Criteo ID
If Customer ID is absent or produces no match, the system moves to the next available signal. Attribution is still possible with Retailer Visitor ID or Criteo ID alone — but the match rate and cross-device coverage will be reduced.
What Happens When Signals Are Missing or Incorrect
Issue | Impact on attribution |
|---|---|
customerId is absent | Cross-device and cross-session matches are lost. Authenticated users who see an ad on one device and convert on another will not be matched. Attributed sales are undercounted. |
retailerVisitorId is absent | Anonymous browse events cannot be matched to purchases. Pre-login ad exposures are lost even for users who later authenticate and convert — typically a significant share of your traffic. |
A placeholder is sent for customerId | Distinct shoppers collapse into one synthetic identity. Performance reporting is corrupted and cross-device matching becomes unreliable for all affected users. |
Summary
Accurate identity signal implementation is the foundation of reliable attribution for every brand campaign running on your inventory. Two rules cover the most common issues:
Always send retailerVisitorId for every visitor.
Only send customerId for authenticated users — leave it empty for guest sessions.
Adding hashedEmail for logged-in users further improves match rates and extends attribution cross-retailer.
For full API parameter documentation, visit the Criteo Retailer Integration docs.
To understand how Criteo measures clicks and impressions on your onsite inventory, see Criteo Methodologies for Ad Measurement.
