Skip to content
Scalekit Docs
Talk to an EngineerDashboard

Mixpanel Ingestion connector

Service AccountAnalytics

Connect to Mixpanel's Ingestion API to track events, manage user and group profiles, resolve identities, replace lookup tables, and evaluate feature...

Mixpanel Ingestion connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Register your Mixpanel Ingestion credentials with Scalekit so it can authenticate requests on your behalf. You do this once per environment.

    Dashboard setup steps

    Register your Mixpanel Service Account username and secret with Scalekit so it can authenticate and proxy requests on behalf of your users. Mixpanel uses HTTP Basic Auth — the Service Account username is the username and the secret is the password. There is no redirect URI or OAuth flow.

    1. Find your Mixpanel data residency region

      Mixpanel hosts projects in three separate data residency regions. Before generating a Service Account, confirm which region your project lives in:

      RegionAPI host
      United States (default)mixpanel.com/api
      European Unioneu.mixpanel.com/api
      Indiain.mixpanel.com/api
    2. Create a Service Account

      • Sign in to Mixpanel and go to SettingsProjectService Accounts.

      • Click Add Service Account, give it a name (for example, Agent Auth), and choose a role.

      • Copy the generated Username and Secret immediately — Mixpanel shows the secret only once.

        Mixpanel Add Service Account modal showing the generated Username and Secret fields

    3. Create a connection in Scalekit

      • In the Scalekit dashboard, go to AgentKitConnectionsCreate Connection.
      • Search for Mixpanel Ingestion and click Create.
      • Note the Connection name — use this as connection_name in your code (e.g., mixpanelingestion).
    4. Add a connected account

      Connected accounts link a specific user identifier in your system to a Mixpanel Service Account and region. Add them via the dashboard for testing, or via the Scalekit API in production.

      Via dashboard (for testing)

      • Open the connection and click the Connected Accounts tab → Add account.
      • Fill in Your User’s ID, the Username, Secret, and select the matching Data Residency.
      • Click Save.

      Via API (for production)

      // US region (default) — omit `domain` or set it to 'mixpanel.com/api'
      await scalekit.connect.upsertConnectedAccount({
      connectionName: 'mixpanelingestion',
      identifier: 'user@example.com',
      credentials: {
      username: 'your-service-account-username',
      password: 'your-service-account-secret',
      domain: 'mixpanel.com/api',
      },
      })
      // EU region
      await scalekit.connect.upsertConnectedAccount({
      connectionName: 'mixpanelingestion',
      identifier: 'eu-user@example.com',
      credentials: {
      username: 'your-eu-service-account-username',
      password: 'your-eu-service-account-secret',
      domain: 'eu.mixpanel.com/api',
      },
      })

