I’m trying to send backend events to an EU Residency Mixpanel project. I’m using: POST https://api-eu.mixpanel.com/track?verbose=1&ip=0 with headers:
Content-Type: application/json
Accept: application/json
and raw JSON body:
{
"event": "Test Event",
"properties": {
"token": "MY_PROJECT_TOKEN",
"distinct_id": "test-user-1"
}
}But I always get:
{
"error": "data, missing or empty",
"status": 0
}I get the same error even with hardcoded values and even with an intentionally wrong token. Frontend JS tracking works fine, so this seems isolated to backend ingestion. Can you confirm the correct EU backend tracking endpoint and whether /track expects raw JSON or a data= field?
I’m trying to send server-side events to an EU Residency project from Bubble backend and also tested directly in Postman. My project is on EU Residency, so I’m sending to: POST https://api-eu.mixpanel.com/track?verbose=1&ip=0 I tested with:
Content-Type: application/json
Accept: application/json
raw JSON body
Body used:
{
"event": "Test Event",
"properties": {
"token": "MY_PROJECT_TOKEN",
"distinct_id": "test-user-1"
}
}I also tested with hardcoded values only, no dynamic placeholders, and I get:
{
"error": "data, missing or empty",
"status": 0
}I get the same error even if I intentionally use the wrong project token, which makes me think the request body is not being parsed at all. On the frontend, Mixpanel JS is working correctly in Bubble:
EU endpoint configured
events are being tracked
identify() works
setup verification passed
So the problem seems isolated to backend/server-side event ingestion. Can you confirm: whether api-eu.mixpanel.com/track is the correct endpoint for server-side event tracking for EU projects, whether raw JSON body with top-level event and properties is still the correct format,
whether /track expects raw JSON or a data= field for this endpoint,
and whether there is any EU-specific difference for backend event ingestion?
