Skip to contentSkip to navigationSkip to topbar
Page toolsOn this page
Looking for more inspiration?Visit the

Analytics Kotlin AppsFlyer Plugin


AppsFlyer is a mobile attribution and marketing analytics platform that helps app marketers around the world make better decisions. The AppsFlyer destination code is open source and available on GitHub for iOS and Android(link takes you to an external page).


Getting started

getting-started page anchor
  1. From the Segment web app, click Catalog.
  2. Search for "AppsFlyer" in the Catalog, select it, and choose which of your sources to connect the destination to.
  3. In the destination settings, enter your AppsFlyer Dev Key, which can be retrieved from the App Settings section of your AppsFlyer account.
  4. After you build and release to the app store, Segment starts translating and sending your data to AppsFlyer automatically.

(warning)

Warning

The AppsFlyer library will be installed as an additional dependency.

To install the Segment-Appsflyer integration, simply add this line to your gradle file:

implementation 'com.segment.analytics.kotlin.destinations:appsflyer:<latest_version>'

Or the following for Kotlin DSL

implementation('com.segment.analytics.kotlin.destinations:appsflyer:<latest_version>')

Using the plugin in your app

using-the-plugin-in-your-app page anchor

Open the file where you setup and configure the Analytics-Kotlin library. Add this plugin to the list of imports.

import com.segment.analytics.kotlin.destinations.appsflyer.AppsflyerDestination

Just under your Analytics-Kotlin library setup, call analytics.add(plugin = ...) to add an instance of the plugin to the Analytics timeline.

1
analytics = Analytics("<YOUR WRITE KEY>", applicationContext) {
2
this.flushAt = 3
3
this.trackApplicationLifecycleEvents = true
4
}
5
analytics.add(plugin = AppsflyerDestination(applicationContext))

Your events will now begin to flow to Appsflyer in device mode.


If you're not familiar with the Segment Specs, take a look to understand what the Identify method does. An example Kotlin call would look like:

1
analytics.identify("user-123", buildJsonObject {
2
put("username", "MisterWhiskers")
3
put("email", "hello@test.com")
4
put("plan", "premium")
5
});

When you call Identify, Segment uses AppsFlyer's setCustomerUserID to send the userId that was passed in.

Note: Identify calls are not supported using AppsFlyer's HTTP API at the moment. You can only send Identify calls if you have the AppsFlyer SDK bundled.


If you're not familiar with the Segment Specs, take a look to understand what the Track method does. An example Kotlin call would look like:

1
analytics.track("View Product", buildJsonObject {
2
put("productId", 123)
3
put("productName" "Striped trousers")
4
});

When you call Track, Segment translates it automatically and sends the event to AppsFlyer.

Segment includes all the event properties as callback parameters on the AppsFlyer event, and automatically translate properties.revenue to the appropriate AppsFlyer purchase event properties based on the spec-matching properties.


Segment will automatically trigger an Install Attributed event if you have trackAttributionData enabled in your settings, and the Segment-AppsFlyer integration installed in your app. The event payload will adhere to the Install Attributed event specification documented in the Spec: Mobile docs and will propagate to your other downstream destinations.

This logic depends on the Appsflyer AppsFlyerConversionListener interface(link takes you to an external page), and will only send when Appsflyer detects an install.

Revenue tracking

revenue-tracking page anchor

The destination automatically recognizes spec-matching revenue property and translates them to AppsFlyer's revenue tracking method.

In-App purchase receipts

in-app-purchase-receipts page anchor

The destination does not currently support in-app purchase receipts. If this is important to you, email support@appsflyer.com.

The destination does not automatically support out-of-the-box deeplinking (you need to write code here regardless!).

Therefore, you can use AppsFlyer's OneLink integration which is a single, smart, tracking link that can be used to track on both Android and iOS. OneLink tracking links can launch your app when it is already installed instead of redirecting the user to the app store.

For more details, review the AppsFlyer OneLink set up Guide(link takes you to an external page). More information is available in the AppsFlyer SDK Integration Guides ( Android(link takes you to an external page)) and Segment's mobile FAQs (iOS, Android).