Connect this agent connector to let your agent:

  • Definitions feature flags — Get the full definitions of every feature flag/experiment configured in a Mixpanel project, including each flag’s variants, rollout rules, and linked experiment
  • Evaluate feature flags — Evaluate all enabled Mixpanel feature flags and experiments for a given user, returning the variant each flag assigns them
  • Update group batch, profile batch — Send a batch of mixed group-profile updates to Mixpanel in a single call, analogous to ‘mixpanelingestion_profile_batch_update’ for user profiles
  • Delete group, profile — Permanently delete a Mixpanel group profile and all of its properties, analogous to ‘mixpanelingestion_profile_delete’ for user profiles
  • Remove group, profile — Remove a specific value from a list-valued property on a Mixpanel group profile, analogous to ‘mixpanelingestion_profile_remove’ for user profiles
  • Set group, profile — Set (overwrite) properties on a Mixpanel group profile (e.g

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

mixpanelingestion_feature_flags_definitions#Get the full definitions of every feature flag/experiment configured in a Mixpanel project, including each flag's variants, rollout rules, and linked experiment. Provide either 'project_token' or 'project_id' to authenticate (project_id uses your Service Account credentials).2 params

Get the full definitions of every feature flag/experiment configured in a Mixpanel project, including each flag's variants, rollout rules, and linked experiment. Provide either 'project_token' or 'project_id' to authenticate (project_id uses your Service Account credentials).

NameTypeRequiredDescription
project_idstringoptionalYour numeric Mixpanel Project ID, used if authenticating with a Service Account. Provide this or 'project_token'.
project_tokenstringoptionalYour Mixpanel Project Token, used if authenticating without a Service Account. Provide this or 'project_id'.
mixpanelingestion_feature_flags_evaluate#Evaluate all enabled Mixpanel feature flags and experiments for a given user, returning the variant each flag assigns them. Provide either 'project_token' or 'project_id' to authenticate (project_id uses your Service Account credentials).3 params

Evaluate all enabled Mixpanel feature flags and experiments for a given user, returning the variant each flag assigns them. Provide either 'project_token' or 'project_id' to authenticate (project_id uses your Service Account credentials).

NameTypeRequiredDescription
contextobjectrequiredJSON object describing the user to evaluate flags for. Must include 'distinct_id'; may include 'device_id' and 'custom_properties' (used for targeting rules). Example: {"distinct_id": "user_00123", "custom_properties": {"plan": "pro"}}.
project_idstringoptionalYour numeric Mixpanel Project ID, used if authenticating with a Service Account. Provide this or 'project_token'.
project_tokenstringoptionalYour Mixpanel Project Token, used if authenticating without a Service Account. Provide this or 'project_id'.
mixpanelingestion_group_batch_update#Send a batch of mixed group-profile updates to Mixpanel in a single call, analogous to 'mixpanelingestion_profile_batch_update' for user profiles. Each item in 'updates' is a fully-formed update object with its own "$token", "$group_key", "$group_id", and one operation key ($set, $set_once, $add, $union, $remove, $unset, or $delete). Example: [{"$token": "...", "$group_key": "Company", "$group_id": "Acme", "$set": {"Plan": "Enterprise"}}].1 param

Send a batch of mixed group-profile updates to Mixpanel in a single call, analogous to 'mixpanelingestion_profile_batch_update' for user profiles. Each item in 'updates' is a fully-formed update object with its own "$token", "$group_key", "$group_id", and one operation key ($set, $set_once, $add, $union, $remove, $unset, or $delete). Example: [{"$token": "...", "$group_key": "Company", "$group_id": "Acme", "$set": {"Plan": "Enterprise"}}].

NameTypeRequiredDescription
updatesarrayrequiredArray of fully-formed group update objects, each with $token, $group_key, $group_id, and one operation key ($set/$set_once/$add/$union/$remove/$unset/$delete).
mixpanelingestion_group_delete#Permanently delete a Mixpanel group profile and all of its properties, analogous to 'mixpanelingestion_profile_delete' for user profiles. This does not delete historical events associated with the group.4 params

Permanently delete a Mixpanel group profile and all of its properties, analogous to 'mixpanelingestion_profile_delete' for user profiles. This does not delete historical events associated with the group.

NameTypeRequiredDescription
group_idstringrequiredThe value identifying this specific group, e.g. the company name or account ID.
group_keystringrequiredThe name of the group key as configured in Mixpanel, e.g. "Company" or "Account ID".
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_group_remove#Remove a specific value from a list-valued property on a Mixpanel group profile, analogous to 'mixpanelingestion_profile_remove' for user profiles. If the value is not present, no change is made.7 params

Remove a specific value from a list-valued property on a Mixpanel group profile, analogous to 'mixpanelingestion_profile_remove' for user profiles. If the value is not present, no change is made.

NameTypeRequiredDescription
group_idstringrequiredThe value identifying this specific group, e.g. the company name or account ID.
group_keystringrequiredThe name of the group key as configured in Mixpanel, e.g. "Company" or "Account ID".
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
removalsobjectrequiredJSON object mapping list-property names to the single value to remove from each. Example: {"Enabled Features": "beta-search"}.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the group profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_group_set#Set (overwrite) properties on a Mixpanel group profile (e.g. a company or team account), analogous to 'mixpanelingestion_profile_set' for user profiles. Creates the group profile if it does not already exist. Requires Group Analytics to be enabled on your Mixpanel project.7 params

Set (overwrite) properties on a Mixpanel group profile (e.g. a company or team account), analogous to 'mixpanelingestion_profile_set' for user profiles. Creates the group profile if it does not already exist. Requires Group Analytics to be enabled on your Mixpanel project.

NameTypeRequiredDescription
group_idstringrequiredThe value identifying this specific group, e.g. the company name or account ID.
group_keystringrequiredThe name of the group key as configured in Mixpanel, e.g. "Company" or "Account ID".
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
propertiesobjectrequiredJSON object of property names and values to set on the group profile, overwriting any existing values. Example: {"Plan": "Enterprise", "Seats": 50}.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the group profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_group_set_once#Set properties on a Mixpanel group profile only if they are not already set — existing values are never overwritten, analogous to 'mixpanelingestion_profile_set_once' for user profiles. Creates the group profile if it does not already exist.7 params

Set properties on a Mixpanel group profile only if they are not already set — existing values are never overwritten, analogous to 'mixpanelingestion_profile_set_once' for user profiles. Creates the group profile if it does not already exist.

NameTypeRequiredDescription
group_idstringrequiredThe value identifying this specific group, e.g. the company name or account ID.
group_keystringrequiredThe name of the group key as configured in Mixpanel, e.g. "Company" or "Account ID".
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
propertiesobjectrequiredJSON object of property names and values to set only if not already present on the group profile. Example: {"First Seen": "2026-01-01"}.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the group profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_group_union#Add values to a list-valued property on a Mixpanel group profile, ensuring each value only appears once, analogous to 'mixpanelingestion_profile_union' for user profiles. Creates the group profile if it does not already exist.7 params

Add values to a list-valued property on a Mixpanel group profile, ensuring each value only appears once, analogous to 'mixpanelingestion_profile_union' for user profiles. Creates the group profile if it does not already exist.

NameTypeRequiredDescription
group_idstringrequiredThe value identifying this specific group, e.g. the company name or account ID.
group_keystringrequiredThe name of the group key as configured in Mixpanel, e.g. "Company" or "Account ID".
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
unionsobjectrequiredJSON object mapping list-property names to arrays of values to add (duplicates are not re-added). Example: {"Enabled Features": ["beta-search", "dark-mode"]}.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the group profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_group_unset#Permanently remove one or more named properties (and their values) from a Mixpanel group profile, analogous to 'mixpanelingestion_profile_unset' for user profiles.7 params

Permanently remove one or more named properties (and their values) from a Mixpanel group profile, analogous to 'mixpanelingestion_profile_unset' for user profiles.

NameTypeRequiredDescription
group_idstringrequiredThe value identifying this specific group, e.g. the company name or account ID.
group_keystringrequiredThe name of the group key as configured in Mixpanel, e.g. "Company" or "Account ID".
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
property_namesarrayrequiredArray of property names to permanently remove from the group profile. Example: ["Trial Ends At"].
ipintegeroptionalSet to 1 to let Mixpanel geolocate the group profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_identity_create#Link an anonymous distinct_id to a known, identified distinct_id by sending a Mixpanel $identify event via /track. Use this the first time you learn a user's real identifier (e.g. after login or signup) so that pre-login and post-login activity is merged onto one profile. Returns the literal text "1" on success or "0" on failure.3 params

Link an anonymous distinct_id to a known, identified distinct_id by sending a Mixpanel $identify event via /track. Use this the first time you learn a user's real identifier (e.g. after login or signup) so that pre-login and post-login activity is merged onto one profile. Returns the literal text "1" on success or "0" on failure.

NameTypeRequiredDescription
anon_idstringrequiredThe anonymous distinct_id that was used before the user was identified (mapped to $anon_id).
identified_idstringrequiredThe known, identified distinct_id to link the anonymous ID to (mapped to $identified_id).
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the event payload to authenticate the request.
mixpanelingestion_identity_create_alias#Create a legacy alias linking a new distinct_id to an existing one by sending a Mixpanel $create_alias event via /track. This is the legacy identity-linking mechanism; for new integrations prefer 'mixpanelingestion_identity_create' ($identify) or 'mixpanelingestion_identity_merge'. Returns the literal text "1" on success or "0" on failure.3 params

Create a legacy alias linking a new distinct_id to an existing one by sending a Mixpanel $create_alias event via /track. This is the legacy identity-linking mechanism; for new integrations prefer 'mixpanelingestion_identity_create' ($identify) or 'mixpanelingestion_identity_merge'. Returns the literal text "1" on success or "0" on failure.

NameTypeRequiredDescription
aliasstringrequiredThe new alias distinct_id to associate with the existing distinct_id.
distinct_idstringrequiredThe existing distinct_id that the alias should resolve to.
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the event payload to authenticate the request.
mixpanelingestion_identity_merge#Merge two distinct_ids into a single identity using Mixpanel's modern Identity Merge API (a $merge event sent through /import, authenticated with your Service Account). All historical events and profile data from both distinct_ids are combined under one identity. Use this instead of the legacy 'mixpanelingestion_identity_create_alias' for new integrations. Requires your Mixpanel project to use 'Original ID Merge' (Project Settings > Identity Merge) — projects on 'Simplified ID Merge' reject $merge events outright ("identity events are not allowed when project is using simplified identity management"); use 'mixpanelingestion_identity_create_alias' instead on those projects.3 params

Merge two distinct_ids into a single identity using Mixpanel's modern Identity Merge API (a $merge event sent through /import, authenticated with your Service Account). All historical events and profile data from both distinct_ids are combined under one identity. Use this instead of the legacy 'mixpanelingestion_identity_create_alias' for new integrations. Requires your Mixpanel project to use 'Original ID Merge' (Project Settings > Identity Merge) — projects on 'Simplified ID Merge' reject $merge events outright ("identity events are not allowed when project is using simplified identity management"); use 'mixpanelingestion_identity_create_alias' instead on those projects.

NameTypeRequiredDescription
distinct_id_1stringrequiredThe first distinct_id to merge (order does not matter).
distinct_id_2stringrequiredThe second distinct_id to merge (order does not matter).
project_idstringrequiredYour numeric Mixpanel Project ID, required to authenticate Service Account requests. Find it in Mixpanel under Project Settings > Overview.
mixpanelingestion_import_events#Import a batch of up to 2000 events into Mixpanel via the modern, Service Account-authenticated /import endpoint. This is Mixpanel's recommended way to send events from a trusted server-side integration (unlike the classic /track endpoint). Each event needs an 'event' name and a 'properties' object containing at minimum 'time' (epoch seconds/ms), 'distinct_id', and '$insert_id' (a unique string used for deduplication). With strict=1 (default, recommended), Mixpanel validates every event and returns per-record errors for any that fail.3 params

Import a batch of up to 2000 events into Mixpanel via the modern, Service Account-authenticated /import endpoint. This is Mixpanel's recommended way to send events from a trusted server-side integration (unlike the classic /track endpoint). Each event needs an 'event' name and a 'properties' object containing at minimum 'time' (epoch seconds/ms), 'distinct_id', and '$insert_id' (a unique string used for deduplication). With strict=1 (default, recommended), Mixpanel validates every event and returns per-record errors for any that fail.

NameTypeRequiredDescription
eventsarrayrequiredArray of event objects to import (max 2000 per call, 10MB uncompressed total). Each object must have 'event' (string) and 'properties' (object) with 'properties.time' (epoch seconds/ms), 'properties.distinct_id', and 'properties.$insert_id' for deduplication, plus any custom properties. Example: [{"event": "Purchased", "properties": {"time": 1719859200, "distinct_id": "user_00123", "$insert_id": "a1b2c3", "amount": 19.99}}]
project_idstringrequiredYour numeric Mixpanel Project ID, required to authenticate Service Account requests. Find it in Mixpanel under Project Settings > Overview.
strictstringoptionalWhen "1" (recommended), Mixpanel validates the whole batch and returns per-event errors for any records that fail. When "0", invalid records are silently dropped.
mixpanelingestion_lookup_table_replace#Replace the entire contents of a Mixpanel Lookup Table with new CSV data. This overwrites all existing rows in the table — use 'mixpanelingestion_lookup_tables_list' first to find the table's id. The first column of the CSV must be the table's key (matching the property it enriches); subsequent columns become additional properties joined onto matching events or profiles.3 params

Replace the entire contents of a Mixpanel Lookup Table with new CSV data. This overwrites all existing rows in the table — use 'mixpanelingestion_lookup_tables_list' first to find the table's id. The first column of the CSV must be the table's key (matching the property it enriches); subsequent columns become additional properties joined onto matching events or profiles.

NameTypeRequiredDescription
csv_datastringrequiredThe full replacement contents of the lookup table as CSV text, including a header row. Example: "id,field1,field2\nkey1,v1,z1\nkey2,z1,z2\n".
project_idstringrequiredYour numeric Mixpanel Project ID, required to authenticate Service Account requests. Find it in Mixpanel under Project Settings > Overview.
table_idstringrequiredThe UUID of the lookup table to replace. Retrieve it with 'mixpanelingestion_lookup_tables_list' or from Lexicon under the lookup table's details.
mixpanelingestion_lookup_tables_list#List the Lookup Tables defined in a Mixpanel project. Returns each table's id and name. Use the id with 'mixpanelingestion_lookup_table_replace' to update a table's contents, or find it in Lexicon under the lookup table's details.1 param

List the Lookup Tables defined in a Mixpanel project. Returns each table's id and name. Use the id with 'mixpanelingestion_lookup_table_replace' to update a table's contents, or find it in Lexicon under the lookup table's details.

NameTypeRequiredDescription
project_idstringrequiredYour numeric Mixpanel Project ID, required to authenticate Service Account requests. Find it in Mixpanel under Project Settings > Overview.
mixpanelingestion_profile_append#Append a value to a list-valued property on a Mixpanel user profile via Engage $append. If the property does not yet exist, it is created as a single-element list. Unlike $union, duplicate values are allowed. Useful for ordered logs like "Recent Searches".6 params

Append a value to a list-valued property on a Mixpanel user profile via Engage $append. If the property does not yet exist, it is created as a single-element list. Unlike $union, duplicate values are allowed. Useful for ordered logs like "Recent Searches".

NameTypeRequiredDescription
appendsobjectrequiredJSON object mapping list-property names to the single value to append to each. Example: {"Recent Searches": "running shoes"}.
distinct_idstringrequiredThe unique identifier of the profile to update.
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_profile_batch_update#Send a batch of mixed user-profile updates to Mixpanel Engage in a single call. Each item in 'updates' is a fully-formed update object with its own "$token", "$distinct_id", and one operation key ($set, $set_once, $add, $union, $append, $remove, $unset, or $delete) — the same shapes used by 'mixpanelingestion_profile_set' etc. Example: [{"$token": "...", "$distinct_id": "u1", "$set": {"Plan": "Pro"}}, {"$token": "...", "$distinct_id": "u2", "$add": {"Coins": 13}}]. Use this to reduce round trips when updating many profiles at once.1 param

Send a batch of mixed user-profile updates to Mixpanel Engage in a single call. Each item in 'updates' is a fully-formed update object with its own "$token", "$distinct_id", and one operation key ($set, $set_once, $add, $union, $append, $remove, $unset, or $delete) — the same shapes used by 'mixpanelingestion_profile_set' etc. Example: [{"$token": "...", "$distinct_id": "u1", "$set": {"Plan": "Pro"}}, {"$token": "...", "$distinct_id": "u2", "$add": {"Coins": 13}}]. Use this to reduce round trips when updating many profiles at once.

NameTypeRequiredDescription
updatesarrayrequiredArray of fully-formed profile update objects, each with $token, $distinct_id, and one operation key ($set/$set_once/$add/$union/$append/$remove/$unset/$delete).
mixpanelingestion_profile_delete#Permanently delete a Mixpanel user profile and all of its properties via Engage $delete. This does not delete the user's historical events, only their profile. If duplicate profiles exist due to identity merging, set 'ignore_alias' to true so you don't accidentally delete the original profile when the distinct_id passed in is actually an alias.5 params

Permanently delete a Mixpanel user profile and all of its properties via Engage $delete. This does not delete the user's historical events, only their profile. If duplicate profiles exist due to identity merging, set 'ignore_alias' to true so you don't accidentally delete the original profile when the distinct_id passed in is actually an alias.

NameTypeRequiredDescription
distinct_idstringrequiredThe unique identifier of the profile to permanently delete.
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
ignore_aliasbooleanoptionalSet to true if the distinct_id may be an alias, to avoid deleting the original profile it resolves to.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_profile_increment#Increment (or decrement, using a negative value) numeric properties on a Mixpanel user profile via Engage $add. The given amounts are added to the existing values; if a property is not yet present it is treated as 0. Useful for counters such as "Number of Logins" or "Files Uploaded".6 params

Increment (or decrement, using a negative value) numeric properties on a Mixpanel user profile via Engage $add. The given amounts are added to the existing values; if a property is not yet present it is treated as 0. Useful for counters such as "Number of Logins" or "Files Uploaded".

NameTypeRequiredDescription
distinct_idstringrequiredThe unique identifier of the profile to update.
incrementsobjectrequiredJSON object mapping property names to numeric amounts to add (use a negative number to decrement). Example: {"Number of Logins": 1, "Credits": -5}.
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_profile_remove#Remove a specific value from a list-valued property on a Mixpanel user profile via Engage $remove. If the value is not present, no change is made. The opposite of 'mixpanelingestion_profile_append'.6 params

Remove a specific value from a list-valued property on a Mixpanel user profile via Engage $remove. If the value is not present, no change is made. The opposite of 'mixpanelingestion_profile_append'.

NameTypeRequiredDescription
distinct_idstringrequiredThe unique identifier of the profile to update.
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
removalsobjectrequiredJSON object mapping list-property names to the single value to remove from each. Example: {"Recent Searches": "running shoes"}.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_profile_set#Set (overwrite) properties on a Mixpanel user profile via Engage $set. Creates the profile if it does not already exist. Use this for properties that should always reflect the latest value, such as "Plan" or "Last Login". For properties that should only be set the first time, use 'mixpanelingestion_profile_set_once' instead.6 params

Set (overwrite) properties on a Mixpanel user profile via Engage $set. Creates the profile if it does not already exist. Use this for properties that should always reflect the latest value, such as "Plan" or "Last Login". For properties that should only be set the first time, use 'mixpanelingestion_profile_set_once' instead.

NameTypeRequiredDescription
distinct_idstringrequiredThe unique identifier of the profile to update.
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
propertiesobjectrequiredJSON object of property names and values to set on the profile, overwriting any existing values. Example: {"Plan": "Pro", "$email": "user@example.com"}.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the profile from the request IP. Recommended to leave at 0 for server-side calls to avoid overwriting the profile's real geolocation with your server's location.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_profile_set_once#Set properties on a Mixpanel user profile via Engage $set_once, but only if they are not already set — existing values are never overwritten. Creates the profile if it does not already exist. Useful for properties like "First Login Date" that should be recorded once and never changed.6 params

Set properties on a Mixpanel user profile via Engage $set_once, but only if they are not already set — existing values are never overwritten. Creates the profile if it does not already exist. Useful for properties like "First Login Date" that should be recorded once and never changed.

NameTypeRequiredDescription
distinct_idstringrequiredThe unique identifier of the profile to update.
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
propertiesobjectrequiredJSON object of property names and values to set only if not already present on the profile. Example: {"First Login Date": "2026-06-01"}.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_profile_union#Add values to a list-valued property on a Mixpanel user profile via Engage $union, ensuring each value only appears once in the resulting list. Creates the profile if it does not already exist. Useful for properties like "Purchased Categories" that accumulate unique values over time.6 params

Add values to a list-valued property on a Mixpanel user profile via Engage $union, ensuring each value only appears once in the resulting list. Creates the profile if it does not already exist. Useful for properties like "Purchased Categories" that accumulate unique values over time.

NameTypeRequiredDescription
distinct_idstringrequiredThe unique identifier of the profile to update.
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
unionsobjectrequiredJSON object mapping list-property names to arrays of values to add (duplicates are not re-added). Example: {"Purchased Categories": ["Books", "Electronics"]}.
ipintegeroptionalSet to 1 to let Mixpanel geolocate the profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_profile_unset#Permanently remove one or more named properties (and their values) from a Mixpanel user profile via Engage $unset. This deletes the properties themselves, not the profile — use 'mixpanelingestion_profile_delete' to delete the whole profile.6 params

Permanently remove one or more named properties (and their values) from a Mixpanel user profile via Engage $unset. This deletes the properties themselves, not the profile — use 'mixpanelingestion_profile_delete' to delete the whole profile.

NameTypeRequiredDescription
distinct_idstringrequiredThe unique identifier of the profile to update.
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). Embedded in the payload to authenticate the request.
property_namesarrayrequiredArray of property names to permanently remove from the profile. Example: ["$email", "Trial Ends At"].
ipintegeroptionalSet to 1 to let Mixpanel geolocate the profile from the request IP. Recommended to leave at 0 for server-side calls.
strictintegeroptionalSet to 1 to have Mixpanel validate the record and return per-record error messages if validation fails.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".
mixpanelingestion_track_event#Send a single event to Mixpanel via the classic /track endpoint, authenticated with your Mixpanel Project Token (not your Service Account). Use this for lightweight, fire-and-forget event tracking. For reliable server-side ingestion with validation and duplicate protection, prefer 'mixpanelingestion_import_events' instead. Returns the literal text "1" on success or "0" on failure unless 'verbose' is set to 1.8 params

