Real-Time Data Streaming API

Airship’s Real-Time Data Streaming (RTDS) service exposes an event stream for each user. Events may be behavior-driven, system-driven, or custom. Use the RTDS REST API to consume and integrate Airship user event data.

Libraries

Airship maintains open source server libraries to support your integrations with our APIs in multiple languages. Click below for library documentation.

Introduction

Airship’s Real-Time Data Streaming API exposes a stream of events describing a user’s experience within a mobile app or browser. Events reflect user action, automated device responses to their environment (e.g., encountering a beacon), and experience-changing actions initiated by app/site publishers, such as sending a push notification.

To consume the event stream, you must issue an authenticated request including a starting point for the stream and optional filter and subset specifications.

The event data is delivered as newline-delimited JSON, with each event on its own line. The accept header should be set to application/vnd.urbanairship+x-ndjson; version=3;. Each event contains an offset that denotes its location on the stream. If a client disconnects for any reason, it should reconnect with instructions to start at the last offset it successfully processed, to avoid missing any data. For each app key authorized to use Real-Time Data Streaming, Airship stores 7 days or 100 GB worth of data, whichever comes first.

Base URL

Select the domain associated with your Airship project.

Authentication

For additional information, including steps for creating bearer tokens and OAuth client credentials, see Airship API Security.

  • HTTP Authentication

    Basic Auth (Master)
    Authorization header containing the word Basic followed by a space and a Base64-encoded string generated from your App Key and Master Secret in appKey:masterSecret format. For example, Basic YXBwX2tleTptYXN0ZXJfc2VjcmV0. This security type is only accepted by the Compliance endpoint.
  • HTTP Authentication

    Bearer Token
    Authorization header containing the word Bearer followed by a space and a bearer token, which can be obtained from Airship when configuring a direct integration. Tokens can be revoked at will.

Event Stream

Opens an event stream to your filter specifications.

Open an event stream

Example event stream request

POST /api/events HTTP/1.1
Authorization: Bearer <authorization token>
X-UA-Appkey: <appkey>
Accept: application/vnd.urbanairship+x-ndjson; version=3;
Content-Type: application/json

{
    "filters": [
        {
            "device_types": [
                "android",
                "amazon"
            ],
            "devices": [
                {
                    "channel": "5b389366-7caf-43e2-a19c-6159c7ea9936"
                },
                {
                    "channel": "c8044c8a-d5fa-4e58-91d4-54d0f70b7409"
                },
                {
                    "named_user_id": "George"
                }
            ],
            "latency": 20000000
        },
        {
            "notifications": [
                {
                    "group_id": "a30abf06-7878-4096-9535-b50ac0ad6e8e"
                }
            ],
            "types": [
                "OPEN"
            ]
        }
    ],
    "resume_offset": "MTAwMDAwMDAyMjg1NA",
    "subset": {
        "proportion": 0.3,
        "type": "SAMPLE"
    }
}

Response

HTTP/1.1 200 OK
Content-encoding: gzip
Content-Type: application/vnd.urbanairship+json; version=3;

{"id" : "ff76bb85-74bc-4511-a3bf-11b6117784db", "type": "UNINSTALL", "offset": "MTIzNQ", "occurred": "2015-05-03T02:32:12.088Z", "processed": "2015-05-03T12:12:43.180Z", "device": {"channel":"a61448e1-be63-43ee-84eb-19446ba743f0", "device_type":"ANDROID", "android_channel": "a61448e1-be63-43ee-84eb-19446ba743f0"}}
{"id" : "8e50350e-dd9f-41af-b98e-b0e5d4b27dea","type": "SEND","offset": "NTIxMDM1","occurred": "2015-05-02T02:31:22.088Z","processed": "2015-05-02T02:32:43.181Z","device": {"channel":"5117f2a7-ba58-4981-9456-169959511d1a", "device_type":"IOS", "ios_channel": "5117f2a7-ba58-4981-9456-169959511d1a" },"body": {"push_id": "0c173744-dd35-4b5e-9f7f-2b7e0ce0e36e", "alerting": true}}
{"id" : "ff76bb85-74bc-4511-a3bf-11b6117784db", "type": "UNINSTALL", "offset": "MTIzNQ", "occurred": "2015-05-03T02:32:12.088Z", "processed": "2015-05-03T12:12:43.180Z", "device": {"channel":"a61448e1-be63-43ee-84eb-19446ba743f0", "device_type":"ANDROID", "android_channel": "a61448e1-be63-43ee-84eb-19446ba743f0"}}
{"device":{"channel":"820e4493-e4c9-4577-99bc-a98180599f73","delivery_address":"new.user@urbanairship.com","device_type":"EMAIL"},"id":"00000169-4a14-67b2-1ddd-d9e733622c3a","occurred":"2019-03-04T19:00:45.106Z","offset":"1000001260057","processed":"2019-03-04T19:00:47.094Z","type":"FIRST_OPT_IN"}

Response object

{
   "id": "8e50350e-dd9f-41af-b98e-b0e5d4b27dea",
   "type": "SEND",
   "offset": "NTIxMDM1",
   "occurred": "2015-05-02T02:31:22.088Z",
   "processed": "2015-05-02T02:32:43.181Z",
   "device": {
      "channel": "5117f2a7-ba58-4981-9456-169959511d1a",
      "device_type": "IOS"
   },
   "body": {
      "push_id": "0c173744-dd35-4b5e-9f7f-2b7e0ce0e36e",
      "alerting": true
   }
}
{
  "device": {
    "channel": "820e4493-e4c9-4577-99bc-a98180599f73",
    "delivery_address": "new.user@urbanairship.com",
    "device_type": "EMAIL"
  },
  "id": "00000169-4a14-67b2-1ddd-d9e733622c3a",
  "occurred": "2019-03-04T19:00:45.106Z",
  "offset": "1000001260057",
  "processed": "2019-03-04T19:00:47.094Z",
  "type": "FIRST_OPT_IN"
}

POST /api/events

Opens a new event stream according to your request filters. Unlike our other APIs, a request to /api/events/ returns a stream of data, where each line is a JSON object. The response body contains all the events in that stream. Since streams by definition go on forever, Real-Time Data Streaming will never end the response without some external reason.

 Note

In the request specification, JSON collection types have semantic meaning.

array: Arrays indicate a boolean "OR". Wherever an array appears in the specification, the resulting stream will contain the events passing any of the conditions defined by the array. An empty array results in a 400 response.

object: Object attributes indicate a boolean "AND". All conditions in the object must be satisfied in order for an event to be written to the response. If you would like all events to pass the condition the attribute defines, omit the attribute. If an unexpected attribute appears on an event, a status code 400 response will be returned.

 Important

Airship will occasionally add:

  • New properties to existing objects.

  • New event types, which will be JSON objects with new values for the type field.

Your integration must be tolerant of these kinds of changes.

Security:

header PARAMETERS
  • X-UA-Appkey : StringREQUIRED

    The App Key for the app you want to return events from.

    The application key.

Request Body

  • Content-Type: application/json

    Events request

    The request body defines the events you want to return in the event stream. You can define position, subset and filter specifications in each request submitted to the stream. Filters are positive statements about what events the client should return. The subset specification returns a representative portion of the stream.

Responses

  • 200

    The response to a successful request is an unending stream of newline-delimited JSON. Each non-empty line in the response represents a single event.

    This response body is of arbitrarily large size. As long as the connection is open, Airship will continue to write to the data stream. If no events have been dispatched down a connection for some time, the API will write to the connection to prevent it from being closed for inactivity. By default, only a blank line (a single newline character) will be written. If the enable_offset_updates field in the request is true, then instead of a blank line, an event will be written with type OFFSET_UPDATE. These events have no body or device field, and always have occurred and processed times indicating when they were sent. The offset field will contain the offset of the last event considered for inclusion in the stream whether or not it was actually sent. This may be useful to track position in the stream when using a filter which removes much of it.

    These events should not be stored, and will be different for every connection even if requests are identical. OFFSET_UPDATE events are not subject to filters, and if requested will be delivered regardless of those specified. You should always check the type field before handling any delivered event.

    If you receive no data or new line characters for ninety seconds, close the connection and reconnect.

    RESPONSE BODY
    • Content-Type: application/vnd.urbanairship+x-ndjson; version=3;

      One of
      • Attribute operation event

        Attribute operation events indicate a change in the device’s attributes. Because attribute operations are related to a device, they will have a device field.

        If you set an attribute on a Named User, Airship records events for each device associated with the Named User.

      • Close

        Occurs when a user closes the app. Close events are often latent, as they aren’t sent back to Airship until the user activates the app again.

      • Compliance Event

        Events relating to regulatory compliance for email and SMS channels.

        All of
        • Object

          OBJECT PROPERTIES
          • id : StringREQUIRED

            Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

          • occurred : StringREQUIRED

            When the event occurred.

          • offset : String

            An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

          • processed : StringREQUIRED

            When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

          • type : StringREQUIRED

            Compliance events are the only types of events returned by this event stream.

            Possible values: COMPLIANCE

        • One of
          • Email bounce event

            An event that occurs when an email could not be delivered to a particular address. The bounce_class can provide more information about why the message bounced.

          • Email create-and-send event

            An event that occurs for email addresses used as a part of a create-and-send message.

          • Email registration event

            An event that occurs when users register to receive email messages.

          • Email unsubscribe event

            A compliance event representing a user who unsubscribed from your email notifications.

          • SMS API initiated opt-in event

            Occurs when an SMS user is registered via the SMS Channel Registration API without an opted_in value — indicating that the user has initiated, but not completed, the registration process. While this event contains a channel_id, you cannot send messages to this channel until the associated user completes the opt-in process (indicated by a mobile_opt_in event).

          • SMS carrier deactivation event

            Occurs when an MSISDN is deactivated by a carrier. This event type does not contain additional properties.

          • SMS create-and-send event

            An event that occurs for SMS channels used as a part of a create-and-send message.

          • SMS custom keyword response event

            Occurs when a mobile-originated keyword is matched, and elicits a custom response.

          • SMS mobile create channel event

            If a channel does not exist for the MSISDN/sender combination and your account is configured to create a channel if none exists in such instances, we will emit this event. The resulting channel will necessarily be opted out, awaiting an opt-in action by the user.

          • SMS mobile keyword matched event

            Occurs when a mobile-originated message contains a recognized keyword.

          • SMS mobile keyword unmatched event

            Occurs when a mobile-originated message does not contain a recognized keyword.

          • SMS mobile opt in event

            Occurs when a user opts in to text messages via a keyword.

          • SMS mobile opt out event

            Occurs when a user sends a MO message that matches a keyword with an opt-out action. If present, this event would supplant a mobile_keyword_matched event.

          • SMS opted out event

            Occurs when a user is opted out of an SMS audience via the Airship API, i.e., not via an opt-out keyword. This event type does not contain additional properties.

          • SMS registration event

            Occurs when a user opts in to receive SMS messages from you, via a call to the SMS registration API.

          • SMS update event

            When an SMS event update occurs.

          • SMS uninstalled event

            Occurs when the SMS uninstall API is called.

          • SMS mobile terminated message event

            Occurs when Airship sends an SMS message to a user. The message represented by this event could be a response to an individual mobile-originated (MO) message, or a message initiated from the Airship UI/API.

      • Control

        Occurs when a device is excluded from a push because it was arbitrarily selected as a member of a control group. Membership in a control group indicates what would’ve happened if you did not send a message to a user at all. This occurs for A/B Test-related pushes only.

      • Custom

        Represents Custom Events that are either emitted from the Airship SDK or submitted through the Custom Events API. You can configure Custom Events yourself. There are also several CUSTOM-type events for email and SMS that are defined by Airship.

        In general, you can expect device information if the event source is SDK or if the event is one of the defined email or SMS events (as defined by event_type).

      • First open

        This event occurs when a user opens an Airship-integrated app for the first time.

      • First opt-in

        This event appears in the stream when a channel is first opted in. This event is specific to email (commercial), SMS, and open channels.

      • In-app button tap

        Occurs when a button is tapped within a Scene.

      • In-app message display

        Occurs when an In-App Automation or Scene is displayed to a user. Because the event pertains to a specific device, the device information object will be populated.

      • In-app message expiration

        Occurs when a new In-App Automation or Scene message has taken the place of another message, a message has passed its expiration, or because displaying the message in-app would be redundant. This event type may be latent. It is not emitted until the app becomes active.

      • In-app message resolution

        Occurs when an In-App Automation or Scene is cleared from the display, either by user action or timeout. Because this event pertains to an individual device, the device information object will be present.

      • In-app page swipe

        Occurs when a user swipes to the next or previous page (screen) in a pager (specific to Scenes).

      • In-app page view

        Occurs when a page (screen) is displayed within a pager (specific to Scenes).

      • In-app pager completed

        Occurs when the last page (screen) of a pager is viewed for the first time (specific to Scenes).

      • In-app pager summary

        Describes the full path a user took within a pager (specific to Scenes), including the order of pages (screens) visited and time spent per page.

      • Location

        An event declaring the device to be at a particular latitude and longitude.

      • Mobile originated event

        Represents a message action that originated from a user — like an inbound SMS or email.

      • Open

        Occurs when a user opens your app.

      • Push body

        Occurs when you initiate a push, automation, or sequence.

        Airship fulfills delivery over a time interval with a number of child pushes, each with a unique Push ID and a common Group ID. There is no guarantee that push body events (defined in Push Body Event) for the child pushes fulfilling a group will appear in the stream.

        Note: When you start, pause, or publish a sequence, Airship emits a push_body event for the sequence itself, and each message contained within the sequence (i.e., messages +1). After you start a sequence, Airship does not issue subsequent push_body events for the sequence unless you pause or publish changes to the sequence.

      • Region event

        Region events are emitted when a device enters or exits a geofence or the range of any of a set of bluetooth beacons. Region events require a Gimbal integration. Events for Gimbal customers include the Gimbal application instance identifier as com.urbanairship.gimbal.aii within the identifiers object.

      • Rich control

        Occurs when a Message Center message is not delivered to a user because they are in a control group.

      • Rich delete

        Occurs when a user deletes a Message Center message from their inbox.

      • Rich delivery

        Occurs when a Message Center message is delivered to a user’s inbox.

        Even though rich push deliveries may or may not cause an alert on the user’s lock screen, they are always associated with a push identifier in the Airship system.

      • Rich read

        Occurs when a user reads a Message Center message in their inbox.

      • Screen viewed

        Occurs when a user has finished viewing a screen. It is up to you to instrument your application with names for each screen. Doing so will allow you to determine the user’s path by filtering on the fields in the table below.

      • Send

        Occurs whenever a push notification is sent to a device identified in the audience selector of a message.

      • Send aborted

        Occurs when a push is dropped from our system before delivery is attempted. This can happen:

        • When using External Data Feeds to personalize a message and an error was encountered or the feed returned a non-successful response
        • When a Message Limit is met
        • When a Ban List webhook issues a drop response for a user

        Device information for the device that did not receive the push is included with SEND_ABORTED events.

      • Send rejected

        Occurs when a push fails during communication with a third party, like APNs or GCM. This typically indicates that the user has uninstalled the app or otherwise invalidated the last-registered credentials stored in Airship. The event contains the rejected push and the group, variant, or campaigns the push belonged to.

        Device information for the device that did not receive the push is included with SEND_REJECTED events.

      • Short link click event

        Occurs when a user taps or “clicks” an Airship-shortened link in an SMS or MMS message.

      • Subscription event

        SUBSCRIPTION events reflect changes to users’ subscription preferences — reflected in opt_in and opt_out values. These events help you track a user’s subscription status in the system and the total number of subscribers.

      • Subscription list event

        Occurs when subscription list enrollment changes for a device or user.

      • Tag change

        Occurs when tags change for a device.

      • Uninstall

        Occurs when a user uninstalls an Airship-integrated app in response to a push.

      • Web click event

        Occurs when a user interacts with a web notification, e.g., clicked or tapped it. Web Click events have a device attribute on the event indicating the channel that was the target of the notification. The body of a Web Click Event is an associated push object.

      • Web session event

        Occurs when an opted in user begins interacting with a website. Web Session events have a device attribute, indicating the channel associated with the user.

  • 402

    Like other Airship applications, Real-Time Data Streaming supports a limited number of simultaneous connections. If you exceed this number, you may receive this response.

  • 404

    We do not have data for the specified App key. This is likely because we have yet to ingress or generate any data for your app.

Compliance Event Stream

The compliance event stream provides real-time access to COMPLIANCE type events. This endpoint is open to all Airship users.

Open a compliance event stream

Example compliance event stream request

POST /api/events/general HTTP/1.1
Authorization: Basic <master authorization string>
X-UA-Appkey: <appkey>
Accept: application/vnd.urbanairship+x-ndjson; version=3;
Content-Type: application/json

{
  "start":"LATEST",
  "enable_offset_updates": true
}

Response

HTTP/1.1 200 OK
Content-encoding: gzip
Content-Type: application/vnd.urbanairship+json; version=3;

{
  "id": "9781ff2e-fa4a-4fa8-bd9d-41f318c48963",
  "offset": "1000001778910",
  "occurred": "2018-11-28T00:02:41.794Z",
  "processed": "2018-11-28T00:02:45.270Z",
  "device": {
      "channel": "5a39b6d8-0a5a-4c2b-a4a0-3d4a71e5254b",
      "device_type": "EMAIL",
      "delivery_address": "bogus@example.com"
  },
  "body": {
      "event_type": "bounce",
      "properties": {
          "bounce_event_type": "bounce",
          "sender": "msprvs1=17870ayYKWpBI=bounces-179492-4@example.com",
          "subject": "You there?",
          "email": "bogus@example.com",
          "bounce_class": "10"
      }
  },
  "type": "COMPLIANCE"
}

POST /api/events/general

Opens a stream delivering events proving data-safety regulation compliance for email and SMS channel-related events (registration, unsubscription, etc.).

