vendor/branch · vendor documented
Branch Events API payloads
Standard and custom events on api2.branch.io. The pack contracts the event payload Branch documents, not the deep-link redirect.
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 |
|---|---|---|---|---|
branch_key |
required | It is the Branch Key for the application, and the Events API requires it. Fix: Send the Branch Key from Account settings or Configuration, Security and Access. | vendor.branch.body.branch_key.missingvendor.branch.body.branch_key.empty |
docs |
name |
required | It is the event name. On `/v2/event/standard` it must be a documented Branch standard event; `/v2/event/custom` accepts any name. Fix: Set `name` to a standard event such as `PURCHASE`, or post a custom name to `/v2/event/custom`. | vendor.branch.body.name.missingvendor.branch.body.name.empty |
docs |
user_data |
required | Branch requires a `user_data` object with device and identity fields. Fix: Add `user_data` with at least one documented identifier. | vendor.branch.body.user_data.missing |
docs |
user_data.ip |
optional | It is the device IP address where the event occurred, sent unhashed. Fix: Send the device IP, not a digest. | vendor.branch.body.user_data.ip.empty |
docs |
user_data.developer_identity |
optional | Developer-specified identity for the user. Branch requires at least one documented identifier in `user_data`. | vendor.branch.body.user_data.developer_identity.empty |
docs |
user_data.browser_fingerprint_id |
optional | Branch browser fingerprint. One of the identifiers that can satisfy the identity requirement. | vendor.branch.body.user_data.browser_fingerprint_id.empty |
docs |
user_data.idfa |
optional | iOS advertising ID. Branch requires it together with `os=iOS` when it is the identifier in use. | vendor.branch.body.user_data.idfa.empty |
docs |
user_data.idfv |
optional | iOS vendor ID. Branch requires it together with `os=iOS` when it is the identifier in use. | vendor.branch.body.user_data.idfv.empty |
docs |
user_data.android_id |
optional | Android hardware ID. Branch requires it together with `os=Android` when it is the identifier in use. | vendor.branch.body.user_data.android_id.empty |
docs |
user_data.aaid |
optional | Android advertising ID. Branch requires it together with `os=Android` when it is the identifier in use. | vendor.branch.body.user_data.aaid.empty |
docs |
body.user_needs_an_identifier |
required | `user_data` carries none of the identifiers Branch requires. At least one of `developer_identity`, `browser_fingerprint_id`, `idfa`, `idfv`, `android_id`, or `aaid` must be present. Fix: Send `user_data.developer_identity`, or a platform advertising ID such as `idfa` or `aaid`. | vendor.branch.body.user_needs_an_identifier |
docs |
body.hashed_plaintext_field |
required | `user_data.ip` looks like a SHA-256 digest, but Branch documents it as the device IP address, unhashed. Fix: Send the raw IP address. | vendor.branch.body.hashed_plaintext_field |
docs |
Validate a payload
pixellint validate json @payload.json --rulepack vendor/branch
Or paste it into the playground. Same engine, in the browser, nothing sent anywhere.
cargo install pixellint
·
npm install pixellint