Skip to main content

Mixpanel integration

Track events, update people profiles, and query funnels and insights on behalf of your clients.

What it does

The Mixpanel integration lets your agency keep client product analytics in sync with the rest of the stack. Connect a client project once and you can stream live events into Mixpanel, batch-import historical data, update people profiles, pull funnel and insights results into downstream workflows, and watch for new events to fire follow-on automations.

Connect a Mixpanel account

  1. In Mixpanel, open Project Settings and switch to the Service Accounts tab.
  2. Create a new Service Account with at least the role required for the actions you plan to run (Member for query-only, Admin for ingestion plus query). Copy the username and the secret. Mixpanel only shows the secret once.
  3. From Project Settings, Overview, copy the numeric Project ID.
  4. Open the client workspace in TaskJuice, go to Connections, choose Mixpanel, and paste the username, secret, and Project ID.
  5. Leave the host fields at their defaults for US projects, or set them to api-eu.mixpanel.com and eu.mixpanel.com for EU data residency.

Service Accounts and Project Tokens can be rotated at any time from Mixpanel Project Settings.

Triggers

Events Recorded

mixpanel/events-recorded watches one Mixpanel event and emits a single activation per poll cycle wrapping every new event in an items array. Drop a Loop node downstream to process each event individually, or feed the array straight into a digest action.

Three fields to fill in:

  • Event name — the event to watch, spelled exactly as it appears in your Mixpanel project (for example, Signed Up). Required: this trigger watches one named event, not everything.
  • Project ID — the numeric Project ID from Project Settings, Overview. You enter it here as well as on the connection, because a trigger reads only its own configuration.
  • Export host — pick the Raw Data Export host matching your project's data residency. Set it to match the region you chose when connecting: a US project uses data.mixpanel.com, an EU project (api-eu.mixpanel.com / eu.mixpanel.com on the connection) uses data-eu.mixpanel.com, and an India project uses data-in.mixpanel.com. Mixpanel rejects a cross-region request with a 403, so a mismatched host returns nothing.

How the window works. Each cycle re-reads today and yesterday in UTC and skips every event it has already sent. Two things follow from that, and both are the point:

  • An event that shows up late — ordinary ingestion lag, or one recorded just before midnight — is still picked up on the next cycle rather than being missed forever.
  • The same event is never sent twice, because each one is matched on its Mixpanel $insert_id.

How much volume it can carry. Watch an event recording up to about 500 events a day. Above that, this trigger starts missing events — it does not merely repeat them. The number behind it is TaskJuice's own ceiling of 1,000 events per cycle: once a two-day window holds more than that, the events beyond the ceiling are not emitted, and which ones survive is not defined. If your event is busier than that, watch a narrower event name rather than raising the cap.

The first cycle is quiet on purpose. Publishing a workflow records the current window without emitting, so you do not get two days of history the moment you turn it on. The first real activation is the first event recorded after publishing.

Actions

  • mixpanel/track-event sends a single event to the ingestion endpoint, ideal for low-volume realtime tracking. Include your Project Token as properties.token in the event payload — the connection's optional Project Token field is not sent for you.
  • mixpanel/import-events batch-imports up to two thousand historical events per request using Service Account authentication, with optional strict validation.
  • mixpanel/update-profile sets or updates properties on a user profile via the Engage endpoint, with support for $set, $set_once, $add, $append, $union, and $unset.
  • mixpanel/query-events returns aggregated counts for one or more events across a chosen date range and bucket unit.
  • mixpanel/list-funnels lists every saved funnel in the connected project so workflows can pick one by ID.
  • mixpanel/query-insights fetches the result of a saved Insights report by bookmark ID.

Known limitations

  • Mixpanel does not deliver webhooks. New events surface through polling on the configured interval (default fifteen minutes, floor of five minutes per the Raw Data Export rate limits).
  • The Events Recorded trigger watches one named event at a time, and only up to about 500 events a day for that name. Beyond that it misses events rather than repeating them (see Triggers above). Use a second trigger for a second event name.
  • Mixpanel does not deduplicate its raw data exports, so the trigger matches on $insert_id to avoid re-sending an event the window re-reads. An event sent to Mixpanel without an $insert_id gets one assigned automatically.
  • The Query API enforces a default ceiling of around sixty queries per hour per Service Account, with a hard cap on concurrent queries. When a 429 is returned, TaskJuice surfaces it as a retryable rate-limit error and respects the recommended backoff.
  • The Raw Data Export API exposes events from the past five years; older events are not available via this surface.
  • EU-resident projects must use the api-eu.mixpanel.com and eu.mixpanel.com hosts on the connection, and data-eu.mixpanel.com as the trigger's Export host. Cross-region requests are rejected by Mixpanel with a 403.
  • Each Service Account is scoped to a single project. Workflows that span multiple Mixpanel projects need one connection per project.
Was this helpful?