Unlike a standard event stream, a compliance event stream is uses basic authorization (like API calls to https://go.urbanairship.com/api)

Security:

header PARAMETERS
  • X-UA-Appkey : StringREQUIRED

    The App Key for the app you want to return compliance events for.

    The application key.

Request Body

  • Content-Type: application/json

    Compliance request

    A request for compliance events is much like a request to /api/events, but has a limited scope.

Responses

  • 200

    The response to a successful request is an unending stream of newline-delimited JSON. Each non-empty line in the response represents a single compliance event. Unlike events in a normal event stream, this endpoint returns events of the compliance type, and is open to SMS and email customers. As long as the connection is open, Airship will continue to write to the event stream.

    If a stream records no events for a period of time, the API will write a blank line (a single newline character) to the connection to prevent it from being closed for inactivity. If the enable_offset_updates field in the request is true, then the blank line is replaced with an OFFSET_UPDATE event. These events have no body or device field, and always have occurred and processed times indicating when they were sent. The offset field will contain the offset of the last event considered for inclusion in the stream whether or not it was actually sent. This may be useful to track position in the stream when using a filter which removes much of it.

    You should not store these events; they will be different for every connection even if requests are identical. OFFSET_UPDATE events are not subject to filters, and are delivered even if not specified in the list of events you want to return. You should always check the type field before handling any delivered event.

    If you do not receive data or new line characters for ninety seconds, close the connection and reconnect.

    RESPONSE BODY
    • Content-Type: application/vnd.urbanairship+x-ndjson; version=3;

      Events relating to regulatory compliance for email and SMS channels.

      All of
      • Object

        OBJECT PROPERTIES
        • id : StringREQUIRED

          Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

        • occurred : StringREQUIRED

          When the event occurred.

        • offset : String

          An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

        • processed : StringREQUIRED

          When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

        • type : StringREQUIRED

          Compliance events are the only types of events returned by this event stream.

          Possible values: COMPLIANCE

      • One of
        • Email bounce event

          An event that occurs when an email could not be delivered to a particular address. The bounce_class can provide more information about why the message bounced.

        • Email create-and-send event

          An event that occurs for email addresses used as a part of a create-and-send message.

        • Email registration event

          An event that occurs when users register to receive email messages.

        • Email unsubscribe event

          A compliance event representing a user who unsubscribed from your email notifications.

        • SMS API initiated opt-in event

          Occurs when an SMS user is registered via the SMS Channel Registration API without an opted_in value — indicating that the user has initiated, but not completed, the registration process. While this event contains a channel_id, you cannot send messages to this channel until the associated user completes the opt-in process (indicated by a mobile_opt_in event).

        • SMS carrier deactivation event

          Occurs when an MSISDN is deactivated by a carrier. This event type does not contain additional properties.

        • SMS create-and-send event

          An event that occurs for SMS channels used as a part of a create-and-send message.

        • SMS custom keyword response event

          Occurs when a mobile-originated keyword is matched, and elicits a custom response.

        • SMS mobile create channel event

          If a channel does not exist for the MSISDN/sender combination and your account is configured to create a channel if none exists in such instances, we will emit this event. The resulting channel will necessarily be opted out, awaiting an opt-in action by the user.

        • SMS mobile keyword matched event

          Occurs when a mobile-originated message contains a recognized keyword.

        • SMS mobile keyword unmatched event

          Occurs when a mobile-originated message does not contain a recognized keyword.

        • SMS mobile opt in event

          Occurs when a user opts in to text messages via a keyword.

        • SMS mobile opt out event

          Occurs when a user sends a MO message that matches a keyword with an opt-out action. If present, this event would supplant a mobile_keyword_matched event.

        • SMS opted out event

          Occurs when a user is opted out of an SMS audience via the Airship API, i.e., not via an opt-out keyword. This event type does not contain additional properties.

        • SMS registration event

          Occurs when a user opts in to receive SMS messages from you, via a call to the SMS registration API.

        • SMS update event

          When an SMS event update occurs.

        • SMS uninstalled event

          Occurs when the SMS uninstall API is called.

        • SMS mobile terminated message event

          Occurs when Airship sends an SMS message to a user. The message represented by this event could be a response to an individual mobile-originated (MO) message, or a message initiated from the Airship UI/API.

Data Formats

Events

Contains information about events organized by type. Some events contain additional subtypes or device information.

Attribute operation event

Example Attribute operation event

{
  "id": "00000173-bb88-8804-b6ec-a40f4ae36648",
  "offset": "1000059326194",
  "occurred": "2020-08-04T22:12:33.924Z",
  "processed": "2020-08-04T22:12:37.672Z",
  "device": {
      "android_channel": "b57f0e3c-da10-4a2b-99d2-5fe2cb30cad3",
      "channel": "b57f0e3c-da10-4a2b-99d2-5fe2cb30cad3",
      "device_type": "ANDROID",
      "named_user_id": "cool_user",
      "attributes": {
        "locale_variant": "",
        "app_version": "2020-02-10T222436-staging",
        "device_model": "Pixel 2 XL",
        "connection_type": "WIFI",
        "app_package_name": "com.company_name.app_name",
        "iana_timezone": "America/Los_Angeles",
        "push_opt_in": "true",
        "locale_country_code": "US",
        "device_os": "10",
        "locale_timezone": "-25200",
        "locale_language_code": "en",
        "location_enabled": "false",
        "background_push_enabled": "true",
        "ua_sdk_version": "12.2.0",
        "location_permission": "NOT_ALLOWED"
      }
  },
  "user": {
    "contact_id": "6b5ca2a2-c1f1-4119-9617-2d5bff0db09d",
    "named_user_id": "cool_user"
  },
  "body": {
      "set": [
        {
            "key": "first_name",
            "value": "Pierre"
        }
      ]
  },
  "type": "ATTRIBUTE_OPERATION"
}
  • Attribute operation events indicate a change in the device’s attributes. Because attribute operations are related to a device, they will have a device field.

    If you set an attribute on a Named User, Airship records events for each device associated with the Named User.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Min properties: 1

      OBJECT PROPERTIES
      • remove : Array [Object]

        The attributes removed from the device in this event. Min items: 1

        ARRAY ITEM
        • OBJECT PROPERTIES
          • key : StringREQUIRED

            The attribute being removed.

      • set : Array [Object]

        Min items: 1

        ARRAY ITEM
        • The attributes set on the device in this event.

          OBJECT PROPERTIES
          • key : StringREQUIRED

            The attribute being set.

          • value : AnyREQUIRED

            The value for the attribute.

            One of
            • String

            • Number

    • device : AnyREQUIRED

      One of
    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: ATTRIBUTE_OPERATION

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Close

Example close event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
    },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
    }
  },
  "user": {
    "contact_id": "982B35f2-0375-6384-893e-a19b5cd5R771"
  },
  "body": {
    "session_id": "61acb6c9-527b-4632-b789-a3e6085b094e"
  },
  "type": "CLOSE"
}
  • Occurs when a user closes the app. Close events are often latent, as they aren’t sent back to Airship until the user activates the app again.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: CLOSE

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Contact change

Example contact change event

{
  "id": "fe882bd1-e0b9-11ea-bc35-0242f70dd9ff",
  "offset": "1000076075647",
  "occurred": "2024-09-25T19:03:13.903Z",
  "processed": "2024-09-25T19:03:14.426Z",
  "user": {
    "contact_id": "6b5ca2a2-c1f1-4119-9617-2d5bff0db09d",
    "named_user_id": "mini_me"
  },
  "device": {
    "ios_channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "device_type": "IOS"
  },
  "body": {
    "change_type": "DISSOCIATION",
    "contact_id": "6b5ca2a2-c1f1-4119-9617-2d5bff0db09d",
    "named_user_id": "mini_me",
    "channel_id": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
  },
  "type": "CONTACT_CHANGE"
}
  • Occurs when a contact is uninstalled, associated with a channel or Named User, or dissociated from a channel or Named User.

    OBJECT PROPERTIES
    • body : Object

      OBJECT PROPERTIES
      • change_type : String

        Describes the reason the contact change event was emitted.

        • ASSOCIATION: The contact was associated to a channel or Named User.
        • DISSOCIATION: The contact was dissociated from a channel or Named User.
        • UNINSTALL: The contact was uninstalled.

        Possible values: ASSOCIATION, DISSOCIATION, UNINSTALL

      • channel_id : String

        The ID of the channel that was associated or dissociated from the contact, depending on the change event type.

      • contact_id : String

        The ID of the contact related to the change event.

      • named_user_id : String

        An optional string that represents the Named User ID related to the change event.

    • device : App device information

      Information about app users generated by the SDK.

    • id : String

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : String

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : String

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : String

      Possible values: CONTACT_CHANGE

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Control

Example control event

{
  "id" : "ff76bb85-74bc-4511-a3bf-11b6117784db",
  "type": "CONTROL",
  "offset": "MTIzNQ",
  "occurred": "2015-05-03T02:32:12.088Z",
  "processed": "2015-05-03T12:12:43.180Z",
  "device": {
      "channel":"a61448e1-be63-43ee-84eb-19446ba743f0",
      "device_type":"ANDROID",
      "android_channel": "a61448e1-be63-43ee-84eb-19446ba743f0"
    },
  "user": {
      "contact_id": "6b5ca2a2-c1f1-4119-9617-2d5bff0db09d",
      "named_user_id": "mini_me"
    },
  "body:" {
    "push_id": "c91d9e1b-605f-4bad-a45d-cdf3e6e0773f",
    "group_id": "3eec7de4-4b19-436e-ad15-88278f9ddb82"
    }
  }
  • Occurs when a device is excluded from a push because it was arbitrarily selected as a member of a control group. Membership in a control group indicates what would’ve happened if you did not send a message to a user at all. This occurs for A/B Test-related pushes only.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • campaigns : Object

        An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

        OBJECT PROPERTIES
        • categories : Array [String]

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

    • device : AnyREQUIRED

      One of
    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: CONTROL

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Custom

Example Custom Event (entire payload on Android channel)

{
  "id": "4f42e8d0-a010-11ee-ae53-000000a91ace",
  "offset": "1009810398823",
  "occurred": "2023-12-21T14:50:35.077Z",
  "processed": "2023-12-21T14:50:40.843Z",
  "device": {
    "android_channel": "ac1960b9-24b6-4851-b907-b9e64f071890",
    "channel": "ac1960b9-24b6-4851-b907-b9e64f071890",
    "device_type": "ANDROID",
    "named_user_id": "c2cbc6e5145763ec58a4d85dfa4323aacc40afea",
    "attributes": {
      "locale_variant": "",
      "connection_type": "CELL",
      "device_model": "M2101K9G",
      "app_version": "18.4.2",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "Europe/Paris",
      "push_opt_in": "true",
      "locale_country_code": "FR",
      "device_os": "12",
      "locale_timezone": "3600",
      "carrier": "Orange F",
      "locale_language_code": "fr",
      "background_push_enabled": "true",
      "ua_sdk_version": "16.9.2"
    }
  },
  "body": {
    "name": "purchased",
    "value": 239.85,
    "transaction": "886f53d4-3e0f-46d7-930e-c2792dac6e0a",
    "interaction_id": "your.store/us/en_us/pd/shoe/pid-11046546/pgid-10978234",
    "interaction_type": "url",
    "properties": {
      "description": "Sneaker purchase",
      "brand": "Victory Sneakers",
      "colors": [
        "red",
        "blue"
      ],
      "items": [
        {
          "text": "New Line Sneakers",
          "price": "$ 79.95"
        },
        {
          "text": "Old Line Sneakers",
          "price": "$ 79.95"
        },
        {
          "text": "Blue Line Sneakers",
          "price": "$ 79.95"
        }
      ],
      "name": "Hugh Manbeing",
      "userLocation": {
        "state": "CO",
        "zip": "80202"
      }
    }
  },
  "session_id": "adc0e12e-dfe8-4375-8121-5b21dbab87f4",
  "source": "SDK",
  "type": "CUSTOM"
}

Example Custom Event from API (shoe sale)

{
  "name" : "shoe-purchase",
  "value" : 239.85,
  "source": "api",
  "transaction" : "Selling all the shoes",
  "session_id": "cfe467a6-ca70-40dd-8c1f-07b2f644935e",
  "properties": {
    "description": "Sneaker purchase",
    "brand": "Victory Sneakers",
    "colors": ["red","blue"],
    "items": [
      {
          "text": "New Line Sneakers",
          "price": "$ 79.95"
      },
      {
          "text": "Old Line Sneakers",
          "price": "$ 79.95"
      },
      {
          "text": "Blue Line Sneakers",
          "price": "$ 79.95"
      }
    ],
    "name": "Hugh Manbeing",
    "userLocation": {
      "state": "CO",
      "zip": "80202"
    }
  }
}

Example Custom Event from SDK (shoe sale)

{
  "name" : "shoe-purchase",
  "value" : 60.000000,
  "source": "sdk",
  "interaction_type" : "Landing Page",
  "interaction_id" : "d01d0380-da2e-11e3-8519-90e2ba299b38",
  "customer_id" : "George@example.com",
  "transaction" : "Selling all the shoes",
  "session_id": "cfe467a6-ca70-40dd-8c1f-07b2f644935e",
  "last_delivered": {
    "push_id": "6e3339ce-529c-42e4-a2f6-7546f81c9828"
  },
  "triggering_push": {
    "push_id": "c2f6c5c5-f353-49c0-b5f7-6e87cf9b1a06",
    "group_id": "8ea2abd6-dbc7-475a-9c57-fb31c7e2999b"
  },
  "properties": {
    "coolest-identifier": "123-cool-cat-321",
    "ltv": false,
    "category": "womens_shoes",
    "id": 1267,
    "description": "plaid canvas",
    "brand": "hipster",
    "new_item": true
  }
}
  • Represents Custom Events that are either emitted from the Airship SDK or submitted through the Custom Events API. You can configure Custom Events yourself. There are also several CUSTOM-type events for email and SMS that are defined by Airship.

    In general, you can expect device information if the event source is SDK or if the event is one of the defined email or SMS events (as defined by event_type).

    All of
    • Object

      OBJECT PROPERTIES
      • id : StringREQUIRED

        Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

      • occurred : StringREQUIRED

        When the event occurred.

      • offset : StringREQUIRED

        An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

      • processed : StringREQUIRED

        When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

      • type : StringREQUIRED

        Possible values: CUSTOM

    • One of
      • Email delivery event

        Occurs when the remote MTA (email server) acknowledges receipt of a message.

      • Email injection event

        This event occurs when the provider (SparkPost) receives a message — typically when a member of the audience responds to an email.

      • Email open event

        Occurs when a recipient opens an email, rendering a tracking pixel at the bottom of the message. If a message is truncated by a client or email provider, a user may have to open it in a separate window to render the tracking pixel (and register this event).

      • Email delay event

        Occurs when a mailbox provider temporarily rejects an email. In general, this event indicates that the provider will attempt to resend the message.

      • Email bounce event

        Occurs when an email could not be delivered to an address. The bounce_class provides additional information about the reason your message bounced. This event occurs in conjunction with a similar COMPLIANCE event.

      • Email click event

        Occurs when a recipient clicks a tracked link in a message. Tracked links are redirected through the provider’s click-tracking server to record the event. Only HTTP and HTTPS links are tracked. Unsubscribe link clicks do not trigger this event.

      • Email unsubscribe link event

        Occurs when a user clicks an unsubscribe link in an email you sent.

      • SMS delivery report

        Delivery reports are Custom Events sent from our third-party SMS providers. These events report the status of your message between the provider and your audience up to, and including, delivery.

      • General Custom Event : Object

        OBJECT PROPERTIES
        • body : ObjectREQUIRED

          OBJECT PROPERTIES
          • customer_id : String

            An external customer-side ID, such as an email address. Absent if empty.

          • interaction_id : String

            An Airship identifier uniquely identifying the interaction. May be absent.

          • interaction_type : String

            The type of interaction as set by the Airship SDK. Values determine whether the interaction triggered an event from the Message Center (ua_mcrap), a landing page (ua_landing_page), an interactive notification (ua_interactive_notification), or a button tap (ua_button_tap).

            Button tap events with custom names are in the format ua_button_tap-<custom name>. For example, for a button action with custom name Cat socks55, the event name is ua_button_tap-Cat socks55. See Buttons and images: App in Actions in the WYSIWYG editor.

            Possible values: ua_mcrap, ua_landing_page, ua_interactive_notification, ua_button_tap, ua_button_tap-<custom name>

          • last_delivered : Object

            Identifies the last push notification the audience received before the event. Absent if the last push occurred more than 12 hours ago.

            OBJECT PROPERTIES
            • campaigns : Object

              An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

              OBJECT PROPERTIES
              • categories : Array [String]

            • group_id : String

              Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

              Format: uuid

            • push_id : StringREQUIRED

              A unique identifier for a push operation. Format: uuid

            • time : String

              The UTC time when the push occurred.

            • variant_id : Integer

              The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

          • name : StringREQUIRED

            A plain-text name given to the event.

          • properties : Object

            Supports up to 100 key/value pairs that describe Custom Event properties. If the event has no custom properties, this field is absent. Max properties: 100

          • session_id : String

            Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

          • source : StringREQUIRED

            The event source. SDK indicates an event sent from the Airship SDK. API indicates an event created by request against the Custom Events API.

            Possible values: SDK, API

          • transaction : String

            If the event is one in a series representing a single transaction, use the value in this field to tie events together.

          • triggering_push : Associated push

            The push that caused the Custom Event. Absent if a causal relationship to a push cannot be established.

          • value : Number

            Populated if the event is associated with a count or amount. Airship treats this field as a representation of money. The value field respects six digits of precision to the right of the decimal point.

        • device : ObjectREQUIRED

          Device information related to the event. Either the channel or named_user_id is required. The named_user_id is required for Custom Events sent via the API, else channel is required.

          OBJECT PROPERTIES
          • channel : StringREQUIRED

            The unique, platform-agnostic channel identifier for a device.

          • device_type : StringREQUIRED

            The type of device the event was generated from.

            Possible values: OPEN, WEB, ANDROID, IOS, AMAZON, EMAIL, SMS

          • named_user_id : String

            The Named User identifier for a device.

Feature Flag interaction event

Example Feature Flag interaction event

{
  "id":"c3d0543b-c8cd-4eaa-8fda-5dbfa70257ae",
  "offset":"1000197715722",
  "occurred":"2023-09-15T19:12:56.000Z",
  "processed":"2023-09-21T23:02:39.419Z",
  "device": {
    "channel":"8c36e8c7-5a73-47c0-9716-99fd3d4197d5",
    "device_type":"WEB"
  },
  "body": {
    "flag_id":"27f26d85-0550-4df5-85f0-7022fa7a5925",
    "flag_name":"rad_flag_name",
    "eligible":true
  },
  "type":"FEATURE_FLAG_INTERACTION"
}
  • Occurs when a user interacts with a tracked flagged feature. See Feature Flags. The events have a flag ID and flag name, which identify which flagged feature a user interacted with. They also have a boolean eligible field, which indicates whether or not the user was in the Feature Flag audience and had access to the feature.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • eligible : BooleanREQUIRED

        Indicates whether or not the user was in the Feature Flag audience and had access to the feature. true means the user was in the Feature Flag audience and had access to the feature.

      • flag_id : StringREQUIRED

        A UUID that is associated with a feature flag.

      • flag_name : StringREQUIRED

        The name of a feature flag.

    • device : AnyREQUIRED

      One of
    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: FEATURE_FLAG_INTERACTION

First open

Example first open event

{
  "device": {
    "ios_channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "device_type": "IOS",
  },
  "id": "00000169-4a14-67b2-1ddd-d9e733622c3a",
  "occurred": "2019-03-04T19:00:45.106Z",
  "offset": "1000001260057",
  "processed": "2019-03-04T19:00:47.094Z",
  "type": "FIRST_OPEN"
}
  • This event occurs when a user opens an Airship-integrated app for the first time.

    OBJECT PROPERTIES
    • device : AnyREQUIRED

      One of
    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: FIRST_OPEN

First opt-in

Example first opt-in event

{
  "device": {
    "channel": "820e4493-e4c9-4577-99bc-a98180599f73",
    "delivery_address": "new.user@urbanairship.com",
    "device_type": "EMAIL"
  },
  "id": "00000169-4a14-67b2-1ddd-d9e733622c3a",
  "occurred": "2019-03-04T19:00:45.106Z",
  "offset": "1000001260057",
  "processed": "2019-03-04T19:00:47.094Z",
  "type": "FIRST_OPT_IN"
}
  • This event appears in the stream when a channel is first opted in. This event is specific to email (commercial), SMS, and open channels.

    OBJECT PROPERTIES
    • device : AnyREQUIRED

      One of
    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: FIRST_OPT_IN

In-app button tap

Example in-app button tap event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
      },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
    "body": {
      "push_id": "a9a5912c-2526-4383-b516-711c58aff900",
      "group_id": "a9a5912c-2526-4383-b516-711c58aff900",
      "session_id": "94e8caed-9b82-4166-b585-a01eed933855",
      "triggering_push": {
        "push_id": "a183f051-7d69-11ed-86d9-0242dc3f670b",
        "group_id": "8e7cfac3-cfd3-4f4f-a9a1-d766de9b063a",
        "campaigns": {
          "categories": [
            "welcome_series"
          ]
        }
      },
      "context": {
        "reporting_context": {
          "content_types": [
            "survey"
          ]
        },
        "state": {
          "form": {
            "form_identifier": "870db95f-3715-4c98-8047-2871c175d003",
            "submitted": true,
            "type": "nps",
            "response_type": "nps"
          },
          "pager": {
            "identifier": "9e051354-185b-4d4d-888a-885def2e6b7a",
            "page_identifier": "32f4fc47-74ee-41c6-8e16-c9e0aa364101",
            "page_index": 1,
            "page_count": 2,
            "completed": true
          }
        }
      },
      "button_id": "dismiss_button"
    },
  "type": "IN_APP_BUTTON_TAP"
}
  • Occurs when a button is tapped within a Scene.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app button tap was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • button_id : String

        A unique identifier for the button.

      • context : In-app context

        The context provides the view state when a button, pager, or form interaction occurs.

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • locale : String

        Optional string that defines the country and language this in-app-automation was localized as by remote-config-api. country - (String) An ISO 3166-1 country code, set by device settings. language - (String) The ISO 639-1 two-letter language code reflecting the language the phone is set to.

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        An ISO 8601 date-time indicating when the payload defining the in-app message was sent to the device. May be absent.

      • triggering_push : Associated push

        Appears if the user began the current session by opening a push notification.

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_BUTTON_TAP

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app experiences

Example in-app experiences event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
      },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
    "body": {
      "event_name": "scene_displayed",
      "time_sent": "2022-03-11T08:40:56.592Z",
      "session_id": "20162c5f-36c8-1808-6fc6-8eb836d7f7f2",
      "push_id": "2e12bc7b-04f2-3487-1480-44269b04c131",
      "group_id": "2e12bc7b-04f2-3487-1480-44269b04c131",
      "triggering_push": {
        "push_id": "5cc872d5-708d-dffb-0959-991b014dcd2d",
        "time": "2022-03-11T08:40:56.692Z",
        "campaigns": {
          "categories": [
            "welcome_series"
          ]
        }
      }
    },
  "type": "IN_APP_EXPERIENCES"
}
  • Events that occur related to the display and completion behavior of a Scene. These events are derived from source events generated by the SDK, so a single user action may generate two events: one for the SDK event, one representing the user action as it relates to their actual activity within the app or website.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app message was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • campaigns : Object

        An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

        OBJECT PROPERTIES
        • categories : Array [String]

      • event_name : String

        The name of the event.

        Possible values: scene_displayed, scene_completed, scene_incomplete, survey_displayed, survey_submitted, survey_not_submitted

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • survey_type : String

        Only present for survey events.

        Possible values: nps, user_feedback

      • time_sent : String

        An ISO 8601 date-time, in UTC, when the event occurred. May be absent.

      • triggering_push : Associated push

        Present if the user started the current session by opening a push notification.

      • variant_id : Integer

        The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_EXPERIENCES

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app form display