Send a single event to Mixpanel via the classic /track endpoint, authenticated with your Mixpanel Project Token (not your Service Account). Use this for lightweight, fire-and-forget event tracking. For reliable server-side ingestion with validation and duplicate protection, prefer 'mixpanelingestion_import_events' instead. Returns the literal text "1" on success or "0" on failure unless 'verbose' is set to 1.

NameTypeRequiredDescription
eventstringrequiredThe name of the event to track, e.g. "Signed up" or "Purchased item".
project_tokenstringrequiredYour Mixpanel Project Token (Project Settings > Overview). This is embedded in the event payload and is how /track authenticates the request — it is not your Service Account.
distinct_idstringoptionalThe unique identifier of the user who performed the event. If omitted and 'ip' is set to 1, Mixpanel derives one from the request IP.
insert_idstringoptionalA unique identifier for this event used for deduplication (mapped to $insert_id). Events with identical (event, time, distinct_id, insert_id) are deduplicated; only the latest is kept. Max 36 bytes, alphanumeric or dash.
ipintegeroptionalSet to 1 to have Mixpanel derive geolocation and distinct_id from the request's IP address. Recommended to leave at 0 for server-side calls to avoid attributing your server's location to the event.
profile_propertiesobjectoptionalAdditional custom event properties to merge into the event's properties object, as a JSON object. Example: {"Plan": "Pro", "Referrer": "google"}.
timeintegeroptionalThe time the event occurred, in seconds or milliseconds since the UTC epoch. If omitted, Mixpanel uses the ingestion time. Future timestamps are overwritten with the current time.
verboseintegeroptionalSet to 1 to receive a JSON object describing success/failure instead of a bare "1"/"0".