Mixpanel as a destination

Send survey events from getuserfeedback.com into Mixpanel so responses live alongside your product analytics.

Last reviewed

Mixpanel as a destination

Use this when survey responses should land in Mixpanel alongside your product events.

Every survey response and survey lifecycle event arrives in Mixpanel as a track call against the same distinct_id Mixpanel already knows for the user.

1. Get a Mixpanel project token

  1. In Mixpanel, open Settings → Project Settings.
  2. Copy the Project Token.
  3. Note your project's region:
    • US (default): https://api.mixpanel.com
    • EU: https://api-eu.mixpanel.com
    • India: https://api-in.mixpanel.com

2. Create the integration

  1. Open Integrations and click New integration.
  2. Under Data out, choose Mixpanel.
  3. Click Continue.
  4. On the detail page, paste the Project Token.
  5. Pick the Destination endpoint for your project's region.
  6. Click Save configuration.

Survey events start flowing on the next response.

Event payload

We emit three flow lifecycle events:

Event nameWhen it fires
Flow ViewedA survey was shown to a user.
Flow DismissedThe user dismissed a survey without submitting.
Response SubmittedThe user submitted a response.

You can rename or disable each event in the Events section of the integration detail page — match your own naming convention (e.g. survey_responded), or turn off events you don't want forwarded.

Each enabled event arrives in Mixpanel as a track call:

{"event": "Response Submitted","properties": {"token": "<your project token>","distinct_id": "user_123","$insert_id": "evt_…","time": 1747130040,"response_id": "resp_…","survey_id": "srv_…","app_id": "app_…","organization_id": "org_…","traits": { "email": "user@example.com" }}}

$insert_id is set per event so Mixpanel can dedupe replays. Don't strip it in a proxy.

See Events for more on the event shape and how to send your own.

Properties we send

The Mixpanel payload has event at the top level and the rest inside properties:

PropertyAlways sent?Notes
tokenAlwaysThe project token from your integration.
distinct_idAlwaysThe user identifier resolved by getuserfeedback.com.
$insert_idAlwaysStable per event. Mixpanel uses it for dedupe.
timeAlwaysUnix seconds when the event occurred.
app_idAlwaysYour app identifier.
organization_idAlwaysYour organization identifier.
survey_idWhen availableThe survey the event relates to.
response_idWhen availableThe response the event relates to (set on Response Submitted).
traitsWhen availableProfile traits known at the time, e.g. email.
identitiesAlwaysThe identifiers we resolved against.
referencesAlwaysInternal references for tying the event back to other surfaces.
page_pathWhen availablePage the event happened on.
page_referrerWhen availableReferrer at the time of the event.
localeWhen availableBrowser locale, e.g. en-US.

Identity

distinct_id is taken from the user's resolved userId, or anonymousId if no userId is known yet. If you also use the getuserfeedback.com widget on the same product, the same distinct_id is used everywhere, so events land on the existing Mixpanel user profile instead of creating a new one.

Delivery and retries

If Mixpanel returns a retryable error (5xx, 429, or a transient network failure), we retry the event with exponential backoff: 1 minute, 2, 4, 8, 16, 32, 64 minutes, then a final attempt up to 6 hours later. After 8 attempts an event stops retrying.

Permanent errors (4xx like an invalid Project Token) fail immediately without retries. Each event has a stable $insert_id, so Mixpanel dedupes retries within its 7-day window.

What can break

  • 401 from Mixpanel. The Project Token is wrong or belongs to a different project. Copy it again from Mixpanel Project Settings.
  • No events in Live View. Wrong region. Pick the endpoint that matches your project's region — Mixpanel does not forward traffic across regions.
  • Integration paused. Paused integrations don't deliver. Resume from Integrations.
  • Events look duplicated. Mixpanel dedupes on $insert_id for seven days; older replays can create duplicates. We set $insert_id automatically per event — preserve it through any relay.

Next