What Braze traffic looks like
The Braze Web SDK batches everything since the last flush into one JSON envelope. Counting requests instead of events undercounts activity.
- Endpoint pattern
- SDK from
js.appboycdn.com(the pre-rebrand Appboy CDN name persists); cluster-specific REST hostssdk.iad-01.braze.comthroughsdk.iad-03.braze.comfor US,sdk.fra-01.braze.eu/sdk.fra-02.braze.eufor EU - Transport
- Data-collection POST to
/api/v3/data/with a JSON envelope batching all events since the last flush: a session start plus two custom events in a single POST is normal - Key parameters
events[]with short type codes asname:sssession start ·sesession end ·ppurchase (product ID, price, currency directly ondata) ·cecustom event (human-readable name atdata.n, the site team's property bag atdata.p) · top-levelapi_key(the app's public SDK key),device_id,sdk_version, and a timestamp- Payload
deviceblock: browser, OS version, resolution, locale, time zone, user agent
A typical data-collection envelope, as Event Watcher captures it:
{
"api_key": "6f2b8c…",
"device_id": "8c41d7…",
"sdk_version": "5.4.0",
"events": [
{ "name": "ss", "time": 1754640000 },
{ "name": "ce", "data": { "n": "Newsletter Signup", "p": { "plan": "free" } } }
]
}
Debugging Braze with Event Watcher
- A dedicated Braze parser unpacks the batch: each event decoded with its type code translated to a human label (Custom Event, Purchase, Session Start, Session End).
- The real event name is pulled from
data.n, and the custom property bag shows as readable data. - API key, device ID, and SDK version surface alongside the device block.
- Every request also gets the cookies section and the consent verdict.
Braze and consent
Marketing consentThe extension checks Braze against marketing consent, a natural fit, since the SDK feeds lifecycle messaging (push, email, in-app) from behavioral data tied to a device and user profile.
A /api/v3/data/ POST with a device_id while the CMP is undecided is marked pre-consent and counted.
Correct setups gate SDK initialization behind the CMP callback, so no Braze traffic appears until the grant.
Batching caveat: a pre-consent SDK may flush queued events after the banner interaction. Check the decoded event timestamps, not just the request time.
Common debugging scenarios
- Custom event missing from a canvas/campaign trigger. Filter to Braze, expand the batch, and check
data.nspelling and the property names indata.pagainst what the campaign trigger expects. - Purchases not attributing. Confirm a
pevent with the right product ID and price is actually in a batch on the confirmation page. - Sessions inflated or fragmented. Watch the cadence of
ss/seevents across a browsing session; SPA route handling and multiple tabs are the usual causes. - Which cluster am I on? Pivot Grouped view by Endpoint to confirm the SDK targets the expected
braze.com/braze.eucluster. An EU site posting to a US cluster is a data-residency finding. - Pre-consent initialization. Walk the page with the CMP undecided and verify no data POSTs occur; compare behavior against other marketing platforms such as Salesforce Marketing Cloud on the same property.