Mixpanel

AIRSHIP MAINTAINED INTEGRATION

This integration is maintained by Airship. Please contact Airship for support.

The Mixpanel integration supports two major functions:

Read more about data export and user matching in Mixpanel’s Airship Set Up Guide .

Mixpanel Integration Requirements

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:

  1. Next to your project name, select the dropdown menu (), then Settings.
  2. Under Project settings, select Partner Integrations.
  3. Select Mixpanel.
  4. Select Configure for the inbound integration and follow the onscreen instructions to:

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:

  1. Go to Data Management, then Cohorts.
  2. Select the three dots icon () for a cohort, then Export to …, then Airship.
  3. 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:

  1. Configure your app to set the mixpanel_distinct_id on Airship events. See the Android and iOS setup sections below for more information.
  2. 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

Mixpanel Android SDK Docs 

// 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
Airship.getAnalytics()
                .editAssociatedIdentifiers()
                .addIdentifier("mixpanel_distinct_id", distinctId)
                .apply();

iOS Swift RTDS Setup

Mixpanel Swift SDK Docs 

// 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

Mixpanel Objective-C SDK Docs 

// 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:

  1. Next to your project name, select the dropdown menu (), then Settings.
  2. Under Project settings, select Real-Time Data Streaming.
  3. Under Real-Time Data Streaming, select Mixpanel.
  4. 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.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.

Example tag change event
{
  "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"]