Example in-app form display event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
      },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
    "body": {
      "push_id": "56d72d43-5567-4c94-887a-05b46ca9ef3e",
      "group_id": "56d72d43-5567-4c94-887a-05b46ca9ef3e",
      "session_id": "1347589f-0608-4198-b170-bfb46271877a",
      "triggering_push": {
        "push_id": "a183f051-7d69-11ed-86d9-0242dc3f670b",
        "group_id": "8e7cfac3-cfd3-4f4f-a9a1-d766de9b063a",
        "campaigns": {
          "categories": [
            "welcome_series"
          ]
        }
      },
      "context": {
        "reporting_context": {
          "content_types": [
            "survey"
          ]
        },
        "state": {
          "form": {
            "form_identifier": "434b918f-6a00-496f-963c-f54923a67abf",
            "submitted": false,
            "type": "nps",
            "response_type": "nps"
          }
        }
      },
      "type": "DISPLAY",
      "forms": [
        {
          "form_id": "434b918f-6a00-496f-963c-f54923a67abf"
        }
      ]
    },
  "type": "IN_APP_FORM_DISPLAY"
}
  • Occurs when a survey form in a Scene is displayed.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app form was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • context : In-app context

        The context provides the view state when a button, pager, or form interaction occurs.

      • forms : Object

        OBJECT PROPERTIES
        • form_id : String

          The identifier of the form controller (required). Format: uuid

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        An ISO 8601 date-time indicating when the payload defining the in-app message was sent to the device. May be absent.

      • triggering_push : Associated push

        Present if the user started the current session by opening a push notification.

      • type : String

        Required for this type, the value is always DISPLAY.

        Possible values: DISPLAY

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_FORM_DISPLAY

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app form result

Example in-app form result event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
      },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
    "body": {
      "push_id": "683b395d-7abf-40f9-be49-4b64debfbd22",
      "group_id": "683b395d-7abf-40f9-be49-4b64debfbd22",
      "session_id": "d05323b3-8176-406d-aff5-5194341f4a5c",
      "triggering_push": {
        "push_id": "a183f051-7d69-11ed-86d9-0242dc3f670b",
        "group_id": "8e7cfac3-cfd3-4f4f-a9a1-d766de9b063a",
        "campaigns": {
          "categories": [
            "welcome_series"
          ]
        }
      },
      "context": {
        "reporting_context": {
          "content_types": [
            "survey"
          ]
        },
        "state": {
          "form": {
            "form_identifier": "316e8ed4-277e-408b-9c47-a6bd7a4251c5",
            "submitted": false,
            "type": "nps",
            "response_type": "nps"
          }
        }
      },
      "type": "RESULT",
      "forms": [
        {
          "form_id": "316e8ed4-277e-408b-9c47-a6bd7a4251c5",
          "type": "nps",
          "response_type": "nps",
          "nps": {
            "question_id": "b6563a26-a927-4ff2-af8a-08d94d8b84a3",
            "score": 9,
            "audience_category": "PROMOTER"
          },
          "responses": [
            {
              "question_id": "b6563a26-a927-4ff2-af8a-08d94d8b84a3",
              "type": "score",
              "value": "9"
            },
            {
              "question_id": "c867cf61-398f-443c-b991-443fa8aff4b9",
              "type": "text_input",
              "value": "Hello, world"
            }
          ]
        }
      ]
    },
  "type": "IN_APP_FORM_RESULT"
}
  • Occurs when a survey form in a Scene is submitted.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app form was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • context : In-app context

        The context provides the view state when a button, pager, or form interaction occurs.

      • forms : Object

        OBJECT PROPERTIES
        • form_id : String

          The identifier of the form controller (required). Format: uuid

        • nps : Object

          OBJECT PROPERTIES
          • audience_category : StringREQUIRED

            The NPS category.

            Possible values: PROMOTER, PASSIVE, DETRACTOR

          • question_id : StringREQUIRED

            The question identifier. Format: uuid

          • score : NumberREQUIRED

            A number between 0 and 10.

        • response_type : String

          The survey response type.

          Possible values: nps, user_feedback

        • responses : Object

          OBJECT PROPERTIES
          • question_id : StringREQUIRED

            The question identifier. Format: uuid

          • type : StringREQUIRED

            The question type.

            Possible values: single_choice, multiple_choice, text_input, email_input

          • value : ObjectREQUIRED

            The choice type identifier for single_choice or multiple_choice questions, or user-provided text for text_input or email_input fields.

        • type : String

          The form type.

          Possible values: nps, form

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        An ISO 8601 date-time indicating when the payload defining the in-app message was sent to the device. May be absent.

      • triggering_push : Associated push

        Present if the user started the current session by opening a push notification.

      • type : String

        Required for this type, the value is always RESULT.

        Possible values: RESULT

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_FORM_RESULT

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app message control

Example in-app message control event

{
  "id": "e9e281d0-2b39-11ee-ac42-00000a91ace1",
  "offset": "1000194023208",
  "occurred": "2023-07-25T22:22:40.262Z",
  "processed": "2023-07-25T22:23:43.464Z",
  "device": {
    "ios_channel": "414a7c7c-c3c5-4a9f-b1de-ebd5a85104e0",
    "channel": "414a7c7c-c3c5-4a9f-b1de-ebd5a85104e0",
    "device_type": "IOS",
    "attributes": {
      "locale_variant": "",
      "connection_type": "WIFI",
      "device_model": "arm64",
      "app_version": "1.0",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "17.0",
      "locale_timezone": "-25200",
      "locale_language_code": "en",
      "background_push_enabled": "true",
      "ua_sdk_version": "17.1.0"
    }
  },
  "body": {
    "push_id": "6fc3b3a7-d860-4acd-b80d-82af02b5b0fa",
    "group_id": "6fc3b3a7-d860-4acd-b80d-82af02b5b0fa",
    "session_id": "f31c3769-8517-402a-8ae6-cdb323f5ec22",
    "context": {
      "reporting_context": {
        "content_types": [
          "scene"
        ]
      }
    },
    "type": "CONTROL"
  },
  "type": "IN_APP_MESSAGE_CONTROL"
}
  • Occurs when an In-App Automation or Scene is not delivered because the targeted user’s contact or Channel ID was part of a control group.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app message was created by the application logic, not the Airship system. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        The date-time when the in-app message payload was sent to the device.

      • triggering_push : Associated push

        Appears if the user began the current session by opening a push notification.

      • type : String

        Indicates that the in-app message was never delivered because the user was part of an experiment control group.

        CONTROL indicates that the message was not displayed because the channel or contact was hashed into the experiment control group.

        Possible values: CONTROL

      • variant_id : Integer

        The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_MESSAGE_CONTROL

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app message display

Example in-app message display event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
      },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
    "body": {
      "push_id": "68be9eba-3f3e-4763-bbd1-c921a164af1b",
      "group_id": "49e59f68-d58c-4a2f-86ab-112f52e3c5d2",
      "variant_id": 5,
      "session_id": "cfe467a6-ca70-40dd-8c1f-07b2f644935e",
      "triggering_push": {
        "push_id": "18c0f649-2330-4fb0-a9fa-ad029f5f4e0e",
        "group_id": "c4c89025-0d25-434c-8040-283990585f01",
        "campaigns": {
          "categories": [
            "welcome_series"
          ]
        }
      }
    },
  "type": "IN_APP_MESSAGE_DISPLAY"
}

Example in-app message display event with context

{
    "id": "c7b97941-5d1d-11ee-b7be-00000a91ace6",
    "offset": "1004335885834",
    "occurred": "2023-09-27T10:08:14.965Z",
    "processed": "2023-09-27T10:08:18.230Z",
    "device":
    {
        "android_channel": "3e75f0be-f312-413f-90c0-81d628410514",
        "channel": "3e75f0be-f312-413f-90c0-81d628410514",
        "device_type": "ANDROID",
        "named_user_id": "exampleuser",
        "attributes":
        {
            "locale_variant": "",
            "connection_type": "CELL",
            "device_model": "SM-G981B",
            "app_version": "13.13.3",
            "app_package_name": "com.company_name.app_name",
            "iana_timezone": "Europe/Paris",
            "push_opt_in": "true",
            "locale_country_code": "FR",
            "device_os": "13",
            "locale_timezone": "7200",
            "carrier": "F-Bouygues Telecom",
            "locale_language_code": "fr",
            "background_push_enabled": "true",
            "ua_sdk_version": "16.4.0"
        }
    },
    "body":
    {
        "push_id": "0390bd82-c28f-44cb-98d9-3f9b7eef939d",
        "group_id": "0390bd82-c28f-44cb-98d9-3f9b7eef939d",
        "campaigns":
        {
            "categories":
            [
                "WELCOME_SERIES"
            ]
        },
        "context": {
          "reporting_context": {
            "content_types": [
              "scene"
            ]
          }
        },
        "session_id": "6e11b019-4da0-4c66-8063-92ec2ce4ee36"
    },
    "type": "IN_APP_MESSAGE_DISPLAY"
}
  • Occurs when an In-App Automation or Scene is displayed to a user. Because the event pertains to a specific device, the device information object will be populated.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app message was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • campaigns : Object

        An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

        OBJECT PROPERTIES
        • categories : Array [String]

      • context : In-app context

        The context provides the view state when a button, pager, or form interaction occurs.

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • triggering_push : Associated push

        Appears if the user began the current session by opening a push notification.

      • variant_id : Integer

        The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_MESSAGE_DISPLAY

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app message exclusion

Example in-app message exclusion event

{
  "id": "7fff2560-1d33-11ef-b484-0000a91acec5",
  "offset":"1000215341033",
  "occurred":"2024-05-28T20:47:20.183Z",
  "processed":"2024-05-28T20:47:31.090Z",
  "device": {
    "android_channel": "88663749-a19d-4daf-8d4c-09fc4cf03a12",
    "channel":"87663620-a99d-4daf-8f4c-88fc4cf03af4",
    "device_type": "ANDROID",
    "named_user_id": "cool_named_user",
    "attributes": {
      "locale_variant": "",
      "connection_type": "WIFI",
      "device_model": "DE2123",
      "app_version": "2024-05-25T040548",
      "app_package_name": "com.package.example",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "120",
      "locale_timezone": "-27000",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "background_push_enabled": "false",
      "ua_sdk_version":"18.0.0"
    }
  },
  "body": {
    "push_id": "be711edb-d16d-465e-8091-a831041e2e53",
    "group_id":"be711edb-d16d-465e-8091-a831041e2e53",
    "session_id":"e8e72fa2-bfbc-405d-af85-8b428c8e38d9",
    "context": {
    },
    "type":"AUDIENCE_CHECK_EXCLUDED"
  },
  "type":"IN_APP_MESSAGE_EXCLUSION"
}
  • Occurs when an In-App Automation or Scene is not displayed on a device because the user was banned. See Ban Lists.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app message was created by the application logic, not the Airship system. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        The date-time when the in-app message payload was sent to the device.

      • triggering_push : Associated push

        Appears if the user began the current session by opening a push notification.

      • type : String

        Indicates that the in-app message was not displayed on a device because the channel or Named User was excluded from the push. The only possible value is AUDIENCE_CHECK_EXCLUDED, which indicates that the message was not displayed because the channel or Named User is on a project’s Ban List. This is also reported when a 400- or 500-level error resolving the user’s status on a Ban List occurs.

        Possible values: AUDIENCE_CHECK_EXCLUDED

      • variant_id : Integer

        The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_MESSAGE_EXCLUSION

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app message expiration

Example in-app message expiration event

{
  "id": "910fea50-5d42-1159-b702-024288f4e1d3",
  "offset": "1000022468589",
  "occurred": "2019-04-03T18:59:02.246Z",
  "processed": "2019-04-03T19:10:26.301Z",
  "device": {
    "android_channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "device_type": "ANDROID",
    "identifiers": {
      "com.urbanairship.gimbal.aii": "2471037d-71d8-4229-a40f-df719f1af914",
      "session_id": "54204a73-7a95-4ffc-8051-bf230d086e19",
      "GA_CID": "90d56c80-f31f-49fd-87b0-20deb3d2602a"
    },
    "attributes": {
      "locale_variant": "",
      "app_version": "dev",
      "device_model": "Android SDK built for x86",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "9",
      "locale_timezone": "-25200",
      "carrier": "Android",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "9.7.0",
      "location_permission": "NOT_ALLOWED"
    }
  },
  "body": {
    "push_id": "a1fe5f2a-1d51-4f3a-a77b-35018031741d",
    "session_id": "3514bd74-bfa8-149e-9c12-a44794994ca8",
    "triggering_push": {
      "push_id": "a183f051-7d69-11ed-86d9-0242dc3f670b",
      "group_id": "8e7cfac3-cfd3-4f4f-a9a1-d766de9b063a",
      "campaigns": {
        "categories": [
          "welcome_series"
        ]
      }
    },
    "type": "EXPIRED",
    "time_expired": "1970-01-01T00:00:00.000Z"
  },
  "type": "IN_APP_MESSAGE_EXPIRATION"
}
  • Occurs when a new In-App Automation or Scene message has taken the place of another message, a message has passed its expiration, or because displaying the message in-app would be redundant. This event type may be latent. It is not emitted until the app becomes active.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app message was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • replacing_push : Associated push

        An associated push object for the in-app message that replaced the message. Present if type is REPLACED.

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_expired : String

        The date-time when the message was set to expire.

      • time_sent : String

        The date-time when the in-app message payload was sent to the device.

      • triggering_push : Associated push

        Appears if the user began the current session by opening a push notification.

      • type : String

        Indicates how the in-app message expired.

        • REPLACED: The in-app message was replaced by a more current one. If type is REPLACED, the replacing_push key will be present.
        • EXPIRED: The in-app message exceeded its expiration date. If type is EXPIRED, then the time key will be present.
        • ALREADY_DISPLAYED: The message was opened directly (either from the lock screen or notification center). The Airship SDK will NOT display it again in the app, because the user is guaranteed to have seen it.

        Possible values: REPLACED, EXPIRED, ALREADY_DISPLAYED

      • variant_id : Integer

        The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_MESSAGE_EXPIRATION

In-app message resolution

Example in-app message resolution event

{
  "id": "910fea50-5d42-1159-b702-024288f4e1d3",
  "offset": "1000022468589",
  "occurred": "2019-04-03T18:59:02.246Z",
  "processed": "2019-04-03T19:10:26.301Z",
  "device": {
    "android_channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "device_type": "ANDROID",
    "identifiers": {
      "com.urbanairship.gimbal.aii": "2471037d-71d8-4229-a40f-df719f1af914",
      "session_id": "54204a73-7a95-4ffc-8051-bf230d086e19",
      "GA_CID": "90d56c80-f31f-49fd-87b0-20deb3d2602a"
    },
    "attributes": {
      "locale_variant": "",
      "app_version": "dev",
      "device_model": "Android SDK built for x86",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "9",
      "locale_timezone": "-25200",
      "carrier": "Android",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "9.7.0",
      "location_permission": "NOT_ALLOWED"
    }
  },
  "body": {
    "push_id": "86ee0a6e-a46a-4bbe-a3d1-804891baaee4",
    "group_id": "68991b8d-0d6b-4e05-bc62-2cdec2085c18",
    "triggering_push": {
      "push_id": "a183f051-7d69-11ed-86d9-0242dc3f670b",
      "group_id": "8e7cfac3-cfd3-4f4f-a9a1-d766de9b063a",
      "campaigns": {
        "categories": [
          "welcome_series"
        ]
      }
    },
    "time_sent": "2019-03-03T19:10:26.301Z",
    "type": "BUTTON_CLICK",
    "button_id": "yes",
    "button_group": "",
    "button_description": "Yes",
    "duration": 10000000000
  },
  "type": "IN_APP_MESSAGE_RESOLUTION"
}

Example in-app message resolution event with context

{
    "id": "a0bc5c50-6d34-11ee-95dc-0000a91aced1",
    "offset": "1064988067725",
    "occurred": "2023-10-17T21:32:01.243Z",
    "processed": "2023-10-17T21:32:10.638Z",
    "device":
    {
        "ios_channel": "870c200f-d0e7-4e45-bd99-5b290c80b6a7",
        "channel": "870c200f-d0e7-4e45-bd99-5b290c80b6a7",
        "device_type": "IOS",
        "named_user_id": "exampleuser",
        "attributes":
        {
            "locale_variant": "",
            "connection_type": "WIFI",
            "device_model": "iPhone15,2",
            "app_version": "15.8.1",
            "app_package_name": "com.company_name.app_name",
            "iana_timezone": "America/New_York",
            "push_opt_in": "false",
            "locale_country_code": "US",
            "device_os": "16.6.1",
            "locale_timezone": "-14400",
            "carrier": "AT&T",
            "locale_language_code": "en",
            "background_push_enabled": "true",
            "ua_sdk_version": "16.12.0"
        }
    },
    "body":
    {
        "push_id": "4015241b-2e71-43d8-85a0-cd500e97c15d",
        "group_id": "4015241b-2e71-43d8-85a0-cd500e97c15d",
        "campaigns":
        {
            "categories":
            [
                "OfferLevel45",
                "VIP_OFFER"
            ]
        },
        "context": {
          "reporting_context": {
            "content_types": [
              "scene"
            ]
          }
        },
        "session_id": "832e65de-453e-426d-a4a3-bd70ab0f827e",
        "type": "USER_DISMISSED",
        "duration": 2503
    },
    "type": "IN_APP_MESSAGE_RESOLUTION"
}
  • Occurs when an In-App Automation or Scene is cleared from the display, either by user action or timeout. Because this event pertains to an individual device, the device information object will be present.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app message was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • button_description : String

        The title of the button the user interacted with. Present if type is set to BUTTON_CLICK.

      • button_group : String

        A category associated with the in-app message button. It may be predefined or custom defined, or blank if there is no association with a category.

      • button_id : String

        A unique identifier for the button. Present if type is set to BUTTON_CLICK.

      • campaigns : Object

        An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

        OBJECT PROPERTIES
        • categories : Array [String]

      • context : In-app context

        The context provides the view state when a button, pager, or form interaction occurs.

      • duration : Integer

        The number of milliseconds that the user was on the screen. Format: milliseconds

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        The date-time when the in-app message payload was sent to the device.

      • triggering_push : Associated push

        Appears if the user began the current session by opening a push notification.

      • type : String

        Indicates how the in-app message was resolved.

        • BUTTON_CLICK: The user clicked/tapped a button in the message. This type is accompanied by additional fields.
        • MESSAGE_CLICK: The user clicked/tapped a part of the message, but not a button.
        • TIMED_OUT: The user ignored the notification, and it dismissed itself after an interval of time.
        • USER_DISMISSED: The user clicked/tapped X to close the message or closed it using the swipe gesture.

        Possible values: BUTTON_CLICK, MESSAGE_CLICK, TIMED_OUT, USER_DISMISSED

      • variant_id : Integer

        The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_MESSAGE_RESOLUTION

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app page swipe

Example in-app page swipe event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
      },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
    "body": {
      "push_id": "91baacc8-1ebf-411d-a77a-ee036c44e7ce",
      "group_id": "91baacc8-1ebf-411d-a77a-ee036c44e7ce",
      "session_id": "a135087c-ba97-4b87-ac1d-a216f2cccb7c",
      "triggering_push": {
        "push_id": "a183f051-7d69-11ed-86d9-0242dc3f670b",
        "group_id": "8e7cfac3-cfd3-4f4f-a9a1-d766de9b063a",
        "campaigns": {
          "categories": [
            "welcome_series"
          ]
        }
      },
      "context": {
        "reporting_context": {
          "content_types": [
            "scene"
          ]
        },
        "state": {
          "pager": {
            "identifier": "302e80f2-1f9d-4e0d-890d-ff54196189d9",
            "page_identifier": "c3c6fe17-1c47-4f52-bff9-f95ed8a14072",
            "page_index": 1,
            "page_count": 3,
            "completed": true
          }
        }
      },
      "pager_identifier": "302e80f2-1f9d-4e0d-890d-ff54196189d9",
      "from_page_identifier": "c3c6fe17-1c47-4f52-bff9-f95ed8a14072",
      "from_page_index": 1,
      "to_page_identifier": "2ecb1788-30b9-4d8f-a267-38f687fc6e8b",
      "to_page_index": 0
    },
  "type": "IN_APP_PAGE_SWIPE"
}
  • Occurs when a user swipes to the next or previous page (screen) in a pager (specific to Scenes).

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app pager was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • context : In-app context

        The context provides the view state when a button, pager, or form interaction occurs.

      • from_page_index : Number

        Is the previous page index.

      • from_pager_identifier : String

        Is the previous page identifier. Format: uuid

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • locale : String

        Optional string that defines the country and language this in-app-automation was localized as by remote-config-api. country - (String) An ISO 3166-1 country code, set by device settings. language - (String) The ISO 639-1 two-letter language code reflecting the language the phone is set to.

      • pager_identifier : String

        Is the pager controller identifier. Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        An ISO 8601 date-time indicating when the payload defining the in-app pager was sent to the device. May be absent.

      • to_page_identifier : String

        Is the current page identifier. Format: uuid

      • to_page_index : Number

        Is the current page index.

      • triggering_push : Associated push

        Present if the user started the current session by opening a push notification.

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_PAGE_SWIPE

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app page view

