pixellint

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

Hosts
api2.branch.io
Paths
…/v2/event/standard…, …/v2/event/custom…
Vendor docs
help.branch.io/developers-hub/reference/events-api

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.missing
vendor.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.missing
vendor.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