Native Mobile Spec
One of the core components of the Segment Spec is the Track method. It records any arbitrary event that the user has triggered. For Mobile tracking, in addition to Screen calls, you’ll want to send specific event names that Segment recognizes semantically. That way, Segment can transform them correctly before sending them off to downstream destinations.
By standardizing the events that comprise the core mobile application lifecycle and associated mobile campaign and referral events, Segment and its partners can, wherever possible, forward these events on your behalf and build downstream destinations that take full advantage of the semantic meaning associated with these events and their properties.
If you’re already collecting similar events, Segment recommends migrating to these event names so that you can take advantage of available features in Segment destinations that depend on the spec as they become available.
These events pair nicely with Segment’s ecommerce spec for mobile marketplaces to take full advantage of features like dynamic ads in Facebook and the ability to take full advantage of server-side destinations with Mobile Attribution Platforms like Tune and Kochava.
Per the Privacy Policy and applicable terms, don’t send Segment sensitive personal information about your users. Certain features from Segment and its partners allow you to opt-in to automatically track data (for example: Application Installed or Deep Link Clicked). When working with these features and Segment in general, be cognizant of the data that is being tracked to ensure its matching both your obligations under your agreement with Segment and the privacy expectations of your users.
Overview of events
The Segment Native Mobile Spec includes the following semantic events:
- Application Installed
- Application Opened
- Application Backgrounded
- Application Foregrounded
- Application Updated
- Application Uninstalled
- Application Crashed
- Install Attributed
- Push Notification Received
- Push Notification Tapped
- Push Notification Bounced
- Deep Link Opened
- Deep Link Clicked
Segment recommends using the above event names if you’re going to be integrating the events yourself. This will ensure that they can be mapped effectively in downstream tools.
Lifecycle events
Mobile applications live within a fairly bounded lifecycle. To understand and communicate effectively with your users, it’s crucial to instrument the core flows associated with installing and opening your app. The following events allow you to get a picture of top-line metrics such as DAUs, MAUs, and Screen Views per session. Automatic lifecycle event tracking is optional - you can learn how to enable and disable them in Segment’s docs for each library below:
The following events will be tracked automatically when lifecycle events are enabled in all mobile libraries:
In Kotlin, Swift, and React Native, the following additional events are tracked:
In Swift, the following event is also tracked:
Application Installed
This event fires when a user first opens your mobile application. Note, if the user never opens your app after installing, Segment will not collect this event. This event doesn’t wait for attribution or campaign information to be received, and is collected automatically by Segment’s SDKs. Advertising providers like Facebook and Google require discrete install events to correctly attribute installs to ads served through their platform.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Application Installed",
"properties": {
"version": "1.2.3", "build": "1234"
}
}
Property | Type | Description |
---|---|---|
version |
String | The version installed. |
build |
String | The build number of the installed app. |
Application Opened
This event fires when a user launches or foregrounds your mobile application after the first open. It will fire after the Application Installed
event and again after the app is re-opened after being closed. This event does not wait for attribution information to be received but may include information about referring applications or deep link URLs if available to the application upon open.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Application Opened",
"properties": {
"from_background": false,
"referring_application": "GMail",
"url": "url://location"
}
}
Property | Type | Description |
---|---|---|
from_background |
Boolean | If application transitioned from “Background” to “Inactive” state prior to foregrounding (as opposed to from “Not Running” state). |
url |
String | The value of UIApplicationLaunchOptionsURLKey from launchOptions . Collected on iOS only. |
referring_application |
String | The value of UIApplicationLaunchOptionsSourceApplicationKey from launchOptions . |
version |
String | The version installed. |
build |
String | The build number of the installed app. |
Application Backgrounded
This event should be sent when a user backgrounds the application upon applicationDidEnterBackground
.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Application Backgrounded",
"properties": {}
}
Application Foregrounded
This event is fired when a user opens the app or brings it back into the foreground of their device. This is only collected by the Swift library.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Application Foregrounded",
"properties": {}
}
Application Updated
This event fires when a user updates the application. Segment’s SDK will automatically collect this event instead of an “Application Opened” event when we determine that the Open is first since an update.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Application Updated",
"properties": {
"previous_version": "1.1.2",
"previous_build": "1234",
"version": "1.2.0",
"build": "1456"
}
}
Property | Type | Description |
---|---|---|
previous_version |
String | The previously recorded version. |
previous_build |
String | The previously recorded build. |
version |
String | The new version. |
build |
String | The new build. |
Application Uninstalled
Fire this event when a user uninstalls the application. Some destination partners will detect this for you using Silent Push Notifications through their SDK. You might be able to send these events to Segment using a callback. Visit the partner docs to see if this is available.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Application Uninstalled",
"properties": {}
}
Application Crashed
You can send this event when you receive a crash notification from your app, but it is not meant to supplant traditional crash reporting tools. By tracking crashes as an analytics event with device and user information, you can analyze the which types of users are impacted by crashes and how those crashes, in turn, affect their engagement. You may also want to target those customers with tailored communications in other channels if they’ve encountered several crashes. Segment does not collect this event. To capture the event, use a destination that collects this data and route that event back to Segment through a webhook or some other callback.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Application Crashed",
"properties": {}
}
Campaign events
As the walls between apps become increasingly lowered, capturing information about the content and campaigns that drive users to engage with your app is critical to building more targeted, relevant, personalized experiences for your users.
Segment does not collect any campaign events automatically unless configured to do so.
Install Attributed
When Segment or an integrated partner can discern the source of an install, we’ll collect an Install Attributed
event. This event may be sent to Segment using server-to-server connection from your attribution provider, or directly on the device using packaged destinations. In either case, this will happen after install, and does not apply to all installs, which is why it is a discrete event.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Install Attributed",
"properties": {
"provider": "Tune/Kochava/Branch/AppsFlyer",
"campaign": {
"source": "Network/FB/AdWords/MoPub/Source",
"name": "Campaign Name",
"content": "Organic Content Title",
"ad_creative": "Red Hello World Ad",
"ad_group": "Red Ones"
}
}
}
Property | Type | Description |
---|---|---|
provider |
String | The attribution provider. |
campaign[source] |
String | Campaign source — attributed ad network. |
campaign[name] |
String | The name of the attributed campaign. |
campaign[medium] |
String | Identifies what type of link was used. |
campaign[content] |
String | The content of the campaign. |
campaign[ad_creative] |
String | The ad creative name. |
campaign[ad_group] |
String | The ad group name. |
Push Notification Received
This event can be sent when a push notification is received in the app. It can be automatically enabled on iOS.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Push Notification Received",
"properties": {
"campaign": {
"medium": "Push",
"source": "Vendor Name",
"name": "Referral Flow",
"content": "Your friend invited you to play a match."
}
}
}
Property | Type | Description |
---|---|---|
campaign[name] |
String | Campaign name. |
campaign[medium] |
String | Identifies what type of link was used (Push Notification). |
campaign[content] |
String | Push notification content. |
campaign[source] |
String | Designates the push provider. (Optional) |
Push Notification Tapped
This event can be sent when a user taps on a push notification associated with your app. It can be automatically enabled on iOS.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Push Notification Tapped",
"properties": {
"action": "Accept",
"campaign": {
"medium": "Push",
"source": "Vendor Name",
"name": "Referral Flow",
"content": "Your friend invited you to play a match."
}
}
}
Property | Type | Description |
---|---|---|
action |
String | If this notification is “actionable”, the custom action tapped. Default: “Open” |
campaign[name] |
String | Campaign name. |
campaign[medium] |
String | Identifies what type of link was used (Push Notification). |
campaign[content] |
String | Push notification content. |
campaign[source] |
String | Designates the push provider. (Optional) |
Push Notification Bounced
This event fires when a push notification from a provider bounces. If your push notification provider forwards push lifecycle events to Segment, they should include this event in their suite.
{
"userId": "019mr8mf4r",
"type": "track",
"event":"Push Notification Bounced",
"properties": {
"action": "Accept",
"campaign": {
"medium": "Push",
"source": "Vendor Name",
"name": "Referral Flow",
"content": "Your friend invited you to play a match."
}
}
}
Property | Type | Description |
---|---|---|
action |
String | If this notification is “actionable”, the custom action tapped. Default: “Open” |
campaign[name] |
String | Campaign name. |
campaign[medium] |
String | Identifies what type of link was used (Push Notification). |
campaign[content] |
String | Push notification content. |
campaign[source] |
String | Designates the push provider. (Optional) |
Deep Link Opened
When your application is opened using a referring link, Segment or your packaged deep link partner can fire this event on your behalf. If the deep link has additional data associated with it, either passed through the third party service or as annotations
in launchOption
, you may want to include those values as properties here as well.
This event is fired in addition to the associated Application Opened
event.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Deep Link Opened",
"properties": {
"provider": "Branch Metrics",
"url": "app://landing"
}
}
Property | Type | Description |
---|---|---|
provider |
String | The deep link provider. |
url |
String | The App URL opened. |
Deep Link Clicked
This event may be provided by deep link providers postback mechanisms or an internal redirect service if you use one in order to provide a waypoint funnel step between your content or advertisement and the resulting app open.
{
"userId": "019mr8mf4r",
"type": "track",
"event": "Deep Link Clicked",
"properties": {
"provider": "Branch Metrics",
"url": "brnch.io/1234"
}
}
Property | Type | Description |
---|---|---|
provider |
String | The deep link provider. |
url |
String | The deep link URL clicked. |
This page was last modified: 31 May 2024
Need support?
Questions? Problems? Need more info? Contact Segment Support for assistance!