What Snapchat traffic looks like
The Snap Pixel POSTs JSON to tr.snapchat.com, and its multi-pixel pids array means what looks like one pixel firing can serve several ad accounts.
- Endpoint pattern
- Pixel loads from
sc-static.net/scevent.min.js; events go totr.snapchat.com, withtr6.snapchat.comas an alternate host and some setups routing throughgcp.api.snapchat.com - Transport
- JSON POST: a
ctxobject with page and device context plus areqarray whose entries carrypids, the pixel ID(s) the hit is attributed to; one physical request can serve multiple pixel IDs - Payload
ctxfields:url,ua, screen dimensionssw/sh, SDK versionv, timestampts, page-view counterpv, OS/browser fieldsd_ot,d_os,d_bvs- Key parameters
- Uppercase snake-case event names:
PAGE_VIEW,VIEW_CONTENT,ADD_CART,START_CHECKOUT,PURCHASE,SIGN_UP· documented top-level parameters:currency,price,transaction_id,item_ids,item_category,number_items,search_string,sign_up_method· Advanced Matching email/phone hashes supplied atsnaptr('init', ...)time · session IDu_scsid
A typical event POST, as Event Watcher captures it:
{
"ctx": { "url": "https://example.dk/checkout", "sw": 1512, "sh": 982, "v": "3.4.0", "ts": 1754640000000, "pv": 2 },
"req": [{ "pids": ["a1b2c3…"], "ev": "PURCHASE", "price": 499, "currency": "DKK", "transaction_id": "T-8842" }]
}
Debugging Snapchat with Event Watcher
- The Snap Pixel parser decodes the POST body: the event appears under its uppercase name with pixel ID and SDK version in the overview.
- Documented event parameters (
price,currency,transaction_id,item_ids, and the rest) render as an Event Parameters table, with page and device context in their own groups. - An "All Pixel IDs" row appears under Identity whenever
reqcarries more than onepid, the classic Snapchat surprise made visible. - Undocumented
ctxfields are still shown, unrenamed, in an Other Context group so nothing in the payload is hidden.
Snapchat and consent
Marketing consentThe extension checks Snap Pixel traffic against the marketing consent category. The browser pixel has no consent-mode or cookieless fallback: a tr.snapchat.com POST before marketing consent is flagged as pre-consent or denied and counted as a violation.
Advanced Matching hashes are bound at init, so the very first PAGE_VIEW after script load can already carry hashed email.
On a site that loads the script pre-consent and merely delays track calls, check whether an init-time PAGE_VIEW slipped out anyway.
Common debugging scenarios
PURCHASEarrives without value. Open the event and checkpriceandcurrencyin Event Parameters. Snap requires both for value-based optimization, andpricesent as a locale-formatted string is a recurring breakage.- Numbers in Ads Manager are roughly double. Check the Identity group for "All Pixel IDs": events fanned out to two pixel IDs (old agency account plus current) double-report silently.
- Conversions API dedup questions. Inspect
transaction_idon browser hits and confirm the server sends the same value. - Pixel fires before the banner. The marketing-consent check flags the hit; the reasoning mirrors GA4 fires before consent.
- Full ad-stack review. Sweep Snap alongside the other pixels with audit all tracking pixels and compare which platforms fire on the same user actions.