Example in-app page view event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
      },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
    "body": {
      "push_id": "d2482092-a0f5-4ec0-bf0a-f17a1657d1b0",
      "group_id": "d2482092-a0f5-4ec0-bf0a-f17a1657d1b0",
      "session_id": "65be61ee-dc60-47ec-b9d3-ebc469e0523b",
      "triggering_push": {
        "push_id": "a183f051-7d69-11ed-86d9-0242dc3f670b",
        "group_id": "8e7cfac3-cfd3-4f4f-a9a1-d766de9b063a",
        "campaigns": {
          "categories": [
            "welcome_series"
          ]
        }
      },
      "context": {
        "reporting_context": {
          "content_types": [
            "scene"
          ]
        },
        "state": {
          "pager": {
            "identifier": "f4d3d085-010b-4c2b-9e4d-574112b892ed",
            "page_identifier": "e55e6d8e-f04d-43f1-939c-822a1dd5a5e3",
            "page_index": 0,
            "page_count": 1,
            "completed": true
          }
        }
      },
      "pager_identifier": "f4d3d085-010b-4c2b-9e4d-574112b892ed",
      "page_identifier": "e55e6d8e-f04d-43f1-939c-822a1dd5a5e3",
      "page_index": 0,
      "page_count": 1,
      "viewed_count": 1,
      "completed": true
    },
  "type": "IN_APP_PAGE_VIEW"
}
  • Occurs when a page (screen) is displayed within a pager (specific to Scenes).

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app pager was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • completed : Boolean

        True if the user reached the end of the pager.

      • context : In-app context

        The context provides the view state when a button, pager, or form interaction occurs.

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • locale : String

        Optional string that defines the country and language this in-app-automation was localized as by remote-config-api. country - (String) An ISO 3166-1 country code, set by device settings. language - (String) The ISO 639-1 two-letter language code reflecting the language the phone is set to.

      • page_count : Number

        Total number of pages.

      • page_identifier : String

        The current page identifier. Format: uuid

      • page_index : Number

        Is the current pager index.

      • pager_identifier : String

        Is the pager controller identifier. Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        An ISO 8601 date-time indicating when the payload defining the in-app message was sent to the device. May be absent.

      • triggering_push : Associated push

        Present if the user started the current session by opening a push notification.

      • viewed_count : Number

        Number of times the current page has been viewed.

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_PAGE_VIEW

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app pager completed

Example in-app pager completed event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
      },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
    "body": {
      "push_id": "a9a5912c-2526-4383-b516-711c58aff900",
      "group_id": "a9a5912c-2526-4383-b516-711c58aff900",
      "session_id": "94e8caed-9b82-4166-b585-a01eed933855",
      "triggering_push": {
        "push_id": "a183f051-7d69-11ed-86d9-0242dc3f670b",
        "group_id": "8e7cfac3-cfd3-4f4f-a9a1-d766de9b063a",
        "campaigns": {
          "categories": [
            "welcome_series"
          ]
        }
      },
      "context": {
        "reporting_context": {
          "content_types": [
            "survey"
          ]
        },
        "state": {
          "form": {
            "form_identifier": "870db95f-3715-4c98-8047-2871c175d003",
            "submitted": true,
            "type": "nps",
            "response_type": "nps"
          },
          "pager": {
            "identifier": "9e051354-185b-4d4d-888a-885def2e6b7a",
            "page_identifier": "32f4fc47-74ee-41c6-8e16-c9e0aa364101",
            "page_index": 1,
            "page_count": 2,
            "completed": true
          }
        }
      },
      "pager_identifier": "9e051354-185b-4d4d-888a-885def2e6b7a",
      "page_identifier": "32f4fc47-74ee-41c6-8e16-c9e0aa364101",
      "page_index": 1,
      "page_count": 2
    },
  "type": "IN_APP_PAGER_COMPLETED"
}
  • Occurs when the last page (screen) of a pager is viewed for the first time (specific to Scenes).

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app pager was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • context : In-app context

        The context provides the view state when a button, pager, or form interaction occurs.

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • locale : String

        Optional string that defines the country and language this in-app-automation was localized as by remote-config-api. country - (String) An ISO 3166-1 country code, set by device settings. language - (String) The ISO 639-1 two-letter language code reflecting the language the phone is set to.

      • page_count : Number

        Total number of pages.

      • page_identifier : String

        The current page identifier. Format: uuid

      • page_index : Number

        Is the current pager index.

      • pager_identifier : String

        Is the pager controller identifier. Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        An ISO 8601 date-time indicating when the payload defining the in-app message was sent to the device. May be absent.

      • triggering_push : Associated push

        Present if the user started the current session by opening a push notification.

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_PAGER_COMPLETED

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

In-app pager summary

Example in-app pager summary event

{
  "id": "51dd7c1c-5621-11e9-9601-0242539d70ef",
  "offset": "1000022467557",
  "occurred": "2019-03-29T21:42:21.245Z",
  "processed": "2019-04-03T15:10:23.828Z",
  "device": {
    "ios_channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "channel": "a61448e1-be63-43ee-84eb-19446ba743f0",
    "device_type": "IOS",
    "named_user_id": "cooluser",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B147E0CE-272E-4047-A79C-30D02A2F213D",
      "GA_CID": "a61448e1-be63-43ee-84eb-19446ba743f0",
      "com.urbanairship.idfa": "A76E6F83-4F4A-47E2-BFDD-72BED91D2D1F",
      "com.urbanairship.vendor": "ED496B1A-43F1-45A9-A7C1-80125DE8A5B1"
      },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone7,2",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "11.4",
      "locale_timezone": "-25200",
      "carrier": "AT&T",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
    "body": {
      "push_id": "898c0cde-02d8-4674-8c3a-91183aab8b7b",
      "group_id": "898c0cde-02d8-4674-8c3a-91183aab8b7b",
      "session_id": "393ae595-bb43-48a2-9878-996e11581754",
      "triggering_push": {
        "push_id": "a183f051-7d69-11ed-86d9-0242dc3f670b",
        "group_id": "8e7cfac3-cfd3-4f4f-a9a1-d766de9b063a",
        "campaigns": {
          "categories": [
            "welcome_series"
          ]
        }
      },                    
      "context": {
        "reporting_context": {
          "content_types": [
            "scene"
          ]
        },
        "state": {
          "pager": {
            "identifier": "7cb3bd21-060c-46d6-9e88-fb0b5376897e",
            "page_identifier": "7888b6dd-0a33-420d-a596-1342dca84fcf",
            "page_index": 0,
            "page_count": 1,
            "completed": false
          }
        }
      },
      "pager_identifier": "7cb3bd21-060c-46d6-9e88-fb0b5376897e",
      "page_count": 1,
      "completed": false,
      "viewed_pages": [
        {
          "page_identifier": "7888b6dd-0a33-420d-a596-1342dca84fcf",
          "page_index": 0,
          "display_time_ms": 33019
        }
      ]
    },
  "type": "IN_APP_PAGER_SUMMARY"
}
  • Describes the full path a user took within a pager (specific to Scenes), including the order of pages (screens) visited and time spent per page.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • app_defined_id : String

        An identifier defined by the application if the in-app pager was created by the application logic, not Airship. If this field is present, the event body will not contain push_id, group_id, variant_id, or triggering_push fields.

      • completed : Boolean

        True if the user reached the end of the pager.

      • context : In-app context

        The context provides the view state when a button, pager, or form interaction occurs.

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • locale : String

        Optional string that defines the country and language this in-app-automation was localized as by remote-config-api. country - (String) An ISO 3166-1 country code, set by device settings. language - (String) The ISO 639-1 two-letter language code reflecting the language the phone is set to.

      • page_count : Number

        Total number of pages.

      • page_identifier : String

        The current page identifier. Format: uuid

      • pager_identifier : String

        Is the pager controller identifier. Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • time_sent : String

        An ISO 8601 date-time indicating when the payload defining the in-app message was sent to the device. May be absent.

      • triggering_push : Associated push

        Present if the user started the current session by opening a push notification.

      • viewed_pages : Object

        OBJECT PROPERTIES
        • display_time_ms : Number

          Is how long the page was displayed in milliseconds. Format: milliseconds

        • page_identifier : String

          The current page identifier. Format: uuid

        • page_index : Number

          The current page index.

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: IN_APP_PAGER_SUMMARY

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

LocationDEPRECATED

Example location event

{
  "id": "910fea50-5d42-1159-b702-024288f4e1d3",
  "offset": "1000022468589",
  "occurred": "2019-04-03T18:59:02.246Z",
  "processed": "2019-04-03T19:10:26.301Z",
  "device": {
    "android_channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "device_type": "ANDROID",
    "identifiers": {
      "com.urbanairship.gimbal.aii": "2471037d-71d8-4229-a40f-df719f1af914",
      "session_id": "54204a73-7a95-4ffc-8051-bf230d086e19",
      "GA_CID": "90d56c80-f31f-49fd-87b0-20deb3d2602a"
    },
    "attributes": {
      "locale_variant": "",
      "app_version": "dev",
      "device_model": "Android SDK built for x86",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "9",
      "locale_timezone": "-25200",
      "carrier": "Android",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "9.7.0",
      "location_permission": "ALWAYS_ALLOWED"
    }
  },
  "body": {
    "latitude": "51.5033630",
    "longitude": "-0.1276250",
    "foreground": true,
    "session_id": "ecd3741d-92c4-469b-b42c-888e40a121d3"
  },
  "type": "LOCATION"
}
  • An event declaring the device to be at a particular latitude and longitude.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • foreground : BooleanREQUIRED

        If true, the application was foregrounded when the event occurred.

      • latitude : StringREQUIRED

        The latitude where the event occurred.

      • longitude : StringREQUIRED

        The longitude where the event occurred.

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: LOCATION

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Mobile originated event

Example mobile-originated SMS event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663"
  },
  "body": {
    "event_type": "mobile_originated_sms",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    },
    "properties": {
      "inbound_message": "join",
      "outbound_message": "Thanks for joining!",
      "keyword": "join"
    }
  },
  "type": "MOBILE_ORIGINATED"
}
  • Represents a message action that originated from a user — like an inbound SMS or email.

    OBJECT PROPERTIES
    • body : Mobile-originated SMS eventREQUIRED

      An event that occurs when a user sends a message from an SMS device, i.e., the message originates from a mobile device and not from the server (Airship). This event contains context related to the message’s origin, the incoming message itself, and Airship’s response to the origin.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: MOBILE_ORIGINATED

Open

Example open event

{
  "id": "910fea50-5d42-1159-b702-024288f4e1d3",
  "offset": "1000022468589",
  "occurred": "2019-04-03T18:59:02.246Z",
  "processed": "2019-04-03T19:10:26.301Z",
  "device": {
    "android_channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "device_type": "ANDROID",
    "identifiers": {
      "com.urbanairship.gimbal.aii": "2471037d-71d8-4229-a40f-df719f1af914",
      "session_id": "54204a73-7a95-4ffc-8051-bf230d086e19",
      "GA_CID": "90d56c80-f31f-49fd-87b0-20deb3d2602a"
    },
    "attributes": {
      "locale_variant": "",
      "app_version": "1037.04c13d-master",
      "device_model": "Nokia 6.1",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "9",
      "locale_timezone": "-25200",
      "carrier": "Android",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "9.7.0",
      "location_permission": "ALWAYS_ALLOWED"
      }
    },
  "user": {
      "contact_id": "982B35f2-0375-6384-893e-a19b5cd5R771"
    },
  "body": {
    "last_delivered": {
        "push_id": "6e3339ce-529c-42e4-a2f6-7546f81c9828",
        "time": "2015-07-30T21:03:37.631Z"
    },
    "triggering_push": {
        "push_id": "c2f6c5c5-f353-49c0-b5f7-6e87cf9b1a06",
        "group_id": "8ea2abd6-dbc7-475a-9c57-fb31c7e2999b",
        "variant_id": 1
    },
    "session_id": "ad4ad05a-17f4-4eab-9c6f-d3f7fbf3cc25"
  },
  "type": "OPEN"
}
  • Occurs when a user opens your app.

    OBJECT PROPERTIES
    • body : Object

      OBJECT PROPERTIES
      • last_delivered : Object

        Identifies the last push notification the audience received before the event. Absent if the last push occurred more than 12 hours ago.

        OBJECT PROPERTIES
        • campaigns : Object

          An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

          OBJECT PROPERTIES
          • categories : Array [String]

        • group_id : String

          Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

          Format: uuid

        • push_id : StringREQUIRED

          A unique identifier for a push operation. Format: uuid

        • time : String

          The UTC time when the push occurred.

        • variant_id : Integer

          The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • triggering_push : Associated push

        An associated push object, establishing a causal relationship between a push and the Open event. Absent if a causal relationship to a push cannot be established.

    • device : App device information

      Information about app users generated by the SDK.

    • id : String

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : String

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : String

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : String

      Possible values: OPEN

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Push body

Example push body event

{
  "id": "910fea50-5d42-1159-b702-024288f4e1d3",
  "offset": "1000022468589",
  "occurred": "2019-04-03T18:59:02.246Z",
  "processed": "2019-04-03T19:10:26.301Z",
  "body": {
    "push_id": "233f8109-bf56-4d95-a8bf-6f28e9d270a4",
    "campaigns": {
      "categories": [
          "hello",
          "numberwang",
          "first message"
      ]
    },
    "resource": "PUSH",
    "trimmed": false,
    "payload": "eyJkZXZpY2VfdHlwZXMiOiBbImFuZHJvaWQiLCAiaW9zIl0sICJub3RpZmljYXRpb24iOiB7ImFuZHJvaWQiOiB7fSwgImlvcyI6IHsiYmFkZ2UiOiAiKzEifSwgImFsZXJ0IjogIklUIFdJTEwgV09SSyEifSwgImF1ZGllbmNlIjogImFsbCJ9"
  },
  "type": "PUSH_BODY"
}
  • Occurs when you initiate a push, automation, or sequence.

    Airship fulfills delivery over a time interval with a number of child pushes, each with a unique Push ID and a common Group ID. There is no guarantee that push body events (defined in Push Body Event) for the child pushes fulfilling a group will appear in the stream.

    Note: When you start, pause, or publish a sequence, Airship emits a push_body event for the sequence itself, and each message contained within the sequence (i.e., messages +1). After you start a sequence, Airship does not issue subsequent push_body events for the sequence unless you pause or publish changes to the sequence.

    OBJECT PROPERTIES
    • body : Object

      OBJECT PROPERTIES
      • campaigns : Object

        An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

        OBJECT PROPERTIES
        • categories : Array [String]

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • payload : StringREQUIRED

        The specification of the push as sent via the API, a Base64 encoded JSON value.

      • push_id : String

        A unique identifier for a push operation. Format: uuid

      • resource : StringREQUIRED

        Describes the type of push, helping you interpret the JSON response. Values pertain to the push type.

        Possible values: PIPELINES, SCHEDULES, PUSH, EXPERIMENTS, IN_APP_AUTOMATION

      • trimmed : BooleanREQUIRED

        If true, the push payload was trimmed from the event body.

    • id : String

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : String

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : String

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : String

      Possible values: PUSH_BODY

Region event

Example region event

{
  "id": "910fea50-5d42-1159-b702-024288f4e1d3",
  "offset": "1000022468589",
  "occurred": "2019-04-03T18:59:02.246Z",
  "processed": "2019-04-03T19:10:26.301Z",
  "device": {
    "android_channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "channel": "364a4e3f-170a-4f26-b0a1-11b280377dfe",
    "device_type": "ANDROID",
    "identifiers": {
      "com.urbanairship.gimbal.aii": "2471037d-71d8-4229-a40f-df719f1af914",
      "session_id": "54204a73-7a95-4ffc-8051-bf230d086e19",
      "GA_CID": "90d56c80-f31f-49fd-87b0-20deb3d2602a"
    },
    "attributes": {
      "locale_variant": "",
      "app_version": "dev",
      "device_model": "Android SDK built for x86",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "America/Los_Angeles",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "9",
      "locale_timezone": "-25200",
      "carrier": "Android",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "9.7.0",
      "location_permission": "ALWAYS_ALLOWED"
    }
  },
  "body":{
    "action": "enter",
    "region_id": "fb542343-9a43-450a-be7f-43bed95057ff",
    "session_id": "0a50fdb9-dfa9-4e0e-8373-4f0c5c7137c7",
    "name": "Coolest Place",
    "source_info": {
        "source": "Gimbal",
        "region_id": "a vendor identifier"
    }
  },
  "type": "REGION"
}
  • Region events are emitted when a device enters or exits a geofence or the range of any of a set of bluetooth beacons. Region events require a Gimbal integration. Events for Gimbal customers include the Gimbal application instance identifier as com.urbanairship.gimbal.aii within the identifiers object.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • action : StringREQUIRED

        Indicates whether the event was the result of a user entering or exiting the region.

        Possible values: enter, exit

      • name : String

        A friendly name for the event; may be retrieved from a third-party.

      • region_id : StringREQUIRED

        The identifier for the region in Airship. Format: uuid

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • source_info : ObjectREQUIRED

        Information about the source application that generated the event.

        OBJECT PROPERTIES
        • region_id : String

          The unique region identifier from the originating system.

        • source : String

          Identifies the system that the event originated from.

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: REGION

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Rich control

Example event body - message not delivered due to user being in a control group

{
  "id" : "e97ef291-eb48-6614-a9f4-9138244a9144",
  "offset" : "-1099401623",
  "occurred" : "2024-11-05T23:47:55.473Z",
  "processed" : "2024-11-05T23:47:55.473Z",
  "device" : {
    "ios_channel" : "564f958c-806f-bdaf-340b-1a25867d1c6a",
    "channel" : "564f958c-806f-bdaf-340b-1a25867d1c6a",
    "device_type" : "IOS"
  },
  "user": {
    "contact_id": "6b5ca2a2-c1f1-4119-9617-2d5bff0db09d",
    "named_user_id": "mini_me"
  },
  "body" : {
    "push_id" : "62fd4bac-a85a-0e18-00b4-9e59339bece5",
    "group_id" : "da16d1c2-7d8f-9ade-ff14-05ce696ba042"
  },
  "type" : "RICH_CONTROL"
}
  • Occurs when a Message Center message is not delivered to a user because they are in a control group.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • experiment_id : String

      ID for the requested experiment. Format: uuid

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: RICH_CONTROL

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Rich delete

Example event body - indicates the `push_id` that was deleted

{
  "id": "ca2948b0-56ea-11e9-88dc-a142740a77e1",
  "offset": "1000022469540",
  "occurred": "2019-04-04T15:03:22.545Z",
  "processed": "2019-04-04T15:12:54.657Z",
  "device": {
    "ios_channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "device_type": "IOS",
    "named_user_id": "coolusername",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "837645C4-BD17-455C-96A3-999E1290EFA7",
      "GA_CID": "d12b5b66-d0c6-40f6-923f-ea039e3e8297",
      "com.urbanairship.idfa": "9610438A-6AEF-4113-BB99-2F64CB56ED2F",
      "com.urbanairship.vendor": "F2519C6C-A724-4343-80C7-1F1E42C53DFF"
    },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone8,1",
      "connection_type": "CELL",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "Europe/London",
      "push_opt_in": "true",
      "locale_country_code": "GB",
      "device_os": "12.1.4",
      "locale_timezone": "3600",
      "carrier": "Three",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "FOREGROUND_ALLOWED"
    }
  },
  "user": {
      "named_user_id": "coolusername",
      "contact_id": "982B35f2-0375-6384-893e-a19b5cd5R771"
    },
  "body": {
    "push_id": "1bf2A1a1-4069-11e9-abf1-024297609801"
  },
  "type": "RICH_DELETE"
}
  • Occurs when a user deletes a Message Center message from their inbox.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: RICH_DELETE

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Rich delivery

Example event body — indicates the `push_id` that reached the user

{
  "id": "83848900-54ac-11e9-a132-024278224c1c",
  "offset": "1000022466003",
  "occurred": "2019-04-01T18:32:32.912Z",
  "processed": "2019-04-01T18:32:33.031Z",
  "device": {
    "android_channel": "1de67612-94bc-4d02-85b0-37ede154a9d7",
    "channel": "1de67612-94bc-4d02-85b0-37ede154a9d7",
    "device_type": "ANDROID"
  },
  "user": {
    "contact_id": "982B35f2-0375-6384-893e-a19b5cd5R771"
  },
  "body": {
    "push_id": "1a7d774c-1659-4104-b594-2f7ec739c92d"
  },
  "type": "RICH_DELIVERY"
}
  • Occurs when a Message Center message is delivered to a user’s inbox.

    Even though rich push deliveries may or may not cause an alert on the user’s lock screen, they are always associated with a push identifier in the Airship system.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: RICH_DELIVERY

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Rich read

Example event body — indicates the `push_id` that the user read

