vendor/mixpanel-engage · vendor documented
Mixpanel engage needs $token, $distinct_id, and a profile operation
Not /track. /engage updates user profiles. $token is the project token. $distinct_id must match the id you send on events. Send $set or another documented operator. verbose=1 is recommended so the 200 body is not a silent zero.
A token and distinct_id are not an update
Mixpanel documents an operation object on every record. $set writes properties. The other operators increment, union, unset, or delete.
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 |
|---|---|---|---|---|
verbose |
recommended | Mixpanel documents `verbose=1` so the 200 body says whether the update was accepted. Fix: Send `verbose=1` on `/engage` while you are implementing. | vendor.mixpanel-engage.param.verbose.missingvendor.mixpanel-engage.param.verbose.emptyvendor.mixpanel-engage.param.verbose.invalid |
docs |
strict |
optional | Mixpanel documents `strict=1` so failed records are named in the response. Fix: Send `strict=1` to see per-record validation errors. | vendor.mixpanel-engage.param.strict.emptyvendor.mixpanel-engage.param.strict.invalid |
docs |
ip |
optional | Mixpanel documents `ip=0` on server-side calls so the profile is not geolocated to your server. Fix: Send `ip=0` from a server. | vendor.mixpanel-engage.param.ip.emptyvendor.mixpanel-engage.param.ip.invalid |
docs |
$token |
required | Mixpanel documents `$token` as required. It is the project token. Fix: Send the project token from Mixpanel project settings as `$token`. | vendor.mixpanel-engage.body.$token.missingvendor.mixpanel-engage.body.$token.empty |
docs |
$distinct_id |
required | Mixpanel documents `$distinct_id` as required. It must be the same id you send on events. Fix: Send the same `distinct_id` you use on `/track` for this user. | vendor.mixpanel-engage.body.$distinct_id.missingvendor.mixpanel-engage.body.$distinct_id.empty |
docs |
$set |
optional | Sets profile properties, creating the profile if needed. Mixpanel documents it as required for the profile-set call. | docs | |
$set_once |
optional | Sets profile properties only when they are not already set. | docs | |
$add |
optional | Increments numeric profile properties. | docs | |
$union |
optional | Unions list profile properties. | docs | |
$append |
optional | Appends to list profile properties. | docs | |
$remove |
optional | Removes values from list profile properties. | docs | |
$unset |
optional | Unsets named profile properties. | docs | |
$delete |
optional | Deletes the profile. | docs | |
body.operation_required |
required | The profile update has no operation. Mixpanel documents `$set`, `$set_once`, `$add`, `$union`, `$append`, `$remove`, `$unset`, or `$delete`. Fix: Send `$set` with the properties to write, or another documented engage operator. | vendor.mixpanel-engage.body.operation_required |
docs |
Validate a payload
pixellint validate json @payload.json --rulepack vendor/mixpanel-engage
Try this failing payload in the playground. Mixpanel engage missing a profile operation.
[{"$token":"project-token","$distinct_id":"user-13793"}]
cargo install pixellint
·
npm install pixellint