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. Go to Settings.
  2. Under Project Configuration, select Manage for 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
UAirship.shared().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. Go to Settings.
  2. Under Project Configuration, select Manage for 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 EventMixpanel Event
CLOSEAirship Close
CONTROLAirship Control
CUSTOMAirship + custom.name (Example: Airship Add To Cart)

Defaults to Airship Custom if body.name is absent.
Email Bounce1Airship Bounce
Email Click1Airship Click
Email Delay1Airship Delay
Email Delivery1Airship Delivery
Email Injection1Airship Injection
Email Open1Airship Open
Email Unsubscribe1Airship Unsubscribe
FIRST_OPENAirship First Open
FIRST_OPT_INAirship First Opt-in
IN_APP_BUTTON_TAPAirship In-App Button Tap
IN_APP_EXPERIENCESAirship In-App Experiences
IN_APP_FORM_DISPLAYAirship In-App Form Display
IN_APP_FORM_RESULTAirship In-App Form Result
IN_APP_MESSAGE_DISPLAYAirship In-App Message Display
IN_APP_MESSAGE_EXPIRATIONAirship In-App Message Expiration
IN_APP_MESSAGE_RESOLUTIONAirship In-App Message Resolution
IN_APP_PAGE_SWIPEAirship In-App Page Swipe
IN_APP_PAGE_VIEWAirship In-App Page View
IN_APP_PAGER_COMPLETEDAirship In-App Pager Completed
IN_APP_PAGER_SUMMARYAirship In-App Pager Completed
LOCATIONAirship Location
MOBILE_ORIGINATEDAirship Mobile Originated
OPENAirship Open
REGIONAirship Region
RICH_DELETEAirship Rich Delete
RICH_DELIVERYAirship Rich Delivery
RICH_READAirship Rich Read
SCREEN_VIEWEDAirship Screen Viewed
SENDAirship Send
SEND_ABORTEDAirship Send Aborted
SEND_REJECTEDAirship Send Rejected
SHORT_LINK_CLICKEDAirship Short Link Click
SMS Delivery Report — Aborted2Airship SMS Delivery Aborted
SMS Delivery Report — Delivered2Airship SMS Delivered
SMS Delivery Report — Dispatched2Airship SMS Delivery Dispatched
SMS Delivery Report — Expired2Airship SMS Delivery Expired
SMS Delivery Report — Failed2Airship SMS Delivery Failed
SMS Delivery Report — Rejected2Airship SMS Delivery Rejected
SMS Delivery Report — Undeliverable2Airship SMS Delivery Undeliverable
SMS Delivery Report — Unknown2Airship SMS Delivery Unknown
SUBSCRIPTIONAirship Subscription — indicates change in email subscription status or values
WEB_CLICKAirship Web Click
WEB_SESSIONAirship Web Session
UNINSTALLAirship 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 PropertyMixpanel Event Property
body.event_typeSpecific Event Type (The event type property is already called Event Type.)
body.identifiers.msisdnMSISDN
body.identifiers.senderSender
body.properties.inbound_messageInbound Message
body.properties.keywordKeyword
body.properties.outbound_messageOutbound Message
device.amazon_channelAmazon Channel ID
device.android_channelAndroid Channel ID
device.attributes.app_package_nameApp Package Name
device.attributes.app_versionApp Version
device.attributes.background_push_enabledBackground Push Notifications Enabled
device.attributes.carrierCarrier
device.attributes.connection_typeConnection Type
device.attributes.device_modelModel
device.attributes.device_osOS Version
device.attributes.iana_timezoneTimezone
device.attributes.locale_country_codeCountry Code
device.attributes.locale_language_codeLanguage Code
device.attributes.locale_timezoneTimezone Offset
device.attributes.locale_variantLanguage Variant
device.attributes.location_enabledLocation Services Enabled
device.attributes.location_permissionLocation Permission
device.attributes.push_opt_inOpted Into Push Notifications
device.attributes.ua_sdk_versionAirship SDK Version
device.attributes.web_browser_nameBrowser
device.attributes.web_browser_typeWeb Browser Type
device.attributes.web_browser_versionWeb Browser Version
device.attributes.web_user_agent_stringWeb User Agent String
device.channelChannel ID
device.delivery_addressDelivery Address
device.device_typeDevice Type
device.identifiers.AA_visitorIDAdobe Visitor ID
device.identifiers.addressEmail Address
device.identifiers.com.urbanairship.aaidAndroid/Amazon Ad ID
device.identifiers.com.urbanairship.gimbal.aiiGimbal App Instance ID
device.identifiers.com.urbanairship.limited_ad_tracking_enabledLimited Ad Tracking Enabled
device.identifiers.com.urbanairship.vendorApple Vendor ID
device.identifiers.GA_CIDGoogle Analytics Client ID
device.identifiers.IDFAIDFA
device.ios_channeliOS Channel ID
device.named_user_idNamed User ID
idEvent ID
offsetEvent Offset
occurredTime
typeEvent 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 PropertyMixpanel User PropertyValue
body.current.crmAirship crm["partner", "active", "new_user"]
body.current.loyaltyAirship loyalty["silver_member", "special_offers"]
body.current.deviceAirship device["san_francisco", "sports"]