{
  "id": "ca2948b0-56ea-11e9-88dc-a142740a77e1",
  "offset": "1000022469540",
  "occurred": "2019-04-04T15:03:22.545Z",
  "processed": "2019-04-04T15:12:54.657Z",
  "device": {
    "ios_channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "device_type": "IOS",
    "named_user_id": "coolusername",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "837645C4-BD17-455C-96A3-999E1290EFA7",
      "GA_CID": "d12b5b66-d0c6-40f6-923f-ea039e3e8297",
      "com.urbanairship.idfa": "9610438A-6AEF-4113-BB99-2F64CB56ED2F",
      "com.urbanairship.vendor": "F2519C6C-A724-4343-80C7-1F1E42C53DFF"
    },
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone8,1",
      "connection_type": "CELL",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "Europe/London",
      "push_opt_in": "true",
      "locale_country_code": "GB",
      "device_os": "12.1.4",
      "locale_timezone": "3600",
      "carrier": "Three",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "FOREGROUND_ALLOWED"
    }
  },
  "user": {
    "named_user_id": "coolusername",
    "contact_id": "982B35f2-0375-6384-893e-a19b5cd5R771"
  },
  "body": {
    "push_id": "1bf2A1a1-4069-11e9-abf1-024297609801",
    "time": "2019-03-04T15:12:54.657Z"
  },
  "type": "RICH_READ"
}
  • Occurs when a user reads a Message Center message in their inbox.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : String

        A unique identifier for a push operation. Format: uuid

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: RICH_READ

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Screen viewed

Example screen viewed event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "ios_channel": "c1ca5af6-b014-46f9-8566-33f5f52c7b19",
    "channel": "c9cb18f7-b814-40f9-8566-33f5f52c7c48",
    "device_type": "IOS",
    "identifiers": {
      "com.urbanairship.limited_ad_tracking_enabled": "true",
      "session_id": "B1E00276-98BE-4B38-9077-FB2E90EFBE1B",
      "GA_CID": "1fa021e7-8298-4f92-bee0-07cb95eecfdd",
      "com.urbanairship.idfa": "1821a235-CD43-4ED8-8633-3BD3B991FA25",
      "com.urbanairship.vendor": "164d552C-F5F0-4C83-B529-321667C8E48A"
    },
    "attributes": {
      "locale_variant": "",
      "app_version": "550",
      "device_model": "iPhone9,1",
      "connection_type": "WIFI",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "Europe/Berlin",
      "push_opt_in": "true",
      "locale_country_code": "US",
      "device_os": "12.2",
      "locale_timezone": "7200",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.2",
      "location_permission": "FOREGROUND_ALLOWED"
    }
  },
  "body": {
    "duration": 13933,
    "viewed_screen": "home",
    "previous_screen": "message_center",
    "session_id": "a26102f9-7fb2-451d-a65c-56e9394cf726"
  },
  "type": "SCREEN_VIEWED"
}
  • Occurs when a user has finished viewing a screen. It is up to you to instrument your application with names for each screen. Doing so will allow you to determine the user’s path by filtering on the fields in the table below.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • duration : Integer

        The number of milliseconds that the user was on the screen. Format: milliseconds

      • previous_screen : String

        The name assigned to the screen the user was on prior to the viewed_screen.

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • viewed_screen : String

        The name assigned to the screen that the user left.

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: SCREEN_VIEWED

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Send

Example send event

{
  "id": "ca2948b0-56ea-11e9-88dc-a142740a77e1",
  "offset": "1000022469540",
  "occurred": "2019-04-04T15:03:22.545Z",
  "processed": "2019-04-04T15:12:54.657Z",
  "device": {
    "ios_channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "device_type": "IOS",
    "named_user_id": "coolusername",
    "attributes": {
      "locale_variant": "",
      "app_version": "542",
      "device_model": "iPhone8,1",
      "connection_type": "CELL",
      "app_package_name": "com.company_name.app_name",
      "iana_timezone": "Europe/London",
      "push_opt_in": "true",
      "locale_country_code": "GB",
      "device_os": "12.1.4",
      "locale_timezone": "3600",
      "carrier": "Three",
      "locale_language_code": "en",
      "location_enabled": "false",
      "background_push_enabled": "true",
      "ua_sdk_version": "10.2.0",
      "location_permission": "FOREGROUND_ALLOWED"
    }
  },
  "user": {
    "contact_id": "6b5ca2a2-c1f1-4119-9617-2d5bff0db09d",
    "named_user_id": "coolusername"
  },
  "body": {
    "variant_id": 1,
    "push_id": "0c173744-dd35-4b5e-9f7f-2b7e0ce0e36e",
    "alerting": true,
    "campaigns": {
        "categories": [
          "hello",
          "numberwang",
          "first message"
        ]
      },
    "context": {
      "triggered_by": "custom_event",
      "event_uuid": "03669090-f934-45e2-a443-c75f6304ae6c",
      "transaction": "886f53d4-3e0f-46d7-930e-c2792dac6e0a",
      "interaction_id": "hello"
      }
    },
  "type": "SEND"
}
  • Occurs whenever a push notification is sent to a device identified in the audience selector of a message.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • alerting : Boolean

        If true, the send event was alerting. Alerting send event has notification text, badge, or sound.

      • campaigns : Object

        An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

        OBJECT PROPERTIES
        • categories : Array [String]

      • click_tracking : Boolean

        If true, email click events will be reported. Only HTTP and HTTPS links are tracked.

      • context : Object

        An object that establishes a relationship between a push and the origin of the message. Only messages triggered by a Custom Event will include the context.

        OBJECT PROPERTIES
        • event_uuid : StringREQUIRED

          The ID of the Custom Event which triggered the send. Format: uuid

        • interaction_id : String

          If interaction_id was set on the Custom Event body, it will be populated here.

        • transaction : String

          If transaction was set on the Custom Event body, it will be populated here.

        • triggered_by : StringREQUIRED

          The triggering event type.

          Possible values: custom_event

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • open_tracking : Boolean

        If true, email open events will be reported.

      • push_id : StringREQUIRED

        A unique identifier for a push operation. Format: uuid

      • variant_id : Integer

        The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

    • device : AnyREQUIRED

      One of
    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: SEND

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Send aborted

Example send aborted event

{
  "id": "fc06bf54-619b-4fda-9345-d8f9f8e891ef",
  "occurred": "2021-02-26T20:50:21.12Z",
  "offset": "1000001215643",
  "processed": "2021-02-26T20:50:49.64Z",
  "type": "SEND_ABORTED",
  "device": {
    "android_channel": "e664fb42-d1a7-4956-9907-88c49394ae70",
    "channel": "e664fb42-d1a7-4956-9907-88c49394ae70",
    "device_type": "ANDROID",
    },
  "body": {
    "push_id": "26ea5408-a1ec-4771-b4f0-e86d45c03f8a",
    "group_id": "3795a26d-2d74-462b-b228-ca3ed31ef7b1",
    "reason": "FEED_RESOLVE_FAILURE"
  }
}

Example send aborted event due to Ban List

{
  "id": "fc06bf54-619b-4fda-9345-d8f9f8e891ef",
  "occurred": "2021-02-26T20:50:21.12Z",
  "offset": "1000001215643",
  "processed": "2021-02-26T20:50:49.64Z",
  "type": "SEND_ABORTED",
  "device": {
    "android_channel": "e664fb42-d1a7-4956-9907-88c49394ae70",
    "channel": "e664fb42-d1a7-4956-9907-88c49394ae70",
    "device_type": "ANDROID",
    },
  "body": {
    "push_id": "26ea5408-a1ec-4771-b4f0-e86d45c03f8a",
    "group_id": "3795a26d-2d74-462b-b228-ca3ed31ef7b1",
    "reason": "FEED_BANNED_RESPONSE"
  }
}
  • Occurs when a push is dropped from our system before delivery is attempted. This can happen:

    • When using External Data Feeds to personalize a message and an error was encountered or the feed returned a non-successful response
    • When a Message Limit is met
    • When a Ban List webhook issues a drop response for a user

    Device information for the device that did not receive the push is included with SEND_ABORTED events.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • campaigns : Object

        An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

        OBJECT PROPERTIES
        • categories : Array [String]

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : StringREQUIRED

        A unique identifier for a push operation. Format: uuid

      • reason : StringREQUIRED

        Describes the reason this push was aborted.

        • FEED_BANNED_RESPONSE: The response from the endpoint indicated a channel was banned. See Ban Lists.
        • FEED_REQUEST_REJECTED: The request to the specified server was rejected. Occurs when a 4xx HTTP response code is returned when Airship calls the webhook.
        • FEED_RESOLVE_FAILURE: The URI of the feed could not be resolved.
        • FREQUENCY_LIMIT_FAILURE: A Message Limit retrieval failed.
        • FREQUENCY_LIMIT_REACHED: A Message Limit was exceeded.
        • UNKNOWN: The error occurred due to another problem.

        Possible values: FEED_BANNED_RESPONSE, FEED_REQUEST_REJECTED, FEED_RESOLVE_FAILURE, FREQUENCY_LIMIT_FAILURE, FREQUENCY_LIMIT_REACHED, UNKNOWN

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: SEND_ABORTED

Send rejected

Example send rejected event body

{
  "id": "00000169-4a14-67b2-1ddd-d9e733622c3a",
  "occurred": "2019-03-04T19:00:45.106Z",
  "offset": "1000001260057",
  "processed": "2019-03-04T19:00:47.094Z",
  "type": "SEND_REJECTED",
  "device": {
    "ios_channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "device_type": "IOS",
    },
  "body": {
    "variant_id": 1,
    "push_id": "0c173744-dd35-4b5e-9f7f-2b7e0ce0e36e",
    "status": "BadDeviceToken",
    "campaigns" : {
      "categories" : ["hello", "first message"]
    }
  }
}
  • Occurs when a push fails during communication with a third party, like APNs or GCM. This typically indicates that the user has uninstalled the app or otherwise invalidated the last-registered credentials stored in Airship. The event contains the rejected push and the group, variant, or campaigns the push belonged to.

    Device information for the device that did not receive the push is included with SEND_REJECTED events.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • campaigns : Object

        An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

        OBJECT PROPERTIES
        • categories : Array [String]

      • group_id : String

        Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • push_id : StringREQUIRED

        A unique identifier for a push operation. Format: uuid

      • status : String

        The status of the message.

        Possible values: BadDeviceToken, Unauthorized, InvalidPackageName, InvalidParameters, Unavailable, MessageTooBig, InvalidTtl, InvalidDataKey, MissingRegistration, Uninstalled

      • variant_id : Integer

        The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

    • device : App device informationREQUIRED

      Information about app users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: SEND_REJECTED

Short link click event

Example short_link_click event

{
    "id": "31549b7d-a435-4b04-abca-69bfd4fb6aaa",
    "offset": "1000005313850",
    "occurred": "2019-07-10T23:18:57.465Z",
    "processed": "2019-07-10T23:18:58.148Z",
    "device": {
        "channel": "ec71312b-42e4-4bcd-b742-581a84941793",
        "device_type": "SMS",
        "delivery_address": "15551234567",
        "identifiers": {
            "sender": "15558647425"
        },
        "attributes": {
            "web_user_agent_string": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/75.0.3770.100 Safari\/537.36"
        }
    },
    "body": {
        "push_id": "f4b4201a-70e2-4a8d-bc8f-f35ddfa7d0e7",
        "group_id": "47f01bbf-2efa-4743-acd8-fd1023a36744",
        "properties": {
          "original_url": "https://docs.airship.com/api/connect#schemas-short_link_click"
        }
    },
    "type": "SHORT_LINK_CLICK"
}
  • Occurs when a user taps or “clicks” an Airship-shortened link in an SMS or MMS message.

    OBJECT PROPERTIES
    • OBJECT PROPERTIES
      • An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

        OBJECT PROPERTIES
      • Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

        Format: uuid

      • OBJECT PROPERTIES
        • The URL represented by the Airship-shortened link.

      • A unique identifier for a push operation. Format: uuid

    • OBJECT PROPERTIES
      • OBJECT PROPERTIES
        • Describes the web user agent for the audience member who used the link.

      • The unique, platform-agnostic channel identifier for a device.

      • The MSISDN of the audience member who clicked the link.

      • Possible values: SMS

      • OBJECT PROPERTIES
        • The sender of the message.

    • Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • When the event occurred.

    • An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • Possible values: SHORT_LINK_CLICK

Subscription event

Example subscription event

{
  "id": "62f3b7ac-4048-4f22-a0b5-22c01ef172a9",
  "offset": "1000022265027",
  "occurred": "2019-04-01T13:00:23.186Z",
  "processed": "2019-04-01T13:00:23.456Z",
  "device": {
    "channel": "6b46c724-494b-4491-9fe7-1b903d266110",
    "device_type": "EMAIL",
    "delivery_address": "user+43679@urbanairship.com.sink.sparkpostmail.com"
  },
  "body": {
    "event_type":"registration",
    "identifiers": {
      "address":"new.subscription@example.com"
    },
    "properties":{
      "commercial_opted_in":"2019-01-04T20:56:00.000Z",
      "transactional_opted_in":"2019-01-04T20:56:00.000Z",
      "click_tracking_opted_out":"2019-01-04T20:56:00.000Z",
      "open_tracking_opted_out":"2019-01-04T20:56:00.000Z"
      }
  },
  "type": "SUBSCRIPTION"
}
  • SUBSCRIPTION events reflect changes to users’ subscription preferences — reflected in opt_in and opt_out values. These events help you track a user’s subscription status in the system and the total number of subscribers.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Determines the source of the subscription event. registration and create_and_send events result in changes to opted_in dates; all other event types contain opted_out dates.

        • registration: Represents a change to a user’s commercial_opted_in, transactional_opted_in, click_tracking_opted_in, or open_tracking_opted_in dates.
        • create_and_send: A user’s opted_in status changed as a result of a create-and-send event.
        • bounce: Subscription status changed as a result of a bounce event.
        • list_unsubscribe: The user clicked the unsubscribe button in their email client.
        • link_unsubscribe: The user clicked an unsubscribe hyperlink in an email.
        • spam_complaint: The user classified an email as spam.
        • out_of_band: A bounce occurred after the recipient MTA accepted an email.

        Possible values: registration, create_and_send, bounce, list_unsubscribe, link_unsubscribe, spam_complaint, out_of_band

      • identifiers : ObjectREQUIRED

        Contains address information specific to the channel_id specified in the event.

        OBJECT PROPERTIES
        • address : String

          The email address representing the change.

        • subscription_lists : Object

          Changes to a device or user’s subscription list membership.

          OBJECT PROPERTIES
          • canceled : Array [String]

            An array of subscription list IDs which were canceled. Present only when a cancellation occurred.

          • enrolled : Array [String]

            An array of subscription list IDs which were enrolled. Present only when an enrollment occurred.

          • scope : String

            The scope at which the operation was performed; only present on events which target a Named User.

            Possible values: app, web, email, sms

      • properties : Object

        OBJECT PROPERTIES
        • click_tracking_opted_in : String

          Format: date-time

        • click_tracking_opted_out : String

          Format: date-time

        • commercial_opted_in : String

          Format: date-time

        • commercial_opted_out : String

          Format: date-time

        • open_tracking_opted_in : String

          Format: date-time

        • open_tracking_opted_out : String

          Format: date-time

        • transactional_opted_in : String

          Format: date-time

        • transactional_opted_out : String

          Format: date-time

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: SUBSCRIPTION

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Subscription list event

Example Subscription List event

{
  "id": "62f3b7ac-4048-4f22-a0b5-22c01ef172a9",
  "offset": "1000022265027",
  "occurred": "2019-04-01T13:00:23.186Z",
  "processed": "2019-04-01T13:00:23.456Z",
  "device": {
    "channel": "6b46c724-494b-4491-9fe7-1b903d266110",
    "device_type": "EMAIL",
    "delivery_address": "user+43679@urbanairship.com.sink.sparkpostmail.com"
  },
  "user": {
    "contact_id": "6b5ca2a2-c1f1-4119-9617-2d5bff0db09d",
    "named_user_id": "mini_me"
  },
  "body": {
    "enrolled": ["cool_deals"]
  },
  "type": "SUBSCRIPTION_LIST"
}
  • Occurs when subscription list enrollment changes for a device or user.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Changes to a device or user’s subscription list membership.

      OBJECT PROPERTIES
      • canceled : Array [String]

        An array of subscription list IDs which were canceled. Present only when a cancellation occurred.

      • enrolled : Array [String]

        An array of subscription list IDs which were enrolled. Present only when an enrollment occurred.

      • scope : String

        The scope at which the operation was performed; only present on events which target a Named User.

        Possible values: app, web, email, sms

    • device : AnyREQUIRED

      One of
      • App device information

        Information about app users generated by the SDK.

      • Web device information without `attributes` : Object

        Information about web users in tag change events.

        OBJECT PROPERTIES
        • channel : StringREQUIRED

          The unique, platform-agnostic channel identifier for a device.

        • device_type : StringREQUIRED

          The platform that the channel is on.

          Possible values: WEB

        • named_user_id : String

          The Named User identifier for the device.

      • Device information for SMS and email

        Information about the SMS or email device related to an event.

      • Open channel device information

        Information about open channel users.

      • Named User

        User information for events which occur at the user level.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: SUBSCRIPTION_LIST

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Tag change

Example tag change event

{
  "id": "00000169-4a14-67b2-1ddd-d9e733622c3a",
  "occurred": "2019-03-04T19:00:45.106Z",
  "offset": "1000001260057",
  "processed": "2019-03-04T19:00:47.094Z",
  "device": {
    "ios_channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "device_type": "IOS",
    },
  "user": {
    "contact_id": "6b5ca2a2-c1f1-4119-9617-2d5bff0db09d",
    "named_user_id": "mini_me"
  },
  "body":{
    "add": {
        "crm": [
          "partner",
          "active"
        ],
        "loyalty": [
          "silver_member"
        ]
    },
    "remove": {
        "device": [
          "shoe_buyer"
        ]
    },
    "current": {
        "crm": [
          "partner",
          "active",
          "new_user"
        ],
        "loyalty": [
          "silver_member",
          "special_offers"
        ],
        "device": [
          "san_francisco",
          "sports"
        ]
      }
    },
  "type": "TAG_CHANGE"
}
  • Occurs when tags change for a device.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • add : Object

        Tag group/tag pairs added to the device. Each tag group is an array containing one or more tags within this object.

      • current : Object

        The total set/state of tag group/tag pairs associated with the device after the tag change. Each tag group is an array containing one or more tags within this object.

      • remove : Object

        Tag group/tag pairs removed from the device. Each tag group is an array containing one or more tags within this object.

    • device : AnyREQUIRED

      One of
      • App device information

        Information about app users generated by the SDK.

      • Web device information without `attributes` : Object

        Information about web users in tag change events.

        OBJECT PROPERTIES
        • channel : StringREQUIRED

          The unique, platform-agnostic channel identifier for a device.

        • device_type : StringREQUIRED

          The platform that the channel is on.

          Possible values: WEB

        • named_user_id : String

          The Named User identifier for the device.

      • Device information for SMS and email

        Information about the SMS or email device related to an event.

      • Open channel device information

        Information about open channel users.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: TAG_CHANGE

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Uninstall

Example uninstall event

{
  "id": "00000169-4a14-67b2-1ddd-d9e733622c3a",
  "occurred": "2019-03-04T19:00:45.106Z",
  "offset": "1000001260057",
  "processed": "2019-03-04T19:00:47.094Z",
  "type": "UNINSTALL",
  "device": {
    "ios_channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "channel": "1ef235f0-03d5-1384-893e-a19b5cd0d110",
    "device_type": "IOS",
    },
  "body":{
    "decay": false
    },
  "type": "UNINSTALL"
}
  • Occurs when a user uninstalls an Airship-integrated app in response to a push.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • decay : BooleanREQUIRED

        If true, Airship recorded an uninstall event due to user inactivity.

    • device : AnyREQUIRED

      One of
    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: UNINSTALL

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Web click event

Example web click event

