vendor/mixpanel · vendor documented
Mixpanel's project token rides inside properties
The track endpoint posts a JSON array, not an envelope. There is no top-level api_key. The project token is properties.token on every event. A payload shaped like PostHog or Amplitude will not match this pack, and a Mixpanel-shaped payload with no token is an error.
token is properties.token
Not the HTTP header, not a root field. Mixpanel documents it inside the event properties object.
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 |
|---|---|---|---|---|
event |
required | Mixpanel documents the event name as required. Fix: Name the event, such as `Signed Up`. | vendor.mixpanel.body.event.missingvendor.mixpanel.body.event.empty |
docs |
properties |
required | Mixpanel documents the properties object as required, since the project token rides inside it. Fix: Add a `properties` object carrying at least `token`. | vendor.mixpanel.body.properties.missing |
docs |
properties.token |
required | It is the project token the event is attributed to. Fix: Send the project token from your Mixpanel project settings. | vendor.mixpanel.body.properties.token.missingvendor.mixpanel.body.properties.token.empty |
docs |
properties.distinct_id |
optional | It identifies the user who performed the event. Without it the event is not tied to a person. Fix: Send the same `distinct_id` you use elsewhere for this user. | vendor.mixpanel.body.properties.distinct_id.empty |
docs |
properties.$insert_id |
optional | Mixpanel uses it to drop duplicates, so a retried request is not counted twice. Fix: Send a stable id per event. | vendor.mixpanel.body.properties.$insert_id.empty |
docs |
Validate a payload
pixellint validate json @payload.json --rulepack vendor/mixpanel
Or paste it into the playground. Same engine, in the browser, nothing sent anywhere.
cargo install pixellint
·
npm install pixellint