Skip to content

Server-side events · Platform reference

Snap Conversions API (v3): events, fields and dedup rules

Snap Conversions API v3 takes batches of web, app and offline events at tr.snapchat.com/v3/{pixel_id or snap_app_id}/events, usually alongside the Snap Pixel. Events arrive but don't attribute when the ScCid click ID and the _scid cookie aren't passed through, when identifiers aren't normalised before hashing, or when the server event_id doesn't match the Pixel's client_dedup_id.

Read from the official documentation on 9 November 2026. Sources are listed at the end.

Endpoint and authentication

POST https://tr.snapchat.com/v3/{PIXEL_ID}/events?access_token={TOKEN}

access_token query parameter: a long-lived token generated on the Business Details page of Ads Manager (visible only to Organization Admins). It can only send events for pixels and apps in the same organisation

Standard event names

Spelled exactly as Snapchat expects them. A near miss is treated as a different event.

EventUse it for
PURCHASEcustom_data.value is required for PURCHASE; validate returns INVALID if price or currency is missing
SIGN_UPsign-up
START_CHECKOUTcheckout started
ADD_CARTadd to cart
ADD_BILLINGbilling info added
VIEW_CONTENTcontent or product view
PAGE_VIEWpage view; the minimal web example
SUBSCRIBEsubscription
SEARCHsearch
SAVEsave
LOGINlogin
SHAREshare
AD_CLICKad click
AD_VIEWad view
CUSTOM_EVENT_1 ... CUSTOM_EVENT_5custom event slots

Required and recommended fields

FieldWhat it needs
event_nameRequired for all web and app events
event_timeEpoch timestamp, second or millisecond granularity; required for web and app events
action_sourceWEB, MOBILE_APP or OFFLINE; required for web and app events
event_source_urlRequired for web events. Passing the full landing URL lets the API pull the click ID out of it
event_idAdvertiser-chosen unique ID. With the Snap Pixel it must match client_dedup_id; send it on all events on all integrations
user_dataHashed and unhashed identifiers (see matchKeys)
custom_data.value + custom_data.currencyvalue and currency (ISO 4217) are both required for PURCHASE
custom_data.order_idOrder identifier; pairs with the Pixel transaction_id for PURCHASE dedup

Match keys and hashing

KeyNormalise and hash
emTrim leading and trailing whitespace and lowercase, then SHA-256 as lowercase hex
phInclude the country code, remove any leading 00 or 0, strip non-numeric characters (spaces, parentheses, +, -), then SHA-256 lowercase hex
fn / lnLowercase, no punctuation, special characters UTF-8 encoded, then SHA-256
ctLowercase, no punctuation or spaces, then SHA-256
stUS: 2-letter lowercase ANSI code; elsewhere lowercase with no punctuation, special characters or spaces; then SHA-256
zpLowercase, no spaces or hyphens; US first 5 digits; UK area/district/sector; then SHA-256
countryLowercase ISO 3166 alpha-2, then SHA-256
geSHA-256
external_idHashing recommended. Loyalty ID, your own first-party cookie ID, etc.
client_ip_addressDo not hash. IP of the device, not your server; IPv4 or IPv6
client_user_agentDo not hash. Recommended for all web and app events
madidDo not hash. Lowercase, keep the hyphens

Click ids

Click idWhere it comes from
sc_click_idThe value of the &ScCid= query parameter Snap appends to the landing URL on an ad click. Do not hash. Snap also asks you to pass the full landing URL
sc_cookie1The _scid first-party cookie the Snap Pixel sets on your domain. Do not hash. Snap 'highly recommends' it to raise match rate

Deduplication

Time limits and batch sizes

How to test before you trust it

Why events arrive but don't attribute

Sources

Platforms change these rules without notice. If a source says something different from this page, the source wins.

Other platforms

All platforms