Mixpanel (Actions) Destination
Additional versions of this destination are available
This page is about the Mixpanel (Actions) Destination. See below for information about other versions of the Mixpanel destination:
Mixpanel enables you to build better products through powerful, self-serve product analytics to help you convert, engage, and retain more users.
Benefits of Mixpanel (Actions) vs Mixpanel Classic
Mixpanel (Actions) provides the following benefits over the classic Mixpanel destination:
- Simpler setup - Mixpanel (Actions) has a streamlined default setup process making it easier to get started in a way that “just works”.
- More control - Actions-based destinations enable you to define the mapping between the data Segment receives from your source, and the data Segment sends to the destination.
- Additional default property mappings - More default mappings from the Segment context like app name, app namespace, device type, and more.
- Improved Groups support - Implementation of Segment Groups with Mixpanel Group Analytics is easier. If you’re already using Segment Groups, no code changes are required.
- E-commerce mappings - Mixpanel (Actions) accepts products nested within arrays in the
Order Completed
event as described in the Segment ecommerce spec. - Batching Requests - If you have a lot of events, Mixpanel (Actions) provides more efficient way to receive and process those large sets of data.
Getting started
- Go to your Mixpanel project settings. Copy the Mixpanel API Key and API Secret for your project.
- From the Segment web app, click Catalog, then click Destinations.
- Find the Destinations Actions item in the left navigation, and click it.
- Click the “Mixpanel” item to select it and click Configure.
- Choose which of your sources to connect the destination to. (You can connect more sources to the destination later.)
Connection Modes for Mixpanel (Actions) destination
The Mixpanel (Actions) destination does not offer a device-mode connection mode. If you’re using one of Segment’s new libraries (Analytics.js 2.0, Swift or Kotlin) with the Actions-framework version of the destination, you do not need the device-mode connection.
Destination Settings
Setting | Description |
---|---|
Data Residency | Learn about EU data residency |
Secret Key | Required. Mixpanel project secret. |
Project Token | Required. Mixpanel project token. |
Source Name | This value, if it’s not blank, will be sent as segment_source_name to Mixpanel for every event/page/screen call. |
Strict Mode | This value, if it’s 1 (recommended), Mixpanel will validate the events you are trying to send and return errors per event that failed. Learn more about the Mixpanel Import Events API |
Available Presets
Mixpanel (Actions) has the following presets:
Preset Name | Trigger | Default Action |
---|---|---|
Order Completed Calls | Event type = "track" and event = "Order Completed" |
Track Purchase |
Track Calls | Event type = "track" and event != "Order Completed" |
Track Event |
Screen Calls | Event type = "screen" |
Track Event |
Identify Calls | Event type = "identify" |
Identify User |
Page Calls | Event type = "page" |
Track Event |
Group Calls | Event type = "group" |
Group Identify User |
Available Actions
Build your own Mappings. Combine supported triggers with the following Mixpanel-supported actions:
Mapping limits per destination
Individual destination instances have support a maximum of 50 mappings.
Alias
Create an alias to a distinct id. This action is primarily supported for the sake of customers using the legacy identity management in their Mixpanel project. For new customers or those who have migrated to the new identity management in Mixpanel should use identify
.
Alias is a Cloud action.
Field | Description |
---|---|
Alias | Type: STRING A new distinct id to be merged with the original distinct id. Each alias can only map to one distinct id. |
Distinct ID | Type: STRING A distinct id to be merged with the alias. |
Group Identify User
Updates or adds properties to a group profile. The profile is created if it does not exist. Learn more about Group Analytics.
Group Identify User is a Cloud action. The default Trigger is: type = "group"
Field | Description |
---|---|
Group Key | Type: STRING The group key you specified in Mixpanel under Project settings. If this is not specified, it will be defaulted to “$group_id”. |
Group ID* | Type: STRING The unique identifier of the group. If there is a trait that matches the group key, it will override this value. |
Group Properties | Type: OBJECT The properties to set on the group profile. |
In the default configuration, Mixpanel (Actions) triggers this action when it receives a Group call.
Group Analytics is available as an add-on package to customers on Growth and Enterprise plans.
This action sets or updates the properties of specific groups. Use this when you want to update properties on a group profile.
The Groups model in Segment is slightly different than in Mixpanel. To explain the conceptual difference, it may help to think in terms of database tables. In Segment, there is a single “groups” table. You can have as many group rows as you want and each row has a unique identifier. When you want to set traits on that group, you only need to know the group id.
However, in Segment you cannot distinguish between “types” of groups. For example, a user can belong to a “Company” as well as a “Team”. There is no way to differentiate between those in Segment. In Mixpanel, you can have multiple group types which are defined by a group key
. To update group traits in Mixpanel you need to specify the group key
and group id
.
Default group key
By default, the Mixpanel (Actions) destination uses $group_id
as the group key. Create a new group in Mixpanel with $group_id
as the group key to complete the configuration.
- Go to your Mixpanel project settings
- Scroll to the “Group Keys” section. If this section doesn’t exist, you may not have the Group Analytics add-on.
- Create the new group key:
Using a different group key
If you already have a group set up in Mixpanel with a different group key and wish to use that one, you can specify it in the Group Key
field of the destination configuration.
Backwards-compatibility with Mixpanel Classic destination
In the classic destination, the “group id” specified in the Segment SDK call was ignored and you were required to set a trait where the key of the trait is the group key and the value of that trait is the group id. While that is no longer necessary, this behavior is supported in the Mixpanel (Actions) destination to ensure backwards-compatibility. If you specify a trait that matches specified group key, Mixpanel uses the value of that trait as the group id.
Scenario 1: No group key trait specified
analytics.group("0e8c78ea9d97a7b8185e8632", {
name: "Initech",
industry: "Technology",
employees: 329,
plan: "enterprise",
"total billed": 830
});
The group id that Mixpanel will use is 0e8c78ea9d97a7b8185e8632
.
Scenario 2: Group key trait IS specified
analytics.group("0e8c78ea9d97a7b8185e8632", {
$group_id: "12345",
name: "Initech",
industry: "Technology",
employees: 329,
plan: "enterprise",
"total billed": 830
});
The group id that Mixpanel will use is 12345
.
The below special traits will be mapped to Mixpanel reserved properties automatically to fit Mixpanel’s use cases. traits.name
-> $name
.
Track Event
Send an event to Mixpanel. Learn more about Events in Mixpanel
Track Event is a Cloud action. The default Trigger is: type = "track"
Field | Description |
---|---|
Event Name* | Type: STRING The name of the action being performed. |
Distinct ID | Type: STRING A distinct ID specified by you. |
Anonymous ID | Type: STRING A distinct ID randomly generated prior to calling identify. |
User ID | Type: STRING The distinct ID after calling identify. |
Group ID | Type: STRING The unique identifier of the group that performed this event. |
Insert ID | Type: STRING A random id that is unique to an event. Mixpanel uses $insert_id to deduplicate events. |
Timestamp | Type: DATETIME The timestamp of the event. Mixpanel expects epoch timestamp in millisecond or second. Please note, Mixpanel only accepts this field as the timestamp. If the field is empty, it will be set to the time Mixpanel servers receive it. |
App Name | Type: STRING The name of your application. |
App Namespace | Type: STRING The namespace of your application. |
App Build | Type: STRING The current build of your application. |
App Version | Type: STRING The current version of your application. |
OS Name | Type: STRING The name of the mobile operating system or browser that the user is using. |
OS Version | Type: STRING The version of the mobile operating system or browser the user is using. |
Device ID | Type: STRING A unique identifier for the device the user is using. |
Device Type | Type: STRING The type of the user’s device. |
Device Name | Type: STRING The name of the user’s device. |
Device Manufacturer | Type: STRING The device manufacturer that the user is using. |
Device Model | Type: STRING The device model that the user is using. |
Bluetooth Enabled | Type: BOOLEAN Whether bluetooth is enabled. |
Carrier | Type: STRING The carrier that the user is using. |
Cellular Enabled | Type: BOOLEAN Whether cellular is enabled. |
Wifi | Type: BOOLEAN Set to true if user’s device has an active, available Wifi connection, false if not. |
Country | Type: STRING The current country of the user. |
Region | Type: STRING The current region of the user. |
Language | Type: STRING The language set by the user. |
Library Name | Type: STRING The name of the SDK used to send events. |
Library Version | Type: STRING The version of the SDK used to send events. |
IP Address | Type: STRING The IP address of the user. This is only used for geolocation and won’t be stored. |
Identifier For Advertiser (IDFA) | Type: STRING Identifier for Advertiser. (iOS) |
URL | Type: STRING The full URL of the webpage on which the event is triggered. |
Screen width | Type: NUMBER Width, in pixels, of the device screen. |
Screen height | Type: NUMBER Height, in pixels, of the device screen. |
Screen density | Type: NUMBER Pixel density of the device screen. |
Referrer | Type: STRING Referrer url |
User Agent | Type: STRING User agent |
Advertising ID | Type: STRING Advertising ID |
Ad Tracking Enabled | Type: STRING Ad Tracking Enabled (true or false) |
Timezone | Type: STRING The event timezone |
App Platform | Type: STRING The App Platform, if applicable |
Event Original Name | Type: STRING The Event Original Name, if applicable |
Event Properties | Type: OBJECT An object of key-value pairs that represent additional data to be sent along with the event. |
UTM Properties | Type: OBJECT UTM Tracking Properties |
Batch Data to Mixpanel | Type: BOOLEAN Set as true to ensure Segment sends data to Mixpanel in batches. |
User Agent Data | Type: OBJECT The user agent data of device sending the event |
Identify User
Set the user ID for a particular device ID or update user properties. Learn more about User Profiles and Identity Management.
Identify User is a Cloud action. The default Trigger is: type = "identify"
Field | Description |
---|---|
IP Address | Type: STRING The IP address of the user. This is only used for geolocation and won’t be stored. |
User ID | Type: STRING The unique user identifier set by you |
Anonymous ID | Type: STRING The generated anonymous ID for the user |
User Properties | Type: OBJECT Properties to set on the user profile |
Segment maps the userId set in the identify event to the distinct ID in Mixpanel. Segment also maps the following traits to Mixpanel reserved properties to fit Mixpanel’s use cases: traits.created
-> $created
, traits.email
-> $email
, traits.firstName
-> $first_name
, traits.lastName
-> $last_name
, traits.name
-> $name
, traits.username
-> $username
and traits.phone
-> $phone
.
Track Purchase
Send an ‘Order Completed’ Event to Mixpanel.
Track Purchase is a Cloud action. The default Trigger is: type = "track"
Field | Description |
---|---|
Generate Purchase Event Per Product | Type: BOOLEAN When enabled, send “Product Purchased” with each product within the event. |
Distinct ID | Type: STRING A distinct ID specified by you. |
Anonymous ID | Type: STRING A distinct ID randomly generated prior to calling identify. |
User ID | Type: STRING The distinct ID after calling identify. |
Group ID | Type: STRING The unique identifier of the group that performed this event. |
Insert ID | Type: STRING A random id that is unique to an event. Mixpanel uses $insert_id to deduplicate events. |
Timestamp | Type: DATETIME The timestamp of the event. Mixpanel expects epoch timestamp in millisecond or second. Please note, Mixpanel only accepts this field as the timestamp. If the field is empty, it will be set to the time Mixpanel servers receive it. |
App Name | Type: STRING The name of your application. |
App Namespace | Type: STRING The namespace of your application. |
App Build | Type: STRING The current build of your application. |
App Version | Type: STRING The current version of your application. |
OS Name | Type: STRING The name of the mobile operating system or browser that the user is using. |
OS Version | Type: STRING The version of the mobile operating system or browser the user is using. |
Device ID | Type: STRING A unique identifier for the device the user is using. |
Device Type | Type: STRING The type of the user’s device. |
Device Name | Type: STRING The name of the user’s device. |
Device Manufacturer | Type: STRING The device manufacturer that the user is using. |
Device Model | Type: STRING The device model that the user is using. |
Bluetooth Enabled | Type: BOOLEAN Whether bluetooth is enabled. |
Carrier | Type: STRING The carrier that the user is using. |
Cellular Enabled | Type: BOOLEAN Whether cellular is enabled. |
Wifi | Type: BOOLEAN Set to true if user’s device has an active, available Wifi connection, false if not. |
Country | Type: STRING The current country of the user. |
Region | Type: STRING The current region of the user. |
Language | Type: STRING The language set by the user. |
Library Name | Type: STRING The name of the SDK used to send events. |
Library Version | Type: STRING The version of the SDK used to send events. |
IP Address | Type: STRING The IP address of the user. This is only used for geolocation and won’t be stored. |
Identifier For Advertiser (IDFA) | Type: STRING Identifier for Advertiser. (iOS) |
URL | Type: STRING The full URL of the webpage on which the event is triggered. |
Screen width | Type: NUMBER Width, in pixels, of the device screen. |
Screen height | Type: NUMBER Height, in pixels, of the device screen. |
Screen density | Type: NUMBER Pixel density of the device screen. |
Referrer | Type: STRING Referrer url |
User Agent | Type: STRING User agent |
Advertising ID | Type: STRING Advertising ID |
Ad Tracking Enabled | Type: STRING Ad Tracking Enabled (true or false) |
Timezone | Type: STRING The event timezone |
App Platform | Type: STRING The App Platform, if applicable |
Event Original Name | Type: STRING The Event Original Name, if applicable |
Event Properties | Type: OBJECT An object of key-value pairs that represent additional data to be sent along with the event. |
UTM Properties | Type: OBJECT UTM Tracking Properties |
Batch Data to Mixpanel | Type: BOOLEAN Set as true to ensure Segment sends data to Mixpanel in batches. |
User Agent Data | Type: OBJECT The user agent data of device sending the event |
Products | Type: OBJECT Products in the order. |
Event Name* | Type: STRING The name of the action being performed. |
When set Generate Purchase Event Per Product
to true
, this setting effectively “flattens” the array of objects in the Order Completed
’s products
property by tracking a Product Purchased
event for each item in the array. This enables more sophisticated analysis on a per-product basis in Mixpanel. These Product Purchased
events will contain all of the key-value pairs from their respective object in the products
array as event properties, along with the order_id
and checkout_id
from the Order Completed
event.
Increment Properties
Increment the value of a user profile property. Learn More.
Increment Properties is a Cloud action. The default Trigger is: type = "track"
Field | Description |
---|---|
IP Address | Type: STRING The IP address of the user. This is only used for geolocation and won’t be stored. |
User ID | Type: STRING The unique user identifier set by you |
Anonymous ID | Type: STRING The generated anonymous ID for the user |
Increment Numerical Properties* | Type: OBJECT Object of properties and the values to increment or decrement. For example: `{“purchases”: 1, “items”: 6}}. |
Anonymous ID format
Mixpanel requires that values it receives for the anonymous identifier (anonymousId
in Segment) must be in the UUID v4 format. Analytics.js sends anonymousId
in this format by default. If you manually send anonymous identifiers to Mixpanel, ensure they are in the correct format.
Migration from Mixpanel Classic
Assuming you’re already using Segment Cloud-mode, the Mixpanel (Actions) destination is expected to have no breaking changes when upgrading. With the exception of a few new properties added to your events in the new Actions destination, there should be no difference in the data received in Mixpanel when using either of the Mixpanel destinations.
If you want to confirm, you can configure the new destination to point to a different Mixpanel project and connect it to the same source(s) as the Classic destination and manually verify before fully switching over.
Contact Mixpanel support if you find features missing from the Mixpanel (Actions) destination that were available in the classic Mixpanel destination.
Mixpanel settings mapping
mixpanel Classic Destination Setting | How to enable in mixpanel (Actions) | |
---|---|---|
Connection Settings | ||
API Secret Cloud Device-web Device-mobile |
Global Settings The setting is called |
|
Token Cloud Device-web Device-mobile |
Global Settings The setting is called |
|
Connection Mode Cloud Device-web Device-mobile |
||
Event Tracking | ||
Track All Pages to Mixpanel with a Consolidated Event Name Cloud Device-web |
Subscription Page Calls When enabled, Mixpanel (Actions) tracks all Page calls as |
|
Events to increment in People Cloud Device-web Device-mobile |
Not supported with Actions. |
|
Track All Pages to Mixpanel Cloud Device-web |
Subscription Page Calls When enabled, Mixpanel (Actions) tracks all Page calls as |
|
Track Categorized Pages to Mixpanel Cloud Device-web |
Subscription Page Calls When enabled, Mixpanel (Actions) tracks all Page calls as |
|
Track Named Pages to Mixpanel Cloud Device-web |
Subscription Page Calls When enabled, Mixpanel (Actions) tracks all Page calls as |
|
Traits & Properties | ||
Group Identifier Traits Cloud Device-web Device-mobile |
Subscription Group Calls When enabled, you can set the group key as you specified in Mixpanel under Project settings to the |
|
Group Traits to Set Once Cloud Device-web Device-mobile |
||
Legacy Super Properties Device-web Device-mobile |
||
Traits to set as People Properties Cloud Device-web Device-mobile |
Subscription Identify Calls When enabled, Mixpanel (Actions) maps Traits as People Properties by default. You can change it by updating the |
|
Properties to increment in People Cloud Device-web Device-mobile |
||
Properties to send as Super Properties Cloud Device-web Device-mobile |
||
Identity Resolution | ||
Use Mixpanel People Cloud Device-web Device-mobile |
||
Other Settings | ||
Cross Subdomain Cookie Device-web |
||
Enable European Union Endpoint Cloud Device-web Device-mobile |
Global Settings The setting is called |
|
Persistence Type Device-web |
||
Secure Cookie Device-web |
||
Automatically set all Traits as Super Properties and People Properties Device-web Device-mobile |
||
Source Name Cloud Device-web Device-mobile |
Global Settings The setting is called |
Troubleshooting
Track events are not attributed to Mixpanel Groups
If the Mixpanel (Actions) destination uses $group_id as the group key, ensure that the mappings handling your track
events have the field for Group ID mapped to a valid value. By default, this field maps to the event variable context.groupId
.
To send Track events with a custom Group Key, include the key as a property of Track events. For example:
analytics.track('Example Event', { custom_group_key : 'group1' });
Failed events due to timestamp
If your integration is correct and you are still seeing failed events, review and verify that you are sending all date properties as UTC time format, due to Mixpanel timestamp format requirements.
Failed events due to messageId
Segment maps the messageId
of a Segment event to Mixpanel’s insert_id
value. If you are generating your own messageId
, ensure the format complies with Mixpanel’s insert_id
requirements. For more information, see Mixpanel’s Import Events documentation.
Failing to generate a messageId
that complies with Mixpanel’s insert_id
standard might result in a 400 Bad Request
error from Mixpanel.
Why is Boardman, Oregon appearing in my users’ profile location field?
If you are seeing traffic from Boardman or see Segment as the browser, you might be sending server side calls to your Mixpanel (Actions) destination. To correctly populate your users’ profile location field, manually pass the IP information in the context object from the server.
This page was last modified: 19 Sep 2024
Need support?
Questions? Problems? Need more info? Contact Segment Support for assistance!