{
  "id": "c91efbfa-14b1-401a-9002-54730b5cdcda",
  "offset": "1000024775634",
  "occurred": "2019-04-05T20:11:36.696Z",
  "processed": "2019-04-05T20:11:37.179Z",
  "device": {
    "channel": "bd054c5b-d614-46a1-a843-6ca330c66489",
    "device_type": "WEB",
    "attributes": {
      "web_browser_type": "desktop",
      "push_opt_in": "true",
      "iana_timezone": "America/Los_Angeles",
      "locale_country_code": "US",
      "locale_timezone": "-25200",
      "web_browser_version": "chrome-73",
      "locale_language_code": "en",
      "web_browser_name": "chrome",
      "ua_sdk_version": "1.1.0",
      "web_user_agent_string": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
    }
  },
  "body": {
    "push_id": "c2f6c5c5-f353-49c0-b5f7-6e87cf9b1a06"
  },
  "type": "WEB_CLICK"
}
  • Occurs when a user interacts with a web notification, e.g., clicked or tapped it. Web Click events have a device attribute on the event indicating the channel that was the target of the notification. The body of a Web Click Event is an associated push object.

    OBJECT PROPERTIES
    • body : Associated pushREQUIRED

      The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

      An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : ObjectREQUIRED

      Information about web users generated by the SDK.

      OBJECT PROPERTIES
      • attributes : Object

        OBJECT PROPERTIES
        • iana_timezone : String

          The time zone of the device.

        • push_opt_in : StringREQUIRED

          Indicates whether or not the device is opted into push notifications.

        • ua_sdk_version : StringREQUIRED

          The version of the Airship SDK used in the app.

        • web_browser_name : StringREQUIRED

          The name of the browser running the SDK.

        • web_browser_type : StringREQUIRED

          Indicates whether the browser was running on a desktop or mobile device.

        • web_browser_version : StringREQUIRED

          The version of the browser.

        • web_user_agent_string : StringREQUIRED

          The user agent reported by the browser.

      • channel : StringREQUIRED

        The unique, platform-agnostic channel identifier for a device.

      • device_type : StringREQUIRED

        The platform that the channel is on.

        Possible values: WEB

      • named_user_id : String

        The Named User identifier for the device.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: WEB_CLICK

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Web session event

Example web session event

{
  "id": "c91efbfa-14b1-401a-9002-54730b5cdcda",
  "offset": "1000024775634",
  "occurred": "2019-04-05T20:11:36.696Z",
  "processed": "2019-04-05T20:11:37.179Z",
  "device": {
    "channel": "bd054c5b-d614-46a1-a843-6ca330c66489",
    "device_type": "WEB",
    "attributes": {
      "web_browser_type": "desktop",
      "push_opt_in": "true",
      "iana_timezone": "America/Los_Angeles",
      "locale_country_code": "US",
      "locale_timezone": "-25200",
      "web_browser_version": "chrome-73",
      "locale_language_code": "en",
      "web_browser_name": "chrome",
      "ua_sdk_version": "1.1.0",
      "web_user_agent_string": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
    }
  },
  "body": {
    "session_id": "e8350094-dd62-4d36-a7a0-f1b0a221de93",
    "last_delivered": {
        "push_id": "c2f6c5c5-f353-49c0-b5f7-6e87cf9b1a06"
      }
    },
  "type": "WEB_SESSION"
}
  • Occurs when an opted in user begins interacting with a website. Web Session events have a device attribute, indicating the channel associated with the user.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • last_delivered : Object

        Identifies the last push notification the audience received before the event. Absent if the last push occurred more than 12 hours ago.

        OBJECT PROPERTIES
        • campaigns : Object

          An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

          OBJECT PROPERTIES
          • categories : Array [String]

        • group_id : String

          Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

          Format: uuid

        • push_id : StringREQUIRED

          A unique identifier for a push operation. Format: uuid

        • time : String

          The UTC time when the push occurred.

        • variant_id : Integer

          The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • triggering_push : Associated push

        The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

        An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : Web device informationREQUIRED

      Information about web users generated by the SDK.

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : String

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: WEB_SESSION

    • user : User

      The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

Email compliance events

Contains event body information specific to email compliance events.

Email bounce event

Example email bounce event

{
    "id": "9781ff2e-fa4a-4fa8-bd9d-41f318c48963",
    "offset": "1000001778910",
    "occurred": "2018-11-28T00:02:41.794Z",
    "processed": "2018-11-28T00:02:45.270Z",
    "device": {
        "channel": "5a39b6d8-0a5a-4c2b-a4a0-3d4a71e5254b",
        "device_type": "EMAIL",
        "delivery_address": "bademail@example.com"
    },
    "body": {
        "event_type": "bounce",
        "properties": {
            "bounce_event_type": "bounce",
            "sender": "msprvs1=17870ayYKWpBI=bounces-179492-4@example.com",
            "subject": "Red Means Go",
            "email": "bademail@example.com",
            "bounce_class": "10"
        }
    },
    "type": "COMPLIANCE"
}
  • An event that occurs when an email could not be delivered to a particular address. The bounce_class can provide more information about why the message bounced.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Possible values: bounce

      • identifiers : ObjectREQUIRED

        OBJECT PROPERTIES
        • address : String

          The email address registered.

      • properties : ObjectREQUIRED

        OBJECT PROPERTIES
        • bounce_class : Integer

          The bounce classification as specified in Sparkpost. Max: 100 Min: 1

        • bounce_event_type : String

          Possible values: bounce

        • email : String

          The email address that bounced. Format: email

        • sender : String

          The address that the bounced email came from (typically the sender address for your project in Airship).

        • subject : String

          The subject line of the bounced email.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email create-and-send event

Example email create_and_send event

{
    "id": "adf8794c-c3c3-4507-9ea3-1a554ed4b94f",
    "offset": "1000001778141",
    "occurred": "2018-11-27T23:20:12.167Z",
    "processed": "2018-11-27T23:20:12.443Z",
    "device": {
        "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
        "device_type": "EMAIL",
        "delivery_address": "new.address@example.com"
    },
    "body": {
        "event_type": "create_and_send",
        "identifiers": {
            "address": "new.address@example.com"
        },
        "properties": {
            "channel_registered": "true",
            "commercial_opted_in": "2018-10-12T12:12:12"
        }
    },
    "type": "COMPLIANCE"
  }
  • An event that occurs for email addresses used as a part of a create-and-send message.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Possible values: create_and_send

      • identifiers : ObjectREQUIRED

        OBJECT PROPERTIES
        • address : StringREQUIRED

          The email address a message was sent to using the create-and-send (inline list) feature.

      • properties : ObjectREQUIRED

        Properties for an email create-and-send event.

        OBJECT PROPERTIES
        • channel_registered : BooleanREQUIRED

          If true, a new channel was created to represent the identifiers in the event. If false, the address was already registered to Airship.

        • commercial_opted_in : String

          The date and time when the address opted into commercial email messages.

        • transactional_opted_in : String

          The date and time when the address opted into transactional email messages.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email registration event

Example email registration event

{
    "id": "8058bfd3-9081-4f48-845c-809bf5462ca4",
    "offset": "1000000739139",
    "occurred": "2018-12-18T21:24:11.836Z",
    "processed": "2018-12-18T21:24:12.608Z",
    "device": {
        "channel": "93f32fb8-0e40-440b-8944-2f9ef933ca88",
        "device_type": "EMAIL"
    },
    "body": {
        "event_type": "registration",
        "identifiers": {
            "address": "new.user@example.com"
        },
        "properties": {
            "commercial_opted_in": "2018-10-20T12:00:00.000Z",
            "registration_type": "create"
        }
    },
    "type": "COMPLIANCE"
  }
  • An event that occurs when users register to receive email messages.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Possible values: registration

      • identifiers : ObjectREQUIRED

        OBJECT PROPERTIES
        • address : String

          The email address registered.

      • properties : ObjectREQUIRED

        OBJECT PROPERTIES
        • commercial_opted_in : String

          The date and time when the user opted into commercial email messages.

        • registration_type : StringREQUIRED

          create indicates that a channel was created in Airship. update represents a PUT call to the email channel registration API.

          Possible values: create, update

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email unsubscribe event

Example email unsubscribe event

{
  "id": "bd8c90d6-5704-4438-8075-7530d06c4cba",
  "offset": "1000001778792",
  "occurred": "2018-11-27T23:47:54.641Z",
  "processed": "2018-11-27T23:47:55.516Z",
  "device": {
      "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
      "device_type": "EMAIL",
      "delivery_address": "former.user@example.com"
  },
  "body": {
      "event_type": "registration",
      "properties": {
          "message_type": "commercial",
          "registration_type": "unsubscribe"
      }
  },
  "type": "COMPLIANCE"
}
  • A compliance event representing a user who unsubscribed from your email notifications.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Unsubscribe events are considered registration events; the registration_type indicates the type of registration occurring.

        Possible values: registration

      • identifiers : ObjectREQUIRED

        OBJECT PROPERTIES
        • address : String

          The email address registered.

      • properties : ObjectREQUIRED

        OBJECT PROPERTIES
        • message_type : StringREQUIRED

          The message type that the user unsubscribed from.

          Possible values: commercial

        • registration_type : StringREQUIRED

          Possible values: unsubscribe

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

SMS compliance events

Contains event body information specific to SMS compliance events.

SMS API initiated opt-in event

Example SMS API-initiated opt-in event

{
    "id": "a11d6d6b-bdd1-4f3d-97d3-591993945425",
    "offset": "1000005312986",
    "occurred": "2019-07-10T17:11:48.923Z",
    "processed": "2019-07-10T17:11:49.151Z",
    "device": {
        "channel": "35eb0446-0c75-44ec-ba9e-81d7250e0e06",
        "device_type": "SMS"
    },
    "body": {
        "event_type": "api_initiate_opt_in",
        "identifiers": {
            "sender": "18338647425",
            "msisdn": "15035508427"
        }
    },
    "type": "COMPLIANCE"
}
  • Occurs when an SMS user is registered via the SMS Channel Registration API without an opted_in value — indicating that the user has initiated, but not completed, the registration process. While this event contains a channel_id, you cannot send messages to this channel until the associated user completes the opt-in process (indicated by a mobile_opt_in event).

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Indicates a registration was started via the Airship API without an opt-in date, and a message was sent to the end user with instructions on how to opt in.

        Possible values: api_initiate_opt_in

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS carrier deactivation event

Example SMS carrier_deactivation event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663"
  },
  "body": {
    "event_type": "carrier_deactivation",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    }
  },
  "type": "COMPLIANCE"
}
  • Occurs when an MSISDN is deactivated by a carrier. This event type does not contain additional properties.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        The carrier deactivated the address.

        Possible values: carrier_deactivation

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

SMS custom keyword response event

Example SMS custom keyword response event

{
    "id": "34464823-b48c-4ed3-8849-03933f29d057",
    "offset": "1000005313855",
    "occurred": "2019-07-11T00:24:39.203Z",
    "processed": "2019-07-11T00:24:40.128Z",
    "device": {
        "channel": "ec71312b-42e4-4bcd-b742-581a84941793",
        "device_type": "SMS",
        "delivery_address": "15035508427",
        "identifiers": {
            "sender": "18338647425"
        }
    },
    "body": {
        "event_type": "custom_keyword_response",
        "identifiers": {
            "sender": "18338647425",
            "msisdn": "15035508427"
        },
        "properties": {
            "inbound_message": "coupon",
            "outbound_message": "Thanks! Here is your coupon! https:\/\/wallet-api.urbanairship.com\/v1\/pass\/adaptive\/M1kTVOcyXm"
        }
    },
    "type": "COMPLIANCE"
}
  • Occurs when a mobile-originated keyword is matched, and elicits a custom response.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Occurs when a mobile-originated keyword generates a custom response.

        Possible values: custom_keyword_response

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

      • properties : ObjectREQUIRED

        Contains properties specific to the event_type.

        OBJECT PROPERTIES
        • inbound_message : String

          The body of the inbound (to Airship) text message. This is the message a user sent to opt into or out of messages. This text corresponds to the keyword if present.

        • outbound_message : String

          The message you sent to the user represented in the event.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS mobile create channel event

Example SMS mobile_create_channel event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663"
  },
  "body": {
    "event_type": "mobile_create_channel",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    },
    "properties": {
      "inbound_message": "JOIN",
      "outbound_message": "Your order number is #123456789. Text 'JOIN' to learn about new offers from us.",
      "keyword": "JOIN"
    }
  },
  "type": "COMPLIANCE"
}
  • If a channel does not exist for the MSISDN/sender combination and your account is configured to create a channel if none exists in such instances, we will emit this event. The resulting channel will necessarily be opted out, awaiting an opt-in action by the user.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Indicates that a channel for the sms event type was created.

        Possible values: mobile_create_channel

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

      • properties : ObjectREQUIRED

        Contains properties specific to the event_type.

        OBJECT PROPERTIES
        • opted_in : String

          The date and time when the channel was registered.

        • registration_type : String

          Indicates that the channel was registered with Airship.

          Possible values: create

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS mobile keyword matched event

Example SMS mobile_keyword_matched event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663"
  },
  "body": {
    "event_type": "mobile_keyword_matched",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    },
    "properties": {
      "inbound_message": "join",
      "outbound_message": "Wanna join the club?",
      "keyword": "JOIN"
    }
  },
  "type": "COMPLIANCE"
}
  • Occurs when a mobile-originated message contains a recognized keyword.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Occurs when a mobile-originated event contains a recognized keyword.

        Possible values: mobile_keyword_matched

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

      • properties : ObjectREQUIRED

        Contains properties specific to the event_type.

        OBJECT PROPERTIES
        • inbound_message : String

          The body of the inbound (to Airship) text message. This is the message a user sent to opt into or out of messages. This text corresponds to the keyword if present.

        • keyword : String

          Indicates that a mobile-originated message contained a recognized keyword.

        • outbound_message : String

          The message you sent to the user represented in the event.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS mobile keyword unmatched event

Example SMS mobile_keyword_unmatched event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663"
  },
  "body": {
    "event_type": "mobile_keyword_unmatched",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    },
    "properties": {
      "inbound_message": "@%#!&@&#",
      "outbound_message": "Wanna join the club?"
    }
  },
  "type": "COMPLIANCE"
}
  • Occurs when a mobile-originated message does not contain a recognized keyword.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Occurs when a mobile-originated event does not contain a recognized keyword.

        Possible values: mobile_keyword_unmatched

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

      • properties : ObjectREQUIRED

        Contains properties specific to the event_type.

        OBJECT PROPERTIES
        • inbound_message : String

          The body of the inbound (to Airship) text message. This is the message a user sent to opt into or out of messages. This text corresponds to the keyword if present.

        • outbound_message : String

          The message you sent to the user represented in the event.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS mobile opt in event

Example SMS mobile_opt_in event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663"
  },
  "body": {
    "event_type": "mobile_opt_in",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    },
    "properties": {
      "inbound_message": "y",
      "outbound_message": "Do you want to get text alerts from us?",
      "keyword": "Y"
    }
  },
  "type": "COMPLIANCE"
}
  • Occurs when a user opts in to text messages via a keyword.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Indicates that the event represents a newly registered address.

        Possible values: mobile_opt_in

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

      • properties : ObjectREQUIRED

        Contains properties specific to the event_type.

        OBJECT PROPERTIES
        • inbound_message : String

          The body of the inbound (to Airship) text message. This is the message a user sent to opt into or out of messages. This text corresponds to the keyword if present.

        • keyword : String

          The keyword the user sent to opt in.

        • outbound_message : String

          The message you sent to the user represented in the event.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS mobile opt out event

Example SMS mobile_opt_out event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663"
  },
  "body": {
    "event_type": "mobile_opt_out",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    },
    "properties": {
      "inbound_message": "STOP",
      "outbound_message": "Text STOP to opt out of text messages from us.",
      "keyword": "STOP"
    }
  },
  "type": "COMPLIANCE"
}
  • Occurs when a user sends a MO message that matches a keyword with an opt-out action. If present, this event would supplant a mobile_keyword_matched event.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        The event represents a user who opted out of notifications.

        Possible values: mobile_opt_out

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

      • properties : ObjectREQUIRED

        Contains properties specific to the event_type.

        OBJECT PROPERTIES
        • inbound_message : String

          The body of the inbound (to Airship) text message. This is the message a user sent to opt into or out of messages. This text corresponds to the keyword if present.

        • keyword : String

          Indicates that the user responded to opt out of messages. The enumerated values represent default keywords, but any custom keywords that you configure to allow mobile opt-outs can also appear here.

          Possible values: STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT, ARRET

        • outbound_message : String

          The message you sent to the user represented in the event.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS mobile terminated message event

Example SMS mobile_terminated_message event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS"
  },
  "body": {
    "event_type": "mobile_terminated_message",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    }
  },
  "type": "COMPLIANCE"
}
  • Occurs when Airship sends an SMS message to a user. The message represented by this event could be a response to an individual mobile-originated (MO) message, or a message initiated from the Airship UI/API.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the Compliance event subtype and properties specific to the event subtype.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Airship has emitted a mobile-terminated message.

        Possible values: mobile_terminated_message

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS opted out event

Example SMS opted_out event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663",
    "identifiers": { "sender": "15558675309" }
  },
  "body": {
    "event_type": "opted_out",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    }
  },
  "type": "COMPLIANCE"
}
  • Occurs when a user is opted out of an SMS audience via the Airship API, i.e., not via an opt-out keyword. This event type does not contain additional properties.

    All of
    • Object

      OBJECT PROPERTIES
      • device : Object

        Holds information about an SMS device (an individual SMS channel).

        OBJECT PROPERTIES
        • channel : String

          The unique, platform-agnostic channel identifier for a device.

        • delivery_address : String

          The phone number for the channel. Format: msisdn

        • device_type : StringREQUIRED

          SMS compliance events use the SMS device type.

          Possible values: SMS

        • identifiers : Object

          If present, the identifiers object holds the value for the sender property.

          OBJECT PROPERTIES
          • sender : StringREQUIRED

            The sender that the delivery_address received a message from.

      • id : String

        Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

      • occurred : String

        When the event occurred.

      • offset : String

        An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

      • processed : String

        When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

      • type : String

        Compliance events are the only types of events returned by this event stream.

        Possible values: COMPLIANCE

    • Object

      OBJECT PROPERTIES
      • body : ObjectREQUIRED

        Contains the event subtype, identifiers, and additional properties about the event.

        OBJECT PROPERTIES
        • event_type : StringREQUIRED

          The address opted out of notifications.

          Possible values: opted_out

        • identifiers : ObjectREQUIRED

          Contains the sender and MSISDN for the event.

          OBJECT PROPERTIES
          • msisdn : StringREQUIRED

            The phone number of the user involved in the compliance event.

          • sender : StringREQUIRED

            The phone number or short code of the sender involved in the compliance event.

SMS create-and-send event

Example SMS create_and_send event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663"
  },
  "body": {
    "event_type": "create_and_send",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    },
    "properties": {
      "opted_in": "2018-12-03T19:31:10.000Z",
      "channel_registered": "true"
    }
  },
  "type": "COMPLIANCE"
}
  • An event that occurs for SMS channels used as a part of a create-and-send message.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Possible values: create_and_send

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

      • properties : ObjectREQUIRED

        Properties for an SMS create-and-send event.

        OBJECT PROPERTIES
        • channel_registered : BooleanREQUIRED

          If true, a new channel was created to represent the identifiers in the event. If false, the address was already registered to Airship.

        • opted_in : String

          The date-and-time when the msisdn opted into messages from the sender.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS registration event

Example SMS registration event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS"
  },
  "body": {
    "event_type": "registration",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    },
    "properties": {
      "opted_in": "2018-12-03T19:31:10.000Z",
      "registration_type": "create"
    }
  },
  "type": "COMPLIANCE"
}
  • Occurs when a user opts in to receive SMS messages from you, via a call to the SMS registration API.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Indicates that the event represents a newly registered address.

        Possible values: registration

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

      • properties : ObjectREQUIRED

        Contains properties specific to the event_type.

        OBJECT PROPERTIES
        • opted_in : StringREQUIRED

          The ISO 8601 date-time (UTC) when the channel opted-in to notifications.

        • registration_type : StringREQUIRED

          Indicates whether the channel was created or updated.

          Possible values: create, update

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS update event

Example SMS update event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663",
    "identifiers": {
      "sender": "15558675309"
    }
  },
  "body": {
    "event_type": "registration",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    },
    "properties": {
      "registration_type": "update"
    }
  },
  "type": "COMPLIANCE"
}
  • When an SMS event update occurs.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        Indicates that the event represents a newly registered address.

        Possible values: registration

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

      • properties : ObjectREQUIRED

        Contains properties specific to the event_type.

        OBJECT PROPERTIES
        • opted_in : StringREQUIRED

          The ISO 8601 date-time (UTC) when the channel opted-in to notifications.

        • registration_type : StringREQUIRED

          Indicates the channel was updated.

          Possible values: update

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

SMS uninstalled event

Example SMS uninstalled event

{
  "id": "a7086338-0473-46fe-8d9b-cb61305c3c0d",
  "offset": "1000000701505",
  "occurred": "2018-12-03T19:31:10.000Z",
  "processed": "2018-12-03T19:31:11.302Z",
  "device": {
    "channel": "a828de17-b315-4e80-9d2d-35a906afeacf",
    "device_type": "SMS",
    "delivery_address": "15558968663",
    "identifiers": {
      "sender": "15558675309"
    }
  },
  "body": {
    "event_type": "uninstall",
    "identifiers": {
      "sender": "15558675309",
      "msisdn": "15558968663"
    }
  },
  "type": "COMPLIANCE"
}
  • Occurs when the SMS uninstall API is called.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      Contains the event subtype, identifiers, and additional properties about the event.

      OBJECT PROPERTIES
      • event_type : StringREQUIRED

        The address was uninstalled.

        Possible values: uninstall

      • identifiers : ObjectREQUIRED

        Contains the sender and MSISDN for the event.

        OBJECT PROPERTIES
        • msisdn : StringREQUIRED

          The phone number of the user involved in the compliance event.

        • sender : StringREQUIRED

          The phone number or short code of the sender involved in the compliance event.

    • device : ObjectREQUIRED

      Holds information about an SMS device (an individual SMS channel).

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : String

        The phone number for the channel. Format: msisdn

      • device_type : StringREQUIRED

        SMS compliance events use the SMS device type.

        Possible values: SMS

      • identifiers : Object

        If present, the identifiers object holds the value for the sender property.

        OBJECT PROPERTIES
        • sender : StringREQUIRED

          The sender that the delivery_address received a message from.

