Apple and Google send subscription events directly to the server using Subscription Status URL and Real-time developer notifications (RTDN). Therefore, apps can not send events to analytical systems correctly and on-time. For example, if the user subscribed and then didn't open the app, without a server developer will get zero information about subscription status.
It's not a raw events proxy from Apple/Google. Adapty processes events into human-readable format instantly as they created and enriches them with additional information, such as customer ID, consecutive payments, and others. Besides that Apple doesn't send events about subscription renewals but we do.
You don't need to implement custom server logic to process Apple and Google Play subscription events, Adapty does it for you. Make sure to set up Subscription Status URL for iOS and Real-time developer notifications (RTDN) for Android.
Each integration is native, so Adapty maps some properties to system-native.
If you leave the Event Name blank, Adapty won't send it.
To integrate AppsFlyer go to Integrations -> AppsFlyer and set credentials.
To find App ID, open your app page in App Store Connect, go to the App Information page in section General and find Apple ID in the left bottom part of the screen.
To find Android Package Name, open your app page on Google Play Console. You can see it under the app name.
Open AppsFlyer and navigate to your app page. Scroll the left menu bar, find App Settings, and use Dev Key.
AppsFlyer doesn't have a Sandbox mode for server2server integration. So you need a different application/account in AppsFlyer for Sandbox Dev Key.
DO NOT USE YOUR MAIN DEV KEY AS A SANDBOX KEY
Adapty maps some events to AppsFlyer standard events by default. With such configuration, AppsFlyer can further send events to each ad network that you use without additional setup.
It's very important to send AppsFlyer attribution data from the device to Adapty using Adapty.updateAttribution()
SDK method. The example below shows how to do that.
import AppsFlyerLib// AppsFlyer v5 (AppsFlyerTrackerDelegate)extension AppDelegate: AppsFlyerTrackerDelegate {func onConversionDataSuccess(_ conversionInfo: [AnyHashable : Any]) {// It's important to include the network user IDAdapty.updateAttribution(conversionInfo, source: .appsflyer, networkUserId: AppsFlyerTracker.shared().getAppsFlyerUID())}}// AppsFlyer v6 (AppsFlyerLibDelegate)extension AppDelegate: AppsFlyerLibDelegate {func onConversionDataSuccess(_ installData: [AnyHashable : Any]) {// It's important to include the network user IDAdapty.updateAttribution(installData, source: .appsflyer, networkUserId: AppsFlyerLib.shared().getAppsFlyerUID())}}
To integrate Adapty with Mixpanel you need only one variable: Mixpanel access token. Find the token in your Mixpanel project. If you need help, here's the official docs.
Adapty maps some properties such as user id and revenue of the event to Mixpanel-native properties. With such mapping, Mixpanel is able to show you correct data in the profile and events timeline.
Adapty also accumulates revenue from each user.
Use Adapty.updateProfile()
method to set mixpanelUserId
. If not set, Adapty uses your user ID (customerUserId
) or if it's null Adapty ID. Make sure that the user id you use to send data to Mixpanel from your app is the same one you send to Adapty.
In the same way as with Mixpanel, Adapty maps properties to Amplitude-native properties.
You need to enter API Key into Adapty. To find a token go to your Project settings in Amplitude. In case you need help refer to official docs.
Use Adapty.updateProfile()
method to set amplitudeDeviceId
or amplitudeUserId
. If not set, Adapty uses your user ID (customerUserId
) or if it's null Adapty ID. Make sure that the user id you use to send data to Amplitude from your app is the same you send to Adapty.
Facebook Ads integration is different from all others. Usually, companies create ads using Facebook and would like to optimize campaigns based on customers behavior. Optimization is available only for Facebook standard events. That's why editing event name is not available for Facebook Ads integration. Adapty properly maps customers event into Facebook events in the following way
Adapty event | Facebook Ads event |
Subscription initial purchase | Subscribe |
Subscription renewed | Subscribe |
Subscription cancelled | CancelSubscription |
Trial started | StartTrial |
Trial converted | Subscribe |
Trial cancelled | CancelTrial |
Non subscription purchase | fb_mobile_purchase |
Billing issue detected | billing_issue_detected |
Entered grace period | entered_grace_period |
Auto renew off | auto_renew_off |
Auto renew on | auto_renew_on |
Auto renew off subscription | auto_renew_off_subscription |
Auto renew on subscription | auto_renew_on_subscription |
StartTrial, Subscribe, CancelSubscription are standard events.
You need an application on Facebook Developers platform. Log in to your app and then find advanced settings.
Scroll down and find a Client Token. Also, find the App ID in the header.
Adjust works a bit different from other platforms. You need to manually create events in Adjust dashboard, get event tokens, and copy-paste them to appropriate events in Adapty.
Open your Adjust dashboard and you'll see your apps.
You may have different Adjust applications for iOS and Android, so in Adapty you have two independent sections for that. If you have only one Adjust app, just fill in the same information
Copy App Token and paste it to Adapty.
Now you need to find event tokens for all events that you want Adapty to send. To do that go to All Settings.
Copy event token and paste to Adapty.
It's very important to send Adjust attribution data from the device to Adapty using Adapty.updateAttribution()
SDK method. The example below shows how to do that.
import Adjustextension AppDelegate: AdjustDelegate {func adjustAttributionChanged(_ attribution: ADJAttribution?) {if let attribution = attribution?.dictionary() {Adapty.updateAttribution(attribution, source: .adjust)}}}
Open your Branch Account Settings and find the Branch Key field. Use it for Key test or Key live in Adapty dashboard. In Branch, switch between Live and Tests environments for the appropriate key.
You can send an event with Proceeds (after Apple/Google cut) or just revenue. Also, you can check a box for reporting in the user's currency.
It's very important to send Branch attribution data from the device to Adapty using Adapty.updateAttribution()
SDK method. The example below shows how to do that.
To connect Branch user and Adapty user, make sure you provide your customerUserId
as Branch Identity id. If you prefer not to use customerUserId
in Branch, use networkUserId
param in attribution method to specify the Branch user ID to attach to.
import Branch// loginBranch.getInstance().setIdentity("YOUR_USER_ID")// logoutBranch.getInstance().logout()
Next, pass the attribution you receive from initializing method of Branch iOS SDK to Adapty.
import BranchBranch.getInstance().initSession(launchOptions: launchOptions) { (data, error) inif let data = data {Adapty.updateAttribution(data, source: .branch)}}
Open AppMetrica apps list. Choose the app you want to send events to and go to Settings. Copy Application ID and Post API key and use them to set up the integration in Adapty.
AppMetrica syncs events every 4 hours, so it may take some time for events to appear in the dashboard. AppMetrica doesn't support sending events revenue, but we send it as regular property.
Use Adapty.updateProfile()
method to set appmetricaProfileId
or appmetricaDeviceId
. If not set, Adapty uses your user ID (customerUserId
). Make sure that the user id you use to send data to AppMetrica from your app is the same one you send to Adapty. These links should help to set up a user id for AppMetrica in your app.
Set profile ID iOS;
Get device ID iOS;
Set profile id Android;
Get device ID Android.