Mixpanel

Feed Airship RTDS events into Mixpanel and target cohorts using Airship tags.

The Mixpanel integration supports two major functions:

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

Mixpanel Integration Prerequisites

To support a Mixpanel integration, you must have a Mixpanel account and integrated your app with both the Airship and Mixpanel SDKs.

Send Mixpanel Cohorts to Airship as Tags

You can use your cohorts in Mixpanel to set tags on your audience, helping you organize and retarget your audience based on analytics information from Mixpanel.

You must set up a tag group called mixpanel to take advantage of Mixpanel cohorts in Airship.

Follow setup steps in Mixpanel’s Airship Set Up Guide to complete the configuration and send Mixpanel cohorts to Airship.

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 RTDS events will also contain a mixpanel_distinct_id key. This is the identifier Mixpanel uses to differentiate between unique events.

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 = UAirship.shared().analytics.currentAssociatedDeviceIdentifiers()
identifiers.setIdentifier(distinctId, forKey:"mixpanel_distinct_id")
UAirship.shared().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 shared].analytics currentAssociatedDeviceIdentifiers];
[identifiers setIdentifier:distinctId forKey:@"mixpanel_distinct_id"];
[[UAirship shared].analytics associateDeviceIdentifiers:identifiers];

Set Up a Mixpanel RTDS Integration in Airship

You will need your Mixpanel token to set up the integration in Airship.

  1. In Airship, go to Settings » Real-time Data Streaming.

  2. Select Mixpanel.

  3. Enter a Name and Description for this integration. This helps you identify the integration later.

  4. Enter your Mixpanel Token.

  5. Select the event types you want to send to your event hub.

  6. Click Activate.

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.
FIRST_OPENAirship First Open
FIRST_OPT_INAirship First Opt-in
IN_APP_MESSAGE_DISPLAYAirship In-App Message Display
IN_APP_MESSAGE_EXPIRATIONAirship In-App Message Expiration
IN_APP_MESSAGE_RESOLUTIONAirship In-App Message Resolution
LOCATIONAirship Location
OPENAirship Open
REGIONAirship Region
RICH_DELETEAirship Rich Delete
RICH_DELIVERYAirship Rich Delivery
RICH_READAirship Rich Read
SCREEN_VIEWEDAirshp Screen Viewed
SENDAirship Send
SEND_REJECTEDAirship Send Rejected
UNINSTALLAirship Uninstall

Mapping Airship Event Properties to Mixpanel

Airship Event PropertyMixpanel Event Property
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.channelChannel ID
device.device_typeDevice Type
device.identifiers.AA_visitorIDAdobe Visitor ID
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"]