What Facebook traffic looks like
The Meta Pixel sends image-style hits to /tr, with the pixel ID and event name identifying every request.
- Endpoint pattern
facebook.com/tr(orfacebook.net/tr); the SDK itself loads fromconnect.facebook.net/en_US/fbevents.js- Transport
- Image-style GET requests with everything in the query string
- Key parameters
idnumeric pixel ID ·evevent name (PageView,ViewContent,AddToCart,Purchase, or custom) ·cdbusiness data as a JSON blob (cd={"currency":"DKK","value":"499"}) or bracket notation (cd[currency]=DKK&cd[content_ids]=...) ·dl/rl/ifdocument location, referrer, iframe flag- Identity
ud[em]/ud[ph]/ud[fn]Advanced Matching fields: SHA-256 hashes of email, phone, and name ·eidevent ID deduplicating browser hits against Conversions API server events ·coo=truemarks a cookie-suppressed pixel- Cookies
fbpcarries the_fbpcookie value, Meta's first-party browser ID;fbccarries the click-ID cookie built from thefbclidquery parameter on ad landing pages
Debugging Facebook with Event Watcher
- Ships a dedicated Meta Pixel parser: each
/trhit appears in the stream under itsevname. - The detail view decodes the request: pixel ID, browser ID, and click ID in the overview;
cdcustom data reconstructed into a nested table (both JSON and bracket formats); Advanced Matching hashes grouped under Identity; page context and SDK metadata under Parsed Data. - The Cookies section shows
_fbpand_fbcbeing set and sent per hit. - The Grouped view's Identity pivot collects everything keyed to the same
fbpvalue.
Facebook and consent
Marketing consentEvent Watcher checks Meta Pixel hits against marketing consent.
The pixel has no equivalent of Google Consent Mode (no cookieless ping variant), so any /tr request before the CMP grants marketing consent is a real data transmission, marked pre-consent or denied and counted.
Sites that gate the pixel correctly either delay the fbevents.js load through their tag manager or call fbq('consent', 'revoke') until consent arrives. A hit carrying ud hashes before consent is the more serious variant: hashed PII left the browser.
Common debugging scenarios
- Purchase fires but Events Manager shows no value. Open the hit and check the
cdtable forvalueandcurrency. A common failure iscd[value]arriving as a formatted string ("1.299,00") instead of a plain number. - Deduplication with Conversions API is not working. Compare the
eidon the browser hit with theevent_idyour server sends; the extension showseidunder Request data on every event. - The pixel fires before the cookie banner is answered. See GA4 fires before consent for the same diagnosis pattern. The marketing-consent check flags the offending
/trhits directly. - Nobody knows what loads the pixel. The Script Tree view shows whether
fbevents.jswas loaded by GTM, another tag manager, or a hardcoded snippet, and which events it sent. - Duplicate PageView events. Group by Event Name and check whether two pixel IDs fire on the same page. Agency pixel plus in-house pixel is the usual cause.