Custom email events

Airship delivers email messages through a provider (SparkPost). Custom email events represent events that occur at the provider level — outside Airship, between the provider and recipient.

Email bounce event

Example email bounce Custom Event

{
  "id": "2cf89e3a-2458-4c2d-8fcf-11f593b1b85e",
  "offset": "1000001778145",
  "occurred": "2019-02-27T23:20:14.000Z",
  "processed": "2019-02-27T23:20:49.347Z",
  "device": {
      "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
      "device_type": "EMAIL",
      "delivery_address": "new.subscriber@example.com"
  },
  "body": {
      "name": "bounce",
      "triggering_push": {
          "push_id": "bd5b54a8-84bd-40bc-aa84-8315f9300a99",
          "campaigns": {
              "categories": [
                  "new",
                  "Baseball Fan"
              ]
          }
      },
      "session_id": "19e09be8-a586-4ff8-940f-1a4084d928e9",
      "source": "API",
      "properties": {
        "sender": "baseball@example.com",
        "subject": "Baseball Season is Almost Here!",
        "email": "new.subscriber@example.com",
        "bounce_event_type": "bounce",
        "bounce_class": "10",
      }
  },
  "type": "CUSTOM"
}
  • Occurs when an email could not be delivered to an address. The bounce_class provides additional information about the reason your message bounced. This event occurs in conjunction with a similar COMPLIANCE event.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • name : StringREQUIRED

        Possible values: bounce

      • properties : ObjectREQUIRED

        All of
        • Object

          OBJECT PROPERTIES
          • email : String

            The recipient’s email address.

          • sender : String

            The sender of the email specified by the event.

          • subject : String

            The subject line of the email specified by the event.

        • Object

          OBJECT PROPERTIES
          • bounce_class : String

            A number between 1 and 100 that represents the specific reason the email bounced. Format: (100)|[1-9]\d?

          • bounce_event_type : String

            Possible values: bounce

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • source : StringREQUIRED

        Possible values: API

      • triggering_push : Associated pushREQUIRED

        The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

        An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email click event

Example email click Custom Event

{
  "id": "2cf89e3a-2458-4c2d-8fcf-11f593b1b85e",
  "offset": "1000001778145",
  "occurred": "2019-02-27T23:20:14.000Z",
  "processed": "2019-02-27T23:20:49.347Z",
  "device": {
      "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
      "device_type": "EMAIL",
      "delivery_address": "new.subscriber@example.com"
  },
  "body": {
      "name": "click",
      "triggering_push": {
          "push_id": "bd5b54a8-84bd-40bc-aa84-8315f9300a99",
          "campaigns": {
              "categories": [
                  "new",
                  "Baseball Fan"
              ]
          }
      },
      "session_id": "19e09be8-a586-4ff8-940f-1a4084d928e9",
      "source": "API",
      "properties": {
          "sender": "baseball@example.com",
          "subject": "Baseball Season is Almost Here!",
          "email": "new.subscriber@example.com",
          "link_name": "Homepage",
          "link_url": "https://www.example.com",
          "os_family": "Android",
          "is_mobile": "true",
          "device_brand": "Motorola",
          "os_version": "11",
          "device_family": "moto g stylus",
          "is_prefetched": "false",
          "agent_family": "Chrome"
      }
  },
  "type": "CUSTOM"
}
  • Occurs when a recipient clicks a tracked link in a message. Tracked links are redirected through the provider’s click-tracking server to record the event. Only HTTP and HTTPS links are tracked. Unsubscribe link clicks do not trigger this event.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • name : StringREQUIRED

        Possible values: click

      • properties : ObjectREQUIRED

        All of
        • Object

          OBJECT PROPERTIES
          • email : String

            The recipient’s email address.

          • sender : String

            The sender of the email specified by the event.

          • subject : String

            The subject line of the email specified by the event.

        • Object

          OBJECT PROPERTIES
          • The name of the link, if set.

          • The URL of the link that the user clicked.

        • Object

          OBJECT PROPERTIES
          • agent_family : String

            The name of the family of user agent software used to access the email, e.g., WebKit

          • device_brand : String

            The brand of the device that was used to access the user agent software, e.g., Samsung or Apple.

          • device_family : String

            The name of the device used to access the user agent software.

          • is_mobile : Boolean

            Indicates whether or not the user agent is from a mobile device.

          • is_prefetched : Boolean

            Indicates if this event was likely prefetched, for example through Apple MPP. This field does not apply to clicks. The value returned in click events is always false.

          • os_family : String

            The name of the operating system used to access the user agent software.

          • os_version : String

            The version of the operating system used to access the user agent software.

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • source : StringREQUIRED

        Possible values: API

      • triggering_push : Associated pushREQUIRED

        The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

        An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email delay event

Example email delay Custom Event

{
  "id": "2cf89e3a-2458-4c2d-8fcf-11f593b1b85e",
  "offset": "1000001778145",
  "occurred": "2019-02-27T23:20:14.000Z",
  "processed": "2019-02-27T23:20:49.347Z",
  "device": {
      "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
      "device_type": "EMAIL",
      "delivery_address": "addressResponding4xx@example.com"
  },
  "body": {
      "name": "delay",
      "triggering_push": {
          "push_id": "bd5b54a8-84bd-40bc-aa84-8315f9300a99",
          "campaigns": {
              "categories": [
                  "new",
                  "Baseball Fan"
              ]
          }
      },
      "session_id": "19e09be8-a586-4ff8-940f-1a4084d928e9",
      "source": "API",
      "properties": {
          "sender": "baseball@example.com",
          "subject": "Baseball Season is Almost Here!",
          "email": "addressResponding4xx@example.com"
      }
  },
  "type": "CUSTOM"
}
  • Occurs when a mailbox provider temporarily rejects an email. In general, this event indicates that the provider will attempt to resend the message.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • name : StringREQUIRED

        Possible values: delay

      • properties : ObjectREQUIRED

        OBJECT PROPERTIES
        • email : String

          The recipient’s email address.

        • sender : String

          The sender of the email specified by the event.

        • subject : String

          The subject line of the email specified by the event.

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • source : StringREQUIRED

        Possible values: API

      • triggering_push : Associated pushREQUIRED

        The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

        An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email delivery event

Example email delivery Custom Event

{
  "id": "2cf89e3a-2458-4c2d-8fcf-11f593b1b85e",
  "offset": "1000001778145",
  "occurred": "2019-02-27T23:20:14.000Z",
  "processed": "2019-02-27T23:20:49.347Z",
  "device": {
      "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
      "device_type": "EMAIL",
      "delivery_address": "new.subscriber@example.com"
  },
  "body": {
      "name": "delivery",
      "triggering_push": {
          "push_id": "bd5b54a8-84bd-40bc-aa84-8315f9300a99",
          "campaigns": {
              "categories": [
                  "new",
                  "Baseball Fan"
              ]
          }
      },
      "session_id": "19e09be8-a586-4ff8-940f-1a4084d928e9",
      "source": "API",
      "properties": {
          "sender": "baseball@example.com",
          "subject": "Baseball Season is Almost Here!",
          "email": "new.subscriber@example.com"
      }
  },
  "type": "CUSTOM"
}
  • Occurs when the remote MTA (email server) acknowledges receipt of a message.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • name : StringREQUIRED

        Possible values: delivery

      • properties : ObjectREQUIRED

        OBJECT PROPERTIES
        • email : String

          The recipient’s email address.

        • sender : String

          The sender of the email specified by the event.

        • subject : String

          The subject line of the email specified by the event.

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • source : StringREQUIRED

        Possible values: API

      • triggering_push : Associated pushREQUIRED

        The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

        An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email initial open event

Example email initial_open Custom Event

{
  "id": "544da998-9338-4506-8564-8adf7b2597cf",
  "offset": "1000032367699",
  "occurred": "2020-07-29T20:26:03.000Z",
  "processed": "2020-07-29T20:27:47.780Z",
  "device": {
    "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
    "device_type": "EMAIL",
    "delivery_address": "new.subscriber@example.com",
    "named_user_id": "a_person"
  },
  "body": {
    "name": "initial_open",
    "triggering_push": {
      "push_id": "bd5b54a8-84bd-40bc-aa84-8315f9300a99"
    },
    "session_id": "19e09be8-a586-4ff8-940f-1a4084d928e9",
    "source": "API",
    "properties": {
      "sender": "baseball@example.com",
      "subject": "Baseball Season is Almost Here!",
      "email": "new.subscriber@example.com",
      "os_family": "Android",
      "is_mobile": "true",
      "device_brand": "Motorola",
      "os_version": "11",
      "device_family": "moto g stylus",
      "is_prefetched": "false",
      "agent_family": "Chrome"
    }
  },
  "type": "CUSTOM"
}
  • Occurs when a recipient opens an email, rendering a tracking pixel at the top of the email.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • name : StringREQUIRED

        Possible values: initial_open

      • properties : ObjectREQUIRED

        All of
        • Object

          OBJECT PROPERTIES
          • email : String

            The recipient’s email address.

          • sender : String

            The sender of the email specified by the event.

          • subject : String

            The subject line of the email specified by the event.

        • Object

          OBJECT PROPERTIES
          • agent_family : String

            The name of the family of user agent software used to access the email, e.g., WebKit

          • device_brand : String

            The brand of the device that was used to access the user agent software, e.g., Samsung or Apple.

          • device_family : String

            The name of the device used to access the user agent software.

          • is_mobile : Boolean

            Indicates whether or not the user agent is from a mobile device.

          • is_prefetched : Boolean

            Indicates if this event was likely prefetched, for example through Apple MPP. This field does not apply to clicks. The value returned in click events is always false.

          • os_family : String

            The name of the operating system used to access the user agent software.

          • os_version : String

            The version of the operating system used to access the user agent software.

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • source : StringREQUIRED

        Possible values: API

      • triggering_push : Associated pushREQUIRED

        The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

        An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email injection event

Example email injection Custom Event

{
  "id": "2cf89e3a-2458-4c2d-8fcf-11f593b1b85e",
  "offset": "1000001778145",
  "occurred": "2019-02-27T23:20:14.000Z",
  "processed": "2019-02-27T23:20:49.347Z",
  "device": {
      "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
      "device_type": "EMAIL",
      "delivery_address": "new.subscriber@example.com"
  },
  "body": {
      "name": "injection",
      "triggering_push": {
          "push_id": "bd5b54a8-84bd-40bc-aa84-8315f9300a99",
          "campaigns": {
              "categories": [
                  "new",
                  "Baseball Fan"
              ]
          }
      },
      "session_id": "19e09be8-a586-4ff8-940f-1a4084d928e9",
      "source": "API",
      "properties": {
          "sender": "baseball@example.com",
          "subject": "Baseball Season is Almost Here!",
          "email": "new.subscriber@example.com"
      }
  },
  "type": "CUSTOM"
}
  • This event occurs when the provider (SparkPost) receives a message — typically when a member of the audience responds to an email.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • name : StringREQUIRED

        Possible values: injection

      • properties : ObjectREQUIRED

        OBJECT PROPERTIES
        • email : String

          The recipient’s email address.

        • sender : String

          The sender of the email specified by the event.

        • subject : String

          The subject line of the email specified by the event.

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • source : StringREQUIRED

        Possible values: API

      • triggering_push : Associated pushREQUIRED

        The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

        An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email open event

Example email open Custom Event

{
  "id": "2cf89e3a-2458-4c2d-8fcf-11f593b1b85e",
  "offset": "1000001778145",
  "occurred": "2019-02-27T23:20:14.000Z",
  "processed": "2019-02-27T23:20:49.347Z",
  "device": {
      "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
      "device_type": "EMAIL",
      "delivery_address": "new.subscriber@example.com"
  },
  "body": {
      "name": "open",
      "triggering_push": {
          "push_id": "bd5b54a8-84bd-40bc-aa84-8315f9300a99",
          "campaigns": {
              "categories": [
                  "new",
                  "Baseball Fan"
              ]
          }
      },
      "session_id": "19e09be8-a586-4ff8-940f-1a4084d928e9",
      "source": "API",
      "properties": {
          "sender": "baseball@example.com",
          "subject": "Baseball Season is Almost Here!",
          "email": "new.subscriber@example.com",
          "os_family": "Android",
          "is_mobile": "true",
          "device_brand": "Motorola",
          "os_version": "11",
          "device_family": "moto g stylus",
          "is_prefetched": "false",
          "agent_family": "Chrome"
      }
  },
  "type": "CUSTOM"
}
  • Occurs when a recipient opens an email, rendering a tracking pixel at the bottom of the message. If a message is truncated by a client or email provider, a user may have to open it in a separate window to render the tracking pixel (and register this event).

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • name : StringREQUIRED

        Possible values: open

      • properties : ObjectREQUIRED

        All of
        • Object

          OBJECT PROPERTIES
          • email : String

            The recipient’s email address.

          • sender : String

            The sender of the email specified by the event.

          • subject : String

            The subject line of the email specified by the event.

        • Object

          OBJECT PROPERTIES
          • agent_family : String

            The name of the family of user agent software used to access the email, e.g., WebKit

          • device_brand : String

            The brand of the device that was used to access the user agent software, e.g., Samsung or Apple.

          • device_family : String

            The name of the device used to access the user agent software.

          • is_mobile : Boolean

            Indicates whether or not the user agent is from a mobile device.

          • is_prefetched : Boolean

            Indicates if this event was likely prefetched, for example through Apple MPP. This field does not apply to clicks. The value returned in click events is always false.

          • os_family : String

            The name of the operating system used to access the user agent software.

          • os_version : String

            The version of the operating system used to access the user agent software.

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • source : StringREQUIRED

        Possible values: API

      • triggering_push : Associated pushREQUIRED

        The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

        An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Email unsubscribe link event

Example email unsubscribe link Custom Event

{
  "id": "2cf89e3a-2458-4c2d-8fcf-11f593b1b85e",
  "offset": "1000001778145",
  "occurred": "2019-02-27T23:20:14.000Z",
  "processed": "2019-02-27T23:20:49.347Z",
  "device": {
      "channel": "b8519372-54ff-456d-9819-7faa92fe8b9d",
      "device_type": "EMAIL",
      "delivery_address": "new.subscriber@example.com"
  },
  "body": {
      "name": "unsubscribe",
      "triggering_push": {
          "push_id": "bd5b54a8-84bd-40bc-aa84-8315f9300a99",
          "campaigns": {
              "categories": [
                  "new",
                  "Baseball Fan"
              ]
          }
      },
      "session_id": "19e09be8-a586-4ff8-940f-1a4084d928e9",
      "source": "API",
      "properties": {
        "unsubscribe_event_type": "link_unsubscribe"
      }
  },
  "type": "CUSTOM"
}
  • Occurs when a user clicks an unsubscribe link in an email you sent.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • name : StringREQUIRED

        Possible values: unsubscribe

      • properties : ObjectREQUIRED

        OBJECT PROPERTIES
        • unsubscribe_event_type : String

          Possible values: link_unsubscribe

      • session_id : String

        Represents the “session” of user activity. Absent if the application was initialized while backgrounded. Format: uuid

      • source : StringREQUIRED

        Possible values: API

      • triggering_push : Associated pushREQUIRED

        The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

        An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    • device : ObjectREQUIRED

      Holds information about the email device (an individual email channel) the event occurred against.

      OBJECT PROPERTIES
      • channel : String

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The email address of the channel the event occurred against.

      • device_type : StringREQUIRED

        Email compliance events use the EMAIL device type.

        Possible values: EMAIL

      • named_user : String

        The Named User that the channel is associated with; appears only if the channel is associated with a Named User.

Device information

Events are ascribed to devices. App, web, SMS, email, and open channel devices return different information.

App device information

Example device information object

{
    "channel": "a6b392d6-3b0d-4c00-98ef-5cb91d51268a",
    "device_type": "IOS",
    "named_user_id": "Albert",
    "identifiers": {
      "com.urbanairship.idfa": "fb0d01e0-9e21-4466-9217-8eacfd2b81c7",
      "com.urbanairship.gimbal.aii": "c5720f06-516a-4b91-b7bb-53523fc43a3d",
      "com.urbanairship.limited_ad_tracking_enabled": "false"
    },
    "attributes": {
      "app_package_name": "com.company_name.app_name",
      "app_version": "1.0.0",
      "ua_sdk_version": "7.0.2"
    }
  }
  • Information about app users generated by the SDK.

    OBJECT PROPERTIES
    • amazon_channel : String

      The identifier for a Fire OS channel. In general, this is also the same value as the channel.

    • android_channel : String

      The identifier for an Android channel. In general, this is also the same value as the channel.

    • attributes : Object

      Attributes specific to app devices.

      OBJECT PROPERTIES
      • app_package_name : String

        A unique identifier for the app name.

      • app_version : String

        The version of the app.

      • background_push_enabled : String

        Indicates whether or not the device has background push notifications enabled.

        Possible values: true, false

      • carrier : String

        The wireless carrier used by the device.

      • connection_type : String

        The internet connection type used by the device.

        Possible values: WIFI, CELL, WIMAX, NONE

      • device_model : String

        The device model.

      • device_os : String

        The device operating system.

      • iana_timezone : String

        The time zone of the device.

      • locale_country_code : String

        The ISO 3166-1 country code as defined in device settings.

      • locale_language_code : String

        The ISO 639-1 two-letter language code reflecting the language that the device is set to.

      • locale_timezone : String

        The device’s time zone offset in seconds from UTC.

      • locale_variant : String

        The language variant.

      • location_enabled : String

        Indicates whether or not the device has location services enabled.

        Possible values: true, false

      • location_permission : String

        • SYSTEM_LOCATION_DISABLED Location is disabled in system settings
        • NOT_ALLOWED Android: missing manifest permissions, iOS: opted out
        • ALWAYS_ALLOWED Android: has manifest permissions, iOS: opted in background and foreground
        • FOREGROUND_ALLOWED iOS only: opted in foreground only
        • UNPROMPTED: iOS only

        Possible values: SYSTEM_LOCATION_DISABLED, NOT_ALLOWED, ALWAYS_ALLOWED, FOREGROUND_ALLOWED, UNPROMPTED

      • push_opt_in : String

        Indicates whether or not the device is opted into push notifications.

      • ua_sdk_version : String

        The version of the Airship SDK used in the app.

    • channel : StringREQUIRED

      The unique, platform-agnostic channel identifier for a device.

    • device_type : StringREQUIRED

      The platform that the channel is on.

      Possible values: IOS, ANDROID, AMAZON

    • identifiers : Object

      Identifying information specific to app devices.

      OBJECT PROPERTIES
      • com.urbanairship.aaid : String

        Android/Fire OS ad identifier Format: uuid

      • com.urbanairship.gimbal.aii : String

        Gimbal application instance identifier Format: uuid

      • com.urbanairship.idfa : String

        Apple ad identifier Format: uuid

      • com.urbanairship.limited_ad_tracking_enabled : String

        If true, the user has enabled limited ad tracking.

        Possible values: true, false

      • com.urbanairship.vendor : String

        Apple vendor identifier Format: uuid

    • ios_channel : String

      The identifier for an iOS channel. In general, this is also the same value as the channel.

    • named_user_id : String

      The Named User identifier for the device.

Named User

  • User information for events which occur at the user level.

    OBJECT PROPERTIES
    • named_user_id : StringREQUIRED

      The Named User identifier for the device.

Open channel device information

  • Information about open channel users.

    OBJECT PROPERTIES
    • channel : String

      The unique, platform-agnostic channel identifier for a device.

    • device_type : String

      The platform that the channel is on.

      Possible values: OPEN

    • named_user_id : String

      The Named User identifier for the device.

    • open_platform_name : String

      If device_type is set to OPEN, this field shows the full name of the platform.

Device information for SMS and email

  • Information about the SMS or email device related to an event.

    OBJECT PROPERTIES
    • channel : StringREQUIRED

      The channel identifier.

    • delivery_address : String

      • If device_type is SMS, this field shows the MSISDN.
      • If device_type is EMAIL, this field shows the email address.

    • device_type : StringREQUIRED

      The platform that the channel is on.

      Possible values: EMAIL, SMS

    • named_user_id : String

      The Named User the channel is associated with.

