Mixpanel
AIRSHIP MAINTAINED INTEGRATION
This integration is maintained by Airship. Please contact Airship for support.The Mixpanel integration supports two major functions:
Feed Real-Time Data StreamingA service that delivers engagement events in real time via the Data Streaming API or an Airship partner integration. events into Mixpanel. Adding Airship events to Mixpanel provides another behavioral dimension to analyze: audience engagement.
Export Mixpanel cohorts to Airship as tags. You can export cohorts once or set up dynamic sync, which updates the
mixpanel
tag group every 15 minutes. You can then target Mixpanel tags when creating messages:Segmentation: Create a SegmentA grouping of audience members selected by unique or shared identifiers. Multiple identifiers can be combined within a Segment. using a combination of Airship tags and Mixpanel cohorts. Use these segments to send targeted In-AppA message that appears inside of your app. You can send in-app messages to your entire app audience, not just users who have opted-in to push notifications. The standard format, as opposed to In-App Automation, is a banner that slides downward or upward from the top or bottom of a device screen. or Message CenterA place in your app where you can display persistent rich messages, including HTML, video, etc. Similar to email, Message Center represents both the medium (the in-app inbox) and the message type (the messages you send to the inbox). messages.
Automation: If you set the Mixpanel cohort to be dynamic, you can also set up Automation rulesA set of conditions that your audience must meet before they receive a message. or SequencesA series of messages that is initiated by a trigger. Airship sends messages in the series based on your timing settings, and you can also set conditions that determine its audience and continuation. Sequences can be connected to each other and to other messaging components to create continuous user experiences in a Journey. based on the addition or removal of a cohort tag. See: Configure Triggers: Tag Change.
Read more about data export and user matching in Mixpanel’s Airship Set Up Guide .
Mixpanel Integration Requirements
- Accounts
- Mixpanel
- Airship
- Messaging
- Real-Time Data Streaming — Required for outbound integration only
- Airship project
- Recommended: Enable Named UserA customer-provided identifier used for mapping multiple devices and channels to a specific individual. for non-mobile channels.
Mixpanel Integration User ID Mapping
Users are matched between Airship and Mixpanel using the Airship Channel IDAn Airship-specific unique identifier used to address a channel instance, e.g., a smartphone, web browser, email address.. Within Mixpanel, the channel ID is saved as a user profile property:
- iOS:
$ios_urban_airship_channel_id
- Android:
$android_urban_airship_channel_id
If you don’t use the Mixpanel SDK, add these properties and set the values with the Mixpanel API to match users by channel IDs.
If you would like to specify a value to match a Mixpanel user profile to a Named UserA customer-provided identifier used for mapping multiple devices and channels to a specific individual., add
the $airship_named_user
user property (the Airship SDK will not automatically declare it),
which will be sent when matching.
Users without $airship_named_user
user property will instead have their distinct_id
sent to Airship Named User system. This route is intended for implementations where the
same identifier value is used for both distinct_id
(Mixpanel) and named_user_id
(Airship).
Mixpanel Inbound Integration
In Airship:
- Go to Settings.
- Under Project Configuration, select Manage for Partner Integrations.
- Select Mixpanel.
- Select Configure for the inbound integration and follow the onscreen instructions to:
- Create a Tag GroupAn array of tags that you can associate with both channels and Named Users. and an authentication token. Mixpanel uses the token to communicate with your project in Airship.
- Configure the Airship integration in Mixpanel.
Sending Mixpanel Cohorts to Airship as Tags
After configuring the Mixpanel inbound integration, you can use your Mixpanel cohorts to set tags on your audience, helping you organize and retarget your audience based on analytics information from Mixpanel. To have Mixpanel send selected cohorts, you need to export each cohort to your Airship integration.
In Mixpanel:
- Go to Data Management, then Cohorts.
- Select the three dots icon () for a cohort, then Export to …, then Airship.
- Specify if the cohort should be sent one time only or dynamically (at predefined intervals).
See also: Mixpanel’s Airship documentation .
Mixpanel RTDS Integration
Mixpanel library initialization requires a Mixpanel project token. See Find Project Token to locate your token.
To set up this integration, you must:
- Configure your app to set the
mixpanel_distinct_id
on Airship events. See the Android and iOS setup sections below for more information. - Set up the RTDS integration in the Airship dashboard.
When you set up a Mixpanel RTDS integration, your events will contain a mixpanel_distinct_id
key. This is the identifier Mixpanel uses to differentiate between unique events. As a fallback, you may want to set your Airship Named User value to mixpanel_distinct_id
to ensure that events are matched within Mixpanel.
Android RTDS Setup
// Initialize the Mixpanel library with your project token
MixpanelAPI mixpanel = MixpanelAPI.getInstance(context, "MIXPANEL_PROJECT_TOKEN");
// Get the Mixpanel distinct ID
String distinctId = mixpanel.getDistinctId();
// Add the distinct ID to the current associated identifiers
UAirship.shared().getAnalytics()
.editAssociatedIdentifiers()
.addIdentifier("mixpanel_distinct_id", distinctId)
.apply();
iOS Swift RTDS Setup
// Initialize the Mixpanel library with your project token
Mixpanel.initialize(token: "MIXPANEL_PROJECT_TOKEN")
let mixpanel = Mixpanel.mainInstance()
// Get the Mixpanel distinct ID
let distinctId = mixpanel.distinctId
// Add the distinct ID to the current associated identifiers
let identifiers = Airship.analytics.currentAssociatedDeviceIdentifiers()
identifiers.set(identifier: distinctId, key:"mixpanel_distinct_id")
Airship.analytics.associateDeviceIdentifiers(identifiers)
iOS Objective-C RTDS Setup
// Initialize the Mixpanel library with your project token
Mixpanel *mixpanel = [Mixpanel sharedInstanceWithToken:@"MIXPANEL_PROJECT_TOKEN"];
// Get the Mixpanel distinct ID
NSString *distinctId = mixpanel.distinctId;
// Add the distinct ID to the current associated identifiers
UAAssociatedIdentifiers *identifiers = [UAirship.analytics currentAssociatedDeviceIdentifiers];
[identifiers setIdentifier:distinctId forKey:@"mixpanel_distinct_id"];
[UAirship.analytics associateDeviceIdentifiers:identifiers];
React Native RTDS Setup
Mixpanel React Native SDK Docs
// Initialize the Mixpanel library with your project token
const mixpanel = await Mixpanel.init('MIXPANEL_PROJECT_TOKEN', true);
// Get the Mixpanel distinct ID
const distinctId = await mixpanel.getDistinctId();
// Add the distinct ID to the current associated identifiers
UrbanAirship.associateIdentifier("mixpanel_distinct_id", distinctId);
Set Up a Mixpanel RTDS Integration in Airship
You will need your Mixpanel project token.
In Airship:
- Go to Settings.
- Under Project Configuration, select Manage for Real-Time Data Streaming.
- Under Real-Time Data Streaming, select Mixpanel.
- Follow the onscreen instructions to configure the integration.
Mapping Airship Event Types to Mixpanel
In Mixpanel, you can find your events by type, prefixed with Airship — e.g., Airship First Opt-in for the "type": "FIRST_OPT_IN"
event. Because the custom
event type differentiates between events by name
, Mixpanel uses the event name
for custom events (if the event has a name), in the format Airship body.name
.
Airship Event | Mixpanel Event |
---|---|
CLOSE | Airship Close |
CONTROL | Airship Control |
CUSTOM | Airship + custom.name (Example: Airship Add To Cart )Defaults to Airship Custom if body.name is absent. |
Email Bounce1 | Airship Bounce |
Email Click1 | Airship Click |
Email Delay1 | Airship Delay |
Email Delivery1 | Airship Delivery |
Email Injection1 | Airship Injection |
Email Open1 | Airship Open |
Email Unsubscribe1 | Airship Unsubscribe |
FIRST_OPEN | Airship First Open |
FIRST_OPT_IN | Airship First Opt-in |
IN_APP_BUTTON_TAP | Airship In-App Button Tap |
IN_APP_EXPERIENCES | Airship In-App Experiences |
IN_APP_FORM_DISPLAY | Airship In-App Form Display |
IN_APP_FORM_RESULT | Airship In-App Form Result |
IN_APP_MESSAGE_DISPLAY | Airship In-App Message Display |
IN_APP_MESSAGE_EXPIRATION | Airship In-App Message Expiration |
IN_APP_MESSAGE_RESOLUTION | Airship In-App Message Resolution |
IN_APP_PAGE_SWIPE | Airship In-App Page Swipe |
IN_APP_PAGE_VIEW | Airship In-App Page View |
IN_APP_PAGER_COMPLETED | Airship In-App Pager Completed |
IN_APP_PAGER_SUMMARY | Airship In-App Pager Completed |
LOCATION | Airship Location |
MOBILE_ORIGINATED | Airship Mobile Originated |
OPEN | Airship Open |
REGION | Airship Region |
RICH_DELETE | Airship Rich Delete |
RICH_DELIVERY | Airship Rich Delivery |
RICH_READ | Airship Rich Read |
SCREEN_VIEWED | Airship Screen Viewed |
SEND | Airship Send |
SEND_ABORTED | Airship Send Aborted |
SEND_REJECTED | Airship Send Rejected |
SHORT_LINK_CLICKED | Airship Short Link Click |
SMS Delivery Report — Aborted2 | Airship SMS Delivery Aborted |
SMS Delivery Report — Delivered2 | Airship SMS Delivered |
SMS Delivery Report — Dispatched2 | Airship SMS Delivery Dispatched |
SMS Delivery Report — Expired2 | Airship SMS Delivery Expired |
SMS Delivery Report — Failed2 | Airship SMS Delivery Failed |
SMS Delivery Report — Rejected2 | Airship SMS Delivery Rejected |
SMS Delivery Report — Undeliverable2 | Airship SMS Delivery Undeliverable |
SMS Delivery Report — Unknown2 | Airship SMS Delivery Unknown |
SUBSCRIPTION | Airship Subscription — indicates change in email subscription status or values |
WEB_CLICK | Airship Web Click |
WEB_SESSION | Airship Web Session |
UNINSTALL | Airship Uninstall |
1. Email delivery report events are CUSTOM
type events with a body.name
property indicating the delivery status of an email. Mixpanel uses the body.name
key rather than the type
key to better represent the event.
2. SMS Delivery reports are CUSTOM
type events that use the body.name
property to represent the status of your SMS delivery (as reported by the last-mile provider).
Mapping Airship Event Properties to Mixpanel
Airship Event Property | Mixpanel Event Property |
---|---|
body.event_type | Specific Event Type (The event type property is already called Event Type .) |
body.identifiers.msisdn | MSISDN |
body.identifiers.sender | Sender |
body.properties.inbound_message | Inbound Message |
body.properties.keyword | Keyword |
body.properties.outbound_message | Outbound Message |
device.amazon_channel | Amazon Channel ID |
device.android_channel | Android Channel ID |
device.attributes.app_package_name | App Package Name |
device.attributes.app_version | App Version |
device.attributes.background_push_enabled | Background Push Notifications Enabled |
device.attributes.carrier | Carrier |
device.attributes.connection_type | Connection Type |
device.attributes.device_model | Model |
device.attributes.device_os | OS Version |
device.attributes.iana_timezone | Timezone |
device.attributes.locale_country_code | Country Code |
device.attributes.locale_language_code | Language Code |
device.attributes.locale_timezone | Timezone Offset |
device.attributes.locale_variant | Language Variant |
device.attributes.location_enabled | Location Services Enabled |
device.attributes.location_permission | Location Permission |
device.attributes.push_opt_in | Opted Into Push Notifications |
device.attributes.ua_sdk_version | Airship SDK Version |
device.attributes.web_browser_name | Browser |
device.attributes.web_browser_type | Web Browser Type |
device.attributes.web_browser_version | Web Browser Version |
device.attributes.web_user_agent_string | Web User Agent String |
device.channel | Channel ID |
device.delivery_address | Delivery Address |
device.device_type | Device Type |
device.identifiers.AA_visitorID | Adobe Visitor ID |
device.identifiers.address | Email Address |
device.identifiers.com.urbanairship.aaid | Android/Amazon Ad ID |
device.identifiers.com.urbanairship.gimbal.aii | Gimbal App Instance ID |
device.identifiers.com.urbanairship.limited_ad_tracking_enabled | Limited Ad Tracking Enabled |
device.identifiers.com.urbanairship.vendor | Apple Vendor ID |
device.identifiers.GA_CID | Google Analytics Client ID |
device.identifiers.IDFA | IDFA |
device.ios_channel | iOS Channel ID |
device.named_user_id | Named User ID |
id | Event ID |
offset | Event Offset |
occurred | Time |
type | Event Type |
Mapping Airship Tag Change Event Properties to Mixpanel
When Airship sends a tag change event to Mixpanel, Mixpanel reflects the current
tags as event properties. Mixpanel uses the tag group as the property and the tags in the group as the value.
{
"id": "00000169-4a14-67b2-1ddd-d9e733622c3a",
"occurred": "2020-06-23T19:00:45.106Z",
"offset": "1000001260057",
"processed": "2020-06-23T19:00:47.094Z",
"type": "TAG_CHANGE",
"device": {
"ios_channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
"channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
"device_type": "IOS",
},
"body":{
"add": {
"crm": [
"partner",
"active"
],
"loyalty": [
"silver_member"
]
},
"current": {
"crm": [
"partner",
"active",
"new_user"
],
"loyalty": [
"silver_member",
"special_offers"
],
"device": [
"san_francisco",
"sports"
]
}
},
"type": "TAG_CHANGE"
}
From the example above, Mixpanel maps tag groups and tags as follows:
Airship Event Property | Mixpanel User Property | Value |
---|---|---|
body.current.crm | Airship crm | ["partner", "active", "new_user"] |
body.current.loyalty | Airship loyalty | ["silver_member", "special_offers"] |
body.current.device | Airship device | ["san_francisco", "sports"] |
Categories