Once set, all associated identifiers are returned in RTDS under the "identifiers" key:
See also: RTDS API: Device Information.
## Configuring the Outbound Integration > **Warning:** Airship sends events to Adobe with timestamps. If your Adobe Analytics Report Suite has timestamps disabled, Adobe will drop Airship events. See [Timestamps Optional](https://docs.adobe.com/content/help/en/analytics/admin/admin-tools/timestamp-optional.html) for more information. You will need your Adobe Analytics Report Suite ID and Tracking Server URL. If you do not have these, contact your iOS, Android, or Web developer. In Airship: 1. Next to your project name, select the dropdown menu (▼), then **Settings**. 1. Under **Project settings**, select **Partner Integrations**. 1. Select **Adobe Analytics**. 1. Select **Configure** for the outbound integration and follow the onscreen instructions to: * Enter your Report Suite ID * Enter your Tracking Server URL * Select the Airship events to send to your Report Suite After configuring your app and your integration, you can create event-based Segments in Adobe Analytics. See [Recommended Attribute Mapping](#connect-aa-mapping) for recommended mapping of Data Streaming events to Adobe Analytics events. ### Recommended Property Mapping {#connect-aa-mapping} > **Important:** If you set up your integration before March 11, 2020, your event fields will not belong to a global `airship` object. You must create a new integration to use the `airship.` namespace. In Adobe Analytics, you capture the data that is valuable to you using context data and processing rules. Airship uses Adobe's [Data Insertion API](https://github.com/AdobeDocs/analytics-1.4-apis/blob/master/docs/data-insertion-api/index.md) to send data to Adobe Analytics. Airship uses the `contextData` field so that you can include every piece of relevant data from an Airship event without consuming the limited number of variables and properties that Adobe Analytics supports. You can set the Adobe Analytics processing rules so that every field in an Airship event maps to an Adobe Analytics concept. After your Adobe Analytics administrator sets up your processing rules, you can view Airship event data in your Adobe Analytics dashboard. We derive `contextData` keys from the original Data Streaming events using JSON notation, and use `airship` to represent the global parent for all Airship event properties. For example, this is the push identifier of a notification that caused an event: ```json { "body": { "triggering_push": { "push_id": "d99bd842-f816-4560-bc59-b057f7c0e164" } } } ``` This field would be available for mapping as `airship.body.triggering_push.push_id`. When mapped to an sProp, eVar, event, or other Adobe Analytics concept, the variable's value would be `d99bd842-f816-4560-bc59-b057f7c0e164`. > **Note:** The above JSON represents a partial event object. Actual JSON objects coming from the > Real-Time Data Streaming API are more complex. To see all the available fields, read the [Data Streaming API Reference](https://www.airship.com/docs/developer/rest-api/connect/). ## Setting Up Adobe Analytics Processing Rules You or your Adobe administrator must set up processing rules in the Adobe Analytics Admin Console to enable Adobe Analytics to capture events from Airship. These processing rules assign `contextData` variables to Adobe Analytics variables or increment events (counters) accordingly. 1. In the Adobe Analytics interface, select **Admin Console** and navigate to **Report Suites**. 1. Select the Report Suite that Airship is sending data to, and then go to **Edit Settings**, then **General**, then **Processing Rules**. 1. Select **Add Rule**. 1. Enter a title for the rule. For example, "Airship to Adobe Analytics Integration." 1. Select **Add Action**. 1. If you need to setup an sProp or eVar to capture a dimension (e.g., Event Type), select **Overwrite Value Of** and then select the sProp or eVar that you want to set. After the **With** label, select the `contextData` variable that you want to set the sProp or eVar with. 1. If you need to set up an Event to capture the number of times something occurred, e.g., the number of Opens, select **Set Event** and then select the Adobe Analytics Event you want to set. Select **Custom Value** and set the value to 1. Then set a condition for when you want to set the event. Continuing with the *Opens* example, you would set up a condition where the *If* is for the same *type* `contextData` variable, and the condition would be *equals OPEN*. This will increment the Open Event each time the Data Streaming Event Type is set to *OPEN*. This is just one example of how you can set up a variable and an event. The same concept applies for each Airship event type and dimension that you want to capture in Adobe. ### Recommended Concept Mappings Below are some recommendations on different ways that you can get started mapping the Airship concepts to Adobe Analytics concepts. This table provides example `contextData` variable keys and the recommended Adobe Analytics variable type to capture information from incoming Airship event information. See our [Real-Time Data Streaming documentation](https://www.airship.com/docs/developer/rest-api/connect/) for information on events and fields that aren't listed below. Use JSON object notation to reach nested properties (in the format `airship.property.sub-property`). In Adobe analytics, all variables are preceded by `airship.`. | Airship Concept | Recommended Adobe Analytics Mapping Context | Data Variable | | --- | --- | --- | | Data Streaming event type (e.g., send, direct open, indirect open, web notification click) | Custom event (one for each type), and an sProp for segmentation (all the people who received a message, or opened, etc.) | `type` | | Unique push ID, group ID, or variant | eVar | `airship.body.push_id`, `airship.body.group_id`, `airship.body.variant`, `airship.body.triggering_push.push_id`, `airship.body.triggering_push.group_id`, `airship.body.triggering_push.variant`, `airship.body.last_delivered.push_id`, `airship.body.last_delivered.group_id`, `airship.body.last_delivered.variant`, `airship.body.replacing_push.push_id`, `airship.body.replacing_push.group_id`, `airship.body.replacing_push.variant` | | Device Identifiers — mobile (e.g., named user, Airship channel ID) | eVar | `airship.device.ios_channel`, `airship.device.android_channel`, `airship.device.named_user`, `airship.device.identifiers.com.urbanairship.idfa` | | Device Identifiers — web (Airship channel ID) | eVar | `airship.device.channel` | | Web browser context | sProp | `airship.device.attributes.web_browser_name`, `airship.device.attributes.web_browser_type`, `airship.device.attributes.web_browser_version`, `airship.device.attributes.web_user_agent_string` | | In-App Message Resolution Type | sProp AND eVar | `airship.body.type`Once set, all associated identifiers are returned in RTDS under the "identifiers" key:
See also: RTDS API: Device Information.
RTDS will report events about those users directly to Google Analytics through the [Google Analytics Measurement Protocol API](https://developers.google.com/analytics/devguides/collection/protocol/ga4). From there, you can create segments within Google Analytics to track mobile engagement behavior. ## Configuring the Google Analytics Integration In Airship: 1. Next to your project name, select the dropdown menu (▼), then **Settings**. 1. Under **Project settings**, select **Partner Integrations**. 1. Select **Google Analytics**. 1. Select **Configure** for the outbound integration and follow the onscreen instructions to: * Provide your Firebase App ID * Create an API secret in GA4 * Select the Airship events to send to GA4 * (Optional) [Populate the GA4 user ID](#populating-the-ga4-user-id) ### Defining Custom Dimensions in Google Analytics Airship includes some additional event parameters in the events sent to GA4. To use these properties in GA4 reports you must first define them as custom dimensions. Use the information in [GA4: Custom dimensions and metrics](https://support.google.com/analytics/answer/10075209?hl=en) and the [event-mapping table](#airship-google-analytics-event-mapping) below to create custom dimensions in your GA4 property. ### Populating the GA4 User ID {#user-id} The User-ID feature in GA4 allows you to count distinct users accurately and enables measuring their activity across different sessions, devices, and platforms. If your user ID in GA4 is the same value that you use for named users in Airship, you can optionally include that value in events. By default, the user ID is not populated. For more information, see: [GA4: Measure activity across platforms with User-ID](https://support.google.com/analytics/answer/9213390?hl=en). ## Airship-Google Analytics Event Mapping > **Important:** Because Google Analytics does not recommend high-cardinality dimensions, Airship does not include push IDs in events. If you would like to group push-related events, include [campaign categories](https://www.airship.com/docs/reference/glossary/#campaign_categories)when creating your messages. See also: [Data Formats: Campaigns Object](https://www.airship.com/docs/developer/rest-api/ua/schemas/push/#campaignsobject). Use the following table for reference when mapping Airship events to Google Analytics events. | Event | Description | GA Custom Dimensions | Notes | | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------ | | `airship_send` | Occurs whenever a push notification is sent to a device. |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).
### Event property mapping
The following table shows how Airship event properties map to Mixpanel event properties:
| 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` |
### Tag change event property mapping
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**
```json
{
"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"]` |
# Snowplow
> Send Real-Time Data Streaming events to Snowplow with our Amazon Redshift integration.
Snowplow helps you track all events across all channels to give you an
up-to-the-minute view of user behaviors. With the Airship [Real-Time Data Streaming](https://www.airship.com/docs/reference/glossary/#rtds)
integration you will have access to all your mobile data in addition to any
other data you want to collect via Snowplow. This enables you to have complete
control over your data warehouse. Amazon Redshift is used so your data
analysts can run custom queries and generate reports.
* Understand user lifecycle.
* Uncover activation behaviors that lead to long term users.
* Optimize user acquisition spend based on the highest performing source
that leads to conversions.
## Snowplow Integration Requirements
This integration requires these accounts:
1. Snowplow
1. Airship — Must include both:
* Messaging
* [Real-Time Data Streaming](https://www.airship.com/docs/reference/feature-packages/#data)
## Configuring the Snowplow Integration
[Contact Snowplow](https://snowplow.io/contact-us/) to set up this integration. For a list of events tracked, see [Snowplow's Airship integration documentation](https://docs.snowplow.io/docs/collecting-data/collecting-data-from-third-parties/urban-airship-connect/).
# Supermetrics
> Create meaningful customer relationships by transforming fragmented interactions into seamless journeys.
[Supermetrics](https://supermetrics.com/) Supermetrics Data Activation is an Orchestration Customer Data Platform (CDP) that empowers businesses to create meaningful customer relationships by utilizing smart technology to transform fragmented interactions into seamless journeys.
The Supermetrics–Airship server-to-server connector allows brands to send audience data from Supermetrics to Airship as [custom events](https://www.airship.com/docs/reference/glossary/#custom_event). You can use the events to target your mobile app audience.
## Integration Requirements
* **Accounts**
1. Supermetrics — [Data Activation](https://supermetrics.com/platform/activate-data)
1. Airship — Must include messaging
* **Airship project**
* [named user](https://www.airship.com/docs/reference/glossary/#named_user) must be enabled for your project.
## Configure the Integration
In Airship:
1. Next to your project name, select the dropdown menu (▼), then **Settings**.
1. Under **Project settings**, select **Partner Integrations**.
1. Select **Relay42**.
1. Select **Configure** for the inbound integration and follow the onscreen instructions to:
* Create an authentication token. Supermetrics uses the token to communicate with your project in Airship.
* Configure the Airship integration in Supermetrics.
For additional detail, see [Supermetrics' Data Activation documentation](https://docs.supermetrics.com/docs/data-activation).