Web device information

  • Information about web users generated by the SDK.

    OBJECT PROPERTIES
    • attributes : Object

      OBJECT PROPERTIES
      • iana_timezone : String

        The time zone of the device.

      • locale_country_code : String

        The ISO 3166-1 country code as defined in device settings.

      • locale_language_code : String

        The ISO 639-1 two-letter language code reflecting the language that the device is set to.

      • locale_timezone : String

        The device’s time zone offset in seconds from UTC.

      • locale_variant : String

        The language variant.

      • push_opt_in : StringREQUIRED

        Indicates whether or not the device is opted into push notifications.

      • ua_sdk_version : StringREQUIRED

        The version of the Airship SDK used in the app.

      • web_browser_name : StringREQUIRED

        The name of the browser running the SDK.

      • web_browser_type : StringREQUIRED

        Indicates whether the browser was running on a desktop or mobile device.

      • web_browser_version : StringREQUIRED

        The version of the browser.

      • web_user_agent_string : StringREQUIRED

        The user agent reported by the browser.

    • channel : StringREQUIRED

      The unique, platform-agnostic channel identifier for a device.

    • device_type : StringREQUIRED

      The platform that the channel is on.

      Possible values: WEB

    • named_user_id : String

      The Named User identifier for the device.

Custom SMS events

Airship delivers SMS messages through service providers Sinch (formerly known as CLX) and Twilio. Custom SMS events represent events that occur between the service provider and recipient. They do not represent Airship service events.

SMS delivery report

Example SMS delivery report Custom Event

{
  "body": {
    "interaction_type": "delivery_report",
    "name": "dispatched",
    "properties": {
      "sender": 15551234567,
      "vendor": "CLX",
      "vendorDeliveryId": "FENhObMKbCjMOwtw"
    },
    "source": "API",
    "triggering_push": {
      "campaigns": {
        "categories": [
          "New Users"
        ]
      },
      "push_id": "9323b708-7741-4a85-8b1b-e55ad8ce64fc"
    }
  },
  "device": {
    "channel": "db7576c7-6b3d-4f07-b13a-ea3824fea262",
    "delivery_address": "15558675309",
    "device_type": "SMS"
  },
  "id": "48af12e8-6920-4e4e-bef8-b5a6918eec35",
  "occurred": "2019-01-31T17:45:38.700Z",
  "offset": "1000002098217",
  "processed": "2019-01-31T17:45:41.285Z",
  "type": "CUSTOM"
}
  • Delivery reports are Custom Events sent from our third-party SMS providers. These events report the status of your message between the provider and your audience up to, and including, delivery.

    OBJECT PROPERTIES
    • body : ObjectREQUIRED

      OBJECT PROPERTIES
      • interaction_type : String

        Possible values: delivery_report

      • name : StringREQUIRED

        The name of the delivery report as specified by the vendor. Most events reference the status of the message with reference to the short message service center (SMSC) — the server that receives your message and dispatches it to your audience.

        • dispatched — Message has been dispatched and accepted for delivery by the SMSC.
        • aborted — Message was aborted before reaching SMSC.
        • rejected — Message was rejected by SMSC.
        • delivered — Message has been delivered.
        • failed — Message failed to be delivered.
        • expired — Message expired before delivery to SMSC. This may happen if the expiry time for the message was very short.
        • unknown — Message was delivered to SMSC but no Delivery Receipt has been received or a Delivery Receipt that could not be interpreted was received.
        • undeliverable — Message cannot be delivered.
        • deleted — Message has been deleted.

        Possible values: dispatched, aborted, rejected, delivered, failed, expired, unknown, undeliverable, deleted

      • properties : AnyREQUIRED

        One of
        • SMS Delivery Properties : Object

          A delivery report for SMS.

          OBJECT PROPERTIES
          • error_code : String

            An error code from the short message service center, if applicable.

          • sender : StringREQUIRED

            The number or short code that the message originated from.

          • vendor : StringREQUIRED

            The delivery service for the message.

            Possible values: CLX, TWILIO

          • vendorDeliveryId : StringREQUIRED

            A unique identifier for the message from the SMS vendor.

        • MMS Delivery Properties : Object

          A delivery report for MMS.

          OBJECT PROPERTIES
          • carrier_id : String

            Identifies the carrier the message was sent through.

          • error_code : String

            An error code from the short message service center, if applicable.

          • handset : String

            The profile of the handset that received the message. This information is only present if the result_status is N102.

          • result_code : StringREQUIRED

            A status code from the vendor, if applicable.

            Possible values: N101, N102, E101, E102

          • result_status : String

            Possible values: Message Sent, Message Sent/Delivered, Message Failed, Message,Sent/Expired, Message Sent/Rejected, Message Sent/Failed, Message Sent/Not Supported

          • sender : StringREQUIRED

            The number or short code that the message originated from.

          • sent_as : String

            Indicates whether the MMS was delivered as MMS (binary) or SMS (HTML).

            Possible values: MMS, SMS

          • tracking_Id : String

            An ID assigned by the delivery service (CLX only).

          • vendor : StringREQUIRED

            The delivery service for the message.

            Possible values: CLX

      • source : StringREQUIRED

        Possible values: API

      • triggering_push : Object

        Identifies the push notification that caused the event.

        OBJECT PROPERTIES
        • campaigns : Object

          An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

          OBJECT PROPERTIES
          • categories : Array [String]

        • group_id : String

          Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

          Format: uuid

        • push_id : StringREQUIRED

          A unique identifier for a push operation. Format: uuid

        • variant_id : Integer

          The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

    • device : ObjectREQUIRED

      Device properties for Custom Events with the delivery_report interaction type always specify an SMS device.

      OBJECT PROPERTIES
      • channel : StringREQUIRED

        The unique, platform-agnostic channel identifier for a device.

      • delivery_address : StringREQUIRED

        The phone number associated with the channel.

      • device_type : StringREQUIRED

        Possible values: SMS

    • id : StringREQUIRED

      Uniquely identifies an event. The data stream will occasionally send duplicate events. Duplicate events will have the same id, type, occurred, device, and body values but different offset and processed values. You should use the id to deduplicate.

    • occurred : StringREQUIRED

      When the event occurred.

    • offset : StringREQUIRED

      An identifier of a location in the stream; used to resume the stream after severing a connection. If you open a stream using the offset value, the stream will resume with the next element in the stream. You should store this value as a string so that you can easily resume the stream if it ends for any reason.

    • processed : StringREQUIRED

      When the event was ingested by Airship. There may be some latency between when the event occurred, and when it was processed.

    • type : StringREQUIRED

      Possible values: CUSTOM

User information

Contains information about the user that is associated with a given event.

Contact

  • Contact information associated with the device at the time the event occurs.

    OBJECT PROPERTIES
    • contact_id : StringREQUIRED

      The Contact identifier for the device.

User

  • The current state of the user when the event is emitted, including the contact ID and an optional named user ID.

    OBJECT PROPERTIES
    • contact_id : String

      The Contact identifier for the device.

    • named_user_id : String

      The Named User identifier for the device.

Associated push

Push sent to an audience at a defined date-time

{
  "push_id": "6e3339ce-529c-42e4-a2f6-7546f81c9828",
  "time": "2015-07-30T21:03:37.631Z"
}
  • The specific push_id and accompanying identifiers associated with an event. An associated push helps you trace an event to the original notification or operation.

    An associated push object may specify a time, if the push was a singular operation sent at a defined time. Otherwise, the object will include a group_id if the push was sent at a relative time (best_time or local_time) an automation pipeline, or another operation resulting in multiple push_ids.

    OBJECT PROPERTIES
    • campaigns : Object

      An object listing the campaigns a push specification is associated with. The campaigns object includes an array of categories that must have between 1 and 10 elements, each of which is a string with a 64-byte and -character limit.

      OBJECT PROPERTIES
      • categories : Array [String]

    • group_id : String

      Identifies a push specification delivered over an interval of time, e.g., multiple push_ids as part of the fulfillment of an automation pipeline or a push-to-local-time specification.

      Format: uuid

    • push_id : StringREQUIRED

      A unique identifier for a push operation. Format: uuid

    • time : String

      The UTC time when the push occurred.

    • variant_id : Integer

      The ID of the variant that a push is associated with, if the push was a part of an A/B test (experiment).

Compliance request

  • A request for compliance events is much like a request to /api/events, but has a limited scope.

    OBJECT PROPERTIES
    • filters : Array [Compliance request filters]

      An array of filter objects defining the events you want to appear in the event stream.

    • resume_offset : String

      The offset where the stream should begin. The offset is an identifier relevant only to the data stream. The first event in the stream will be the next element satisfying the filter and subset conditions with an offset field greater than this value. Only specify resume_offset if start is absent.

    • start : String

      Specifies that the stream should start at the beginning or the end of the application’s data window. Only specify start if resume_offset is absent.

      Possible values: EARLIEST, LATEST

    • subset : Request subset

      Use subsets to return a proportion of the event stream and not all events meeting your other criteria. The subset object defines the proportion of the event stream that you want to return.

Compliance request filters

Example compliance request filter

{
  "device_types": ["email"],
  "latency": 120000,          
}
  • OBJECT PROPERTIES
    • device_types : Array [String]

      Returns events pertaining to devices on the specified platforms.

      ARRAY ITEM
      • Possible values: email, sms

    • latency : Integer

      The number of milliseconds between the current time and when the events you want to return occurred. If an event occurred more than latency milliseconds ago, it is filtered out of the event stream. Format: milliseconds

Events request

  • The request body defines the events you want to return in the event stream. You can define position, subset and filter specifications in each request submitted to the stream. Filters are positive statements about what events the client should return. The subset specification returns a representative portion of the stream.

    OBJECT PROPERTIES
    • filters : Request filters

      An array of filter objects defining the events you want to see in the event stream. A filter object defines a function that either passes or fails an event. Events are included in the response if they pass any of the functions defined by the objects in the array.

    • resume_offset : String

      The offset where the stream should begin. The offset is an identifier relevant only to Real-Time Data Streaming. The first event in the stream will be the next element satisfying the filter and subset conditions with an offset field greater than this value. Only specify resume_offset if start is absent.

    • start : String

      Specifies that the stream should start at the beginning or the end of the application’s data window. Only specify start if resume_offset is absent.

      Possible values: EARLIEST, LATEST

    • subset : Request subset

      Use subsets to return a proportion of the event stream and not all events meeting your other criteria. The subset object defines the proportion of the event stream that you want to return.

Request filters

Example filter

{
  "device_types": ["ios"],
  "latency": 120000,
  "notifications": {"push_id": "fae0658c-930e-4f66-bc78-80f46222bc8c"},
  "types": ["OPEN", "SEND"],
  "devices": [{"named_user_id": "VIP Customer"}]
}
{
  "device_types": ["ios"],
  "latency": 120000,
  "notifications": {"push_id": "af03151e-5ad5-4e30-bbd2-bda28312b3c7"},
  "types": ["RICH_READ"],
  "users": [{"named_user_id": "best_customer"}]
}
{
  "device_types": ["ios"],
  "latency": 300,
  "notifications": {"push_id": "6626393d-5d42-4de5-a31d-e24e819876ac"},
  "types": ["CLOSE"],
  "users": [{"contact_id": "982B35f2-0375-6384-893e-a19b5cd5R771"}]
}

Example filter

{
  "device_types": ["ios"],
  "latency": 120000,
  "notifications": {"push_id": "fae0658c-930e-4f66-bc78-80f46222bc8c"},
  "types": ["OPEN", "SEND"],
  "devices": [{"named_user_id": "VIP Customer"}]
}
{
  "device_types": ["ios"],
  "latency": 120000,
  "notifications": {"push_id": "af03151e-5ad5-4e30-bbd2-bda28312b3c7"},
  "types": ["RICH_READ"],
  "users": [{"named_user_id": "best_customer"}]
}
{
  "device_types": ["ios"],
  "latency": 300,
  "notifications": {"push_id": "6626393d-5d42-4de5-a31d-e24e819876ac"},
  "types": ["CLOSE"],
  "users": [{"contact_id": "982B35f2-0375-6384-893e-a19b5cd5R771"}]
}

Example filter

{
  "device_types": ["ios"],
  "latency": 120000,
  "notifications": {"push_id": "fae0658c-930e-4f66-bc78-80f46222bc8c"},
  "types": ["OPEN", "SEND"],
  "devices": [{"named_user_id": "VIP Customer"}]
}
{
  "device_types": ["ios"],
  "latency": 120000,
  "notifications": {"push_id": "af03151e-5ad5-4e30-bbd2-bda28312b3c7"},
  "types": ["RICH_READ"],
  "users": [{"named_user_id": "best_customer"}]
}
{
  "device_types": ["ios"],
  "latency": 300,
  "notifications": {"push_id": "6626393d-5d42-4de5-a31d-e24e819876ac"},
  "types": ["CLOSE"],
  "users": [{"contact_id": "982B35f2-0375-6384-893e-a19b5cd5R771"}]
}

Example Predicate filter

{
  "predicates": [
  {
    "and": [
      {
        "key": "type",
        "value": {
          "equals": "CUSTOM"
        }
      },
      {
        "scope": "body",
        "key": "name",
        "value": {
          "equals": "initial_open"
        }
      }
    ]
  }
  ]
}
  • An array of filter objects defining the events you want to see in the event stream. A filter object defines a function that either passes or fails an event. Events are included in the response if they pass any of the functions defined by the objects in the array.

    ARRAY ITEM
    • OBJECT PROPERTIES
      • device_types : Array [String]

        Returns events pertaining to devices on the specified platforms.

        ARRAY ITEM
        • Possible values: android, ios, amazon, web, email, sms, open

      • devices : Array [Any]

        Limits the stream to events relating to specific device attributes.

        ARRAY ITEM
        • Any of
          • Object

            OBJECT PROPERTIES
            • channel : String

              The unique, platform-agnostic channel identifier for a device.

          • Object

            OBJECT PROPERTIES
            • named_user_id : String

              The Named User for a device. The event stream will return events pertaining to the Named User.

      • latency : Integer

        The number of milliseconds between the current time and when the events you want to return occurred. If an event occurred more than latency milliseconds ago, it is filtered out of the event stream. Format: milliseconds

      • notifications : Any

        Limits the stream to events related to one or more specific pushes. This allows you to easily track the events generated by a given push or pipeline. In this object, you should only specify one of push_id or group_id. Child pushes may be included in the returned stream. If they are, they will have a Group ID relating them back to the push to local time or automation specification that spawned them.

        One of
        • Push ID : Object

          OBJECT PROPERTIES
          • push_id : String

            The push you want to return events for.

        • Group ID : Object

          OBJECT PROPERTIES
          • group_id : String

            The group you want to return events for.

      • predicates : Array [JSON Predicate]

        Limits events to a subset of the event payload.

      • types : Array [String]

        Specifies the event types you want to return in the event stream.

        ARRAY ITEM
        • Possible values: ATTRIBUTE_OPERATION, CLOSE, COMPLIANCE, CONTROL, CUSTOM, FEATURE_FLAG_INTERACTION, FIRST_OPEN, FIRST_OPT_IN, IN_APP_BUTTON_TAP, IN_APP_EXPERIENCES, IN_APP_FORM_DISPLAY, IN_APP_FORM_RESULT, IN_APP_MESSAGE_CONTROL, IN_APP_MESSAGE_DISPLAY, IN_APP_MESSAGE_EXCLUSION, IN_APP_MESSAGE_EXPIRATION, IN_APP_MESSAGE_RESOLUTION, IN_APP_PAGE_SWIPE, IN_APP_PAGE_VIEW, IN_APP_PAGER_COMPLETED, IN_APP_PAGER_SUMMARY, LOCATION, MOBILE_ORIGINATED, OPEN, PUSH_BODY, REGION, RICH_CONTROL, RICH_DELETE, RICH_DELIVERY, RICH_READ, SCREEN_VIEWED, SEND, SEND_ABORTED, SEND_REJECTED, SHORT_LINK_CLICK, SUBSCRIPTION, SUBSCRIPTION_LIST, TAG_CHANGE, UNINSTALL, WEB_CLICK, WEB_SESSION, CONTACT_CHANGE

      • users : Array [Any]

        Limits the stream to events relating to specific users.

        ARRAY ITEM
        • Any of
          • Object

            OBJECT PROPERTIES
            • contact_id : String

              The Contact for a user object. The event stream will return events pertaining to the Contact.

          • Object

            OBJECT PROPERTIES
            • named_user_id : String

              The Named User for a user object. The event stream will return events pertaining to the Named User.

In-app context

Example in-app context

{
  "reporting_context": {
    "content_types": [
      "survey"
    ]
  },
  "state": {
    "form": {
      "form_identifier": "870db95f-3715-4c98-8047-2871c175d003",
      "submitted": false,
      "type": "nps",
      "response_type": "nps"
    },
    "pager": {
      "identifier": "9e051354-185b-4d4d-888a-885def2e6b7a",
      "page_identifier": "992e5540-7144-474c-b666-2671814b3b19",
      "page_index": 0,
      "page_count": 2,
      "completed": false
    }
}
  • The context provides the view state when a button, pager, or form interaction occurs.

    OBJECT PROPERTIES
    • reporting_context : Object

      Describes the content types of the in-app automation. Can be expanded to provide any data for reporting.

      OBJECT PROPERTIES
      • content_types : Array [String]

        ARRAY ITEM
        • Possible values: scene, survey

    • state : Object

      Can contain the current view state of pager and form.

      OBJECT PROPERTIES
      • form : Object

        OBJECT PROPERTIES
        • form_identifier : StringREQUIRED

          Is the form controller identifier. Format: uuid

        • response_type : String

          The type survey response type.

          Possible values: nps, user_feedback

        • submitted : BooleanREQUIRED

          True if the form has been submitted.

        • type : String

          The form type.

          Possible values: nps, form

      • pager : Object

        OBJECT PROPERTIES
        • completed : Boolean

          True if the user reached the end of the pager.

        • identifier : StringREQUIRED

          Is the pager controller identifier. Format: uuid

        • page_count : NumberREQUIRED

          Total number of pages.

        • page_identifier : StringREQUIRED

          The current page identifier. Format: uuid

        • page_index : NumberREQUIRED

          Is the current pager index.

JSON Predicate

  • An object that will either match against a given JSON object or fail to match.

    One of
    • And : Object

      OBJECT PROPERTIES
    • Or : Object

      OBJECT PROPERTIES
    • Not : Object

      OBJECT PROPERTIES
      • not : JSON Predicate

        An object that will either match against a given JSON object or fail to match.

    • Value : Object

      OBJECT PROPERTIES
      • key : StringREQUIRED

        The name of the value being matched.

      • scope : Any

        The path into a JSON object.

        One of
        • String

        • Array [String]

          ARRAY ITEM
      • value : AnyREQUIRED

        This object is part of the JSON Predicate.

        One of
        • String

          OBJECT PROPERTIES
          • equals : String

            A string that the value must match.

Mobile-originated SMS event

Example mobile_originated_sms event body

{
  "event_type": "mobile_originated_sms",
  "identifiers": {
    "sender": "15558675309",
    "msisdn": "15558968663"
  },
  "properties": {
    "inbound_message": "join",
    "outbound_message": "Thanks for joining!",
    "keyword": "join"
  }
}
  • An event that occurs when a user sends a message from an SMS device, i.e., the message originates from a mobile device and not from the server (Airship). This event contains context related to the message’s origin, the incoming message itself, and Airship’s response to the origin.

    OBJECT PROPERTIES
    • event_type : StringREQUIRED

      The specific MOBILE_ORIGINATED event that occurred.

      Possible values: mobile_originated_sms

    • identifiers : ObjectREQUIRED

      Contains the sender and MSISDN for the event.

      OBJECT PROPERTIES
      • msisdn : StringREQUIRED

        The phone number of the user involved in the compliance event.

      • sender : StringREQUIRED

        The phone number or short code of the sender involved in the compliance event.

    • properties : ObjectREQUIRED

      Contains the mobile-originated message itself and the response to the message.

      OBJECT PROPERTIES
      • inbound_message : StringREQUIRED

        The contents of the message received from an SMS device.

      • keyword : String

        The specific keyword used in the inbound message, if recognized; the keyword in the inbound_message determines the outbound_message sent to the device. If a keyword could not be matched in the inbound_message, this field is absent.

      • outbound_message : StringREQUIRED

        The response sent to the SMS device, based on the inbound message and keyword.

Request subset

Subset `SAMPLE`

{
  "type": "SAMPLE",
  "proportion": 0.1
}

Subset `PARTITION`

{
  "type": "PARTITION",
  "count": 10,
  "selection": 0
}
  • Use subsets to return a proportion of the event stream and not all events meeting your other criteria. The subset object defines the proportion of the event stream that you want to return.

    OBJECT PROPERTIES
    • count : Integer

      Required when the type is PARTITION. The value is the number of partitions you want to divide the event stream into.

    • proportion : Number

      Required when the type is SAMPLE. Specifies the percentage of events that will appear in the response, chosen randomly. Format: float Max: 1

    • selection : Integer

      Required when the type is PARTITION. The value is the partition that you want to return in the response. Must be less than count.

    • type : String

      The type of partition.

      • SAMPLE returns a random sample of events; the sample proportion determines the fraction of total events that Real-Time Data Streaming returns.
      • PARTITION segments the event stream into a number of partitions (determined by count) and returns a single partition in the event stream (determined by selection).

      Possible values: SAMPLE, PARTITION