vendor/braze · vendor documented
Braze user track wants ISO 8601, not epoch
events[].time and purchases[].time are ISO 8601 datetimes. An epoch number fails the contract. Every event and purchase needs one of external_id, user_alias, braze_id, email, or phone.
A purchase also needs product_id, an ISO 4217 currency code, and price. A symbol like $ is not a currency code.
What this pack matches
Rules
Codes are stable. A finding in CI, MCP, or the playground lands on the same id.
| Field | Required | What it checks | Rule ids | Source |
|---|---|---|---|---|
external_id |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.external_id.empty |
docs |
user_alias |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.user_alias.empty |
docs |
braze_id |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.braze_id.empty |
docs |
email |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.email.empty |
docs |
phone |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.phone.empty |
docs |
name |
required | Braze documents the event name as required. Fix: Name the custom event. | vendor.braze.body.name.missingvendor.braze.body.name.empty |
docs |
time |
required | Braze documents the event time as an ISO 8601 datetime, such as `2026-07-26T06:00:00+00:00`. Fix: Send an ISO 8601 datetime rather than an epoch number. | vendor.braze.body.time.missingvendor.braze.body.time.emptyvendor.braze.body.time.invalid |
docs |
body.event_needs_an_identifier |
required | The object carries none of `external_id`, `user_alias`, `braze_id`, `email`, or `phone`. Braze documents one of them as required, and cannot attach the data to a user without one. Fix: Add one of the documented identifiers to the object. | vendor.braze.body.event_needs_an_identifier |
docs |
external_id |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.external_id.empty |
docs |
user_alias |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.user_alias.empty |
docs |
braze_id |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.braze_id.empty |
docs |
email |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.email.empty |
docs |
phone |
optional | Braze documents one of external_id, user_alias, braze_id, email, or phone as required on every object. | vendor.braze.body.phone.empty |
docs |
product_id |
required | Braze documents the product id as required on a purchase. | vendor.braze.body.product_id.missingvendor.braze.body.product_id.empty |
docs |
currency |
required | Braze documents the currency as required on a purchase, as an ISO 4217 code. Fix: Use the three-letter code, such as `USD`. | vendor.braze.body.currency.missingvendor.braze.body.currency.emptyvendor.braze.body.currency.invalid |
docs |
price |
required | Braze documents the price as required on a purchase. | vendor.braze.body.price.missing |
docs |
time |
required | Braze documents the purchase time as an ISO 8601 datetime. Fix: Send an ISO 8601 datetime rather than an epoch number. | vendor.braze.body.time.missingvendor.braze.body.time.emptyvendor.braze.body.time.invalid |
docs |
body.purchase_needs_an_identifier |
required | The object carries none of `external_id`, `user_alias`, `braze_id`, `email`, or `phone`. Braze documents one of them as required, and cannot attach the data to a user without one. Fix: Add one of the documented identifiers to the object. | vendor.braze.body.purchase_needs_an_identifier |
docs |
Validate a payload
pixellint validate json @payload.json --rulepack vendor/braze
Or paste it into the playground. Same engine, in the browser, nothing sent anywhere.
cargo install pixellint
·
npm install pixellint