vendor/mixpanel-import · vendor documented
Mixpanel import needs time, distinct_id, and $insert_id
Not /track. /import is a batch of events with no properties.token. time is required Unix seconds or milliseconds. $insert_id is required so a retry is not counted twice. strict=1 is recommended so failed events are named in the response.
$insert_id is required on import
Track recommends it. Import rejects the event without it. Mixpanel uses it to drop duplicates.
Rule: vendor.mixpanel-import.body.properties.$insert_id.empty
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 |
|---|---|---|---|---|
strict |
recommended | Mixpanel documents `strict=1` so the batch is validated and failed events are named in the response. Fix: Send `strict=1` on `/import`. | vendor.mixpanel-import.param.strict.missingvendor.mixpanel-import.param.strict.emptyvendor.mixpanel-import.param.strict.invalid |
docs |
event |
required | Mixpanel documents the event name as required on every imported event. Fix: Name the event, such as `Signup`. | vendor.mixpanel-import.body.event.missingvendor.mixpanel-import.body.event.empty |
docs |
properties |
required | Mixpanel documents the properties object as required. `time`, `distinct_id`, and `$insert_id` ride inside it. Fix: Add a `properties` object carrying `time`, `distinct_id`, and `$insert_id`. | vendor.mixpanel-import.body.properties.missing |
docs |
properties.time |
required | Mixpanel documents `time` as required Unix seconds or milliseconds since epoch. Fix: Send seconds or milliseconds since epoch, as an integer. | vendor.mixpanel-import.body.properties.time.missingvendor.mixpanel-import.body.properties.time.emptyvendor.mixpanel-import.body.properties.time.invalid |
docs |
properties.distinct_id |
required | Mixpanel documents `distinct_id` as required. An empty string is allowed for events that are not tied to a user. Fix: Send the same `distinct_id` you use elsewhere for this user, or an empty string when there is no user. | vendor.mixpanel-import.body.properties.distinct_id.missing |
docs |
properties.$insert_id |
required | Mixpanel documents `$insert_id` as required so `/import` can be retried without double-counting. Fix: Send a unique id per event, at most 36 alphanumeric or hyphen characters. | vendor.mixpanel-import.body.properties.$insert_id.missingvendor.mixpanel-import.body.properties.$insert_id.empty |
docs |
Validate a payload
pixellint validate json @payload.json --rulepack vendor/mixpanel-import
Try this failing payload in the playground. Mixpanel import missing $insert_id.
[{"event":"Signup","properties":{"time":1618716477000,"distinct_id":"user-1","$insert_id":""}}]
cargo install pixellint
·
npm install pixellint