Criteo
Sync audiences to Criteo for retargeting and prospecting campaigns. Zeotap writes each audience to a contact-list audience segment through Criteo’s Marketing Solutions API (version 2026-07), adding and removing members by hashed email.
Prerequisites
- A Criteo account with API access
- API client credentials (Client ID and Client Secret)
- Your Criteo Advertiser ID
- The API app must have the Audience scopes (
MarketingSolutions_Audience_ReadandMarketingSolutions_Audience_Manage) and the advertiser must have granted it access
Authentication
Criteo uses OAuth 2.0 Client Credentials grant.
- In Criteo, go to Marketing Solutions > API to create API credentials
- Enter your Client ID and Client Secret in Zeotap
Zeotap automatically obtains and refreshes access tokens using these credentials.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Advertiser ID | Text | Yes | Your Criteo advertiser identifier. Example: 12345 |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Audience Name | Text | Yes | Name of the Criteo contact-list audience segment |
| Audience Segment ID | Text | No | Id of an existing contact-list audience segment to write to instead of looking it up by name |
How the segment is chosen
- Audience Segment ID set: Zeotap checks that it is a contact-list segment of your advertiser and writes to it. If it is not — for example an id from Criteo’s retired Audiences API, which is not an audience-segment id — the sync fails with a message saying so, rather than writing somewhere else. Replace it with the segment’s id, or clear it to use the name.
- Otherwise: Zeotap searches the advertiser’s segments for one named exactly Audience Name (case and spaces included) and reuses it. Only when the search finishes without a match does it create a new contact-list segment. If the search fails, or finds two segments with that name, or finds a segment of another type (such as a lookalike), the sync fails instead of creating a duplicate.
With Audience Boost, the boosted members go to a separate segment named <Audience Name>_boosted, found or created the same way.
Supported Operations
Sync Modes: Upsert, Mirror
Audience Sync Modes: Add, Remove, Mirror, Upsert
Features
- Field Mapping: No
- Schema Introspection: No
Match Keys
Criteo matches contact-list members on hashed identifiers. Map raw columns and Zeotap normalizes and hashes them at delivery, or map pre-hashed digests directly:
| Field | Type | Description |
|---|---|---|
email | string | Raw email address — lowercased, trimmed, and SHA-256 hashed before upload (Criteo’s recommended form) |
hashed_email | string | Pre-hashed SHA-256 hex digest of the lowercase, trimmed email |
hashed_email_md5 | string | Pre-hashed MD5 hex digest of the lowercase, trimmed email. Criteo accepts MD5 but recommends SHA-256 — prefer hashed_email when you have both. |
phone | string | Not uploaded — see below |
hashed_phone | string | Not uploaded — see below |
Emails are sent in requests of up to 50,000 identifiers, Criteo’s per-request limit. Rows with no email identifier are not sent and are not counted as failed.
Phone numbers are not uploaded. Criteo accepts phone numbers only for advertisers in India, and hashes them from the E.164 number without the leading +, which differs from the digest Zeotap’s hashed_phone carries.
When both a raw field and its pre-hashed counterpart are mapped, the pre-hashed value wins. Values with the wrong digest shape (SHA-256 not 64-hex, MD5 not 32-hex) are never uploaded — they are dropped (falling back to the raw column if mapped) and counted in the sync run logs. See Match Keys & Identifier Hashing for the full normalization contract, precedence, and validation rules.
Troubleshooting
Client credentials invalid
Verify your Client ID and Client Secret in the Criteo Marketing Solutions API settings. Regenerate credentials if needed.
”is not an audience segment of advertiser”
The Audience Segment ID is not a contact-list segment of this advertiser. Destinations set up before Criteo’s audience-segments API may hold an id from the retired Audiences API. Replace it with the segment id from Criteo, or clear it so the segment is found or created by name.
Updates take hours to show
Criteo processes audience updates twice a day (0h and 12h UTC), and they can take around five hours to reach a live campaign.
Advertiser ID not found
Ensure the Advertiser ID matches your Criteo account. Find it in the Criteo Management Center.