At a glance: Plan your migration from Adjust to AppsFlyer. Understand how to avoid double charges, data duplication, and data loss during the migration period.
About migrating to AppsFlyer
Migrating from Adjust to AppsFlyer provides a smooth transition to a reliable and comprehensive platform for attribution and marketing analytics. AppsFlyer offers secure and unbiased solutions alongside a suite of advanced tools designed to help brands navigate changes in the industry. With global customer support and a focus on continuous product improvement, AppsFlyer aims to equip businesses with the tools and insights needed to grow and adapt.
Compare measurement between AppsFlyer and Adjust
When considering migration, you might want to compare AppsFlyer and Adjust attribution measurements across the same media sources and campaigns. However, not all media sources support measurement with more than one MMP. Those that do may have certain limitations and challenges to prevent attribution discrepancies. See more about Measuring attribution with multiple MMPs.
Tasks
The following table describes the main steps needed for migration. To see a precise breakdown of the general tasks, as well as to record your progress, download this spreadsheet.
You can work on these tasks simultaneously, meaning the marketers, developers, and data engineers can, for the most part, work on their assigned tasks concurrently. Note that we recommend you:
- Complete all of the tasks before releasing your updated app with the AppsFlyer SDK.
- Pause existing marketing campaigns before performing the device ID migration.
| Step | Who's involved | Estimated time | Remarks |
|---|---|---|---|
| 1. Create an AppsFlyer account | Marketer/AppsFlyer dashboard user | 2 hours | |
| 2. Add the app in AppsFlyer | Marketer/AppsFlyer dashboard user | 2 hours | |
| 3. Integrate the SDK | App developers | 1 day + 1 week of testing and iterating |
|
| 4. Migrate devices (optional) | Data engineer | 1-2 weeks |
|
| 5. Migrate campaigns | Marketer/UA manager | 1-3 days for each media source | |
| 6. Set up data reporting | Data engineer | 3-6 weeks |
Step 1. Create an AppsFlyer account
To create an AppsFlyer account:
Step 2. Add your app
To add your app in AppsFlyer:
- Add your app in AppsFlyer.
- [Optional] Change the default 90-day re-attribution window to align with your definition of active users.
- As part of the app onboarding wizard in AppsFlyer, prepare and send an email to your developer with instructions and tasks for SDK integration and in-app event mapping.
Step 3. Integrate the SDK
The AppsFlyer SDK integrated into the app is the link between the app and the AppsFlyer platform. It reports app installs, app opens, in-app events, and so on.
To integrate the AppsFlyer SDK:
- Receive the email from the marketer with instructions and tasks for SDK integration and in-app event mapping.
- Follow those email instructions and use the AppsFlyer SDK integration wizard to integrate the AppsFlyer SDK into the app.
- The wizard takes the developer from installation to successful testing of the integration. It also guides the developer in defining in-app events and successfully testing their transmission to AppsFlyer. Learn more about the SDK integration wizard
- See additional developer guides for Android and iOS SDK integration.
- Map in-app events you want to be recorded, using the AppsFlyer schemes.
This can be done via SDK or S2S.
- Remove the Adjust SDK.
You can do this immediately and switch exclusively to AppsFlyer, or run both SDKs simultaneously for a while. View a breakdown of these options in the table below.Option What happens after
updated app version releaseImpact Remove the Adjust SDK (recommended) Only AppsFlyer records new installs and updating users.
Adjust still shows events performed by users, until the users update their app too.- Fast transition.
- No double attribution.
Keep the Adjust SDK for a transition period AppsFlyer and Adjust attribute new installs and report events. At a later date, remove the Adjust SDK. - Data validation is possible. Meaning, you can compare data from AppsFlyer and Adjust.
- Double attribution, which may cause double charges with ad networks. See example below.
- Higher workload.
- After all other tasks in this migration article are completed, release the app version with the AppsFlyer SDK to the market. New users are attributed by AppsFlyer.
Note:- Make sure to update the app for iOS, Google Play, and any relevant Android out-of-store markets.
- Your Android app may exist in unofficial APK sites, even if you don't know it (search the web for your app's package name to find out). APK sites take some time to update to the latest version, so they may bring organic users, which install old versions without AppsFlyer SDK.
- App update rollouts in the app stores can take a couple of days to fully complete. Users installing during this phase may still get the previous version.
Step 4. Migrate devices—optional
Device migration is the process of uploading a list of your existing user device IDs (IDFA, IDFV, GAID) into AppsFlyer. (If you don't have all the device IDs needed, you can contact your CSM to help guide you through the migration process using CUID.) You should perform this process before releasing the new app version, which will include the AppsFlyer SDK. There are two options when migrating devices, attributed or non-attributed migration.
Device migration solves data issues associated with existing app users who downloaded the app, and were attributed by Adjust. For example, SRN double charges, which occur when users originally attributed to an SRN under Adjust, and who are still within the lookback window, are claimed by the SRN again under AppsFlyer.
Example
- A new user clicks on an ad on the Facebook app and installs your app on June 15.
- On June 24 the user updates the app to the version with the AppsFlyer SDK, and launches. For AppsFlyer, this is a new user, that needs to be attributed in real time.
- AppsFlyer queries Meta ads with the user device ID. Because the user is still within the Meta ads 28-day lookback window, Meta ads self-attributes the user. This causes a double charge to the app owner for the same user.
Once you migrate devices, data reflects in AppsFlyer as follows:
- Installs data: Similar to re-installs, migrated devices have no install data. Migrated device installs are not displayed in AppsFlyer.
- In-app events and sessions data: Recorded and displayed as organic for non-attributed device migration method, or attributed to the media source and campaign, if using the attributed method.
- Retargeting: Re-attributions and re-engagements are displayed normally.
- Activity data: Displayed normally.
- Retention and cohort data: Migrated devices have no install record. As such, they aren't associated with any cohort, and can't be shown in the cohort and retention reports.
Note
If the app is not opened within 180 days from the migration date, all of the migrated device data is deleted. Consequently, if the app is opened after the 180-day period, a new install will be recorded.
To migrate devices:
- Decide which user population to migrate. You can migrate all existing users (which may prevent you from getting accurate re-attribution data from AppsFlyer), or users that only recently installed your app (which may lead to double charges of somewhat older users).
We recommend migrating users who are active during your current re-attribution window period. For example, if your app has a 90-day re-attribution window, migrate those users who have at least one session during the previous 90 days. - [Optional] Tell the marketer/UA manager to pause existing marketing campaigns (from SRNs, non-SRN ad networks, owned media, etc.) until after the device migration.
If you decide not to pause campaigns, migrate any remaining device IDs from the other vendor as soon as the updated app version with the AppsFlyer SDK is released to app stores. - Prepare a CSV file based on the user population selected, using either the attributed or non-attributed migration structure. See sample CSV
- Send your AppsFlyer CSM the CSV.
Your CSM will migrate the device IDs to AppsFlyer.
Step 5. Migrate campaigns
Switch existing marketing campaigns to AppsFlyer to enable AppsFlyer attribution, and avoid duplicate charges and the loss of attribution data.
Note: You can choose to only migrate a few marketing campaigns at a time. In this case, you can segment the ones you want to migrate by media source (for example, ad network or agency), geo, or campaign.
The following sections explain what is needed to enable AppsFlyer measurement for different types of media sources: SRNs, non-SRN ad networks, owned media, and SKAN.
SRNs
SRNs reply to Mobile Measurement Partners (MMPs) when queried about engagements of specific devices. If AppsFlyer and Adjust query the same SRN about the same device install, you may incur double charges.
To migrate SRN campaigns:
- Activate and configure relevant SRNs in AppsFlyer.
Note
- SRNs can run multiple MMPs (except Meta ads and Twitter).
- Meta ads cannot de-duplicate in-app events.
Non-SRN ad networks
Ad network attribution links record the engagements of users and are subsequently used to attribute the engagements that become actual installs.
To migrate non-SRN ad network campaigns:
- Activate the relevant ad networks in AppsFlyer.
- Generate AppsFlyer attribution links for each ad network.
- Switch the existing links in each of your campaigns with the AppsFlyer attribution links.
Owned media
Owned media refers to attribution links you use in:
- Content sharing
- Web-to-app
- SMS
- Social media posts
- Blogs
- Internet communities (Quora, etc.)
- and more...
For these campaigns, AppsFlyer uses OneLink links. OneLink links redirect users based on their device to the correct app store, directly into the app, or to a web URL/landing page.
To change your Adjust links into AppsFlyer OneLink links:
- Contact your CSM, who will assist you with transforming your owned media links to into OneLink links according to the channels and tools you currently use.
SKAN
For SKAdNetwork (SKAN) attribution, you can only have one SDK update the conversion value. Otherwise, SKAN data is rendered meaningless. Therefore, make sure that after migration, only the AppsFlyer SDK updates the SKAN conversion value.
Learn about setting up the SKAN conversion value in AppsFlyer.
Step 6. Set up data reporting
You can get raw and aggregate report data from AppsFlyer using a number of methods. Familiarize yourself with the methods and set up the ones that are relevant to you.
Reporting methods include:
- Dashboards
- Export reports
- Push API
- Pull API
- Data Locker
Before migration, your systems store your attribution data from Adjust according to the reporting structures, fields, and parameters you have set up with them. For AppsFlyer to correctly report data, you must adapt and map your current report structures to AppsFlyer report structure, fields, and parameters.
To adapt/map your report structures:
- Contact your AppsFlyer CSM for help in quickly adapting/migrating your report data structures from Adjust to AppsFlyer.
Additional information
Attributed migration
Devices migrated to AppsFlyer with this method have their in-app events, and sessions recorded and displayed according to the media source reported by the previous attribution vendor, and according to the ad networks' data retention policies.
Attributed device migration CSV structure
| Column name |
Description | Mand-atory | Examples |
|---|---|---|---|
|
app_id |
App ID as it appears in AppsFlyer dashboard | Yes |
|
|
platform |
Device platform: ios or android | Yes |
|
|
device_id |
|
Yes |
|
|
id_type |
|
Yes |
|
|
install_time |
The original app install time with the ISO 8601 UTC format: yyyy-mm-ddTHH:MM:SS.SSS |
No | 2018-01-22T08:45:33.412 |
|
media_source |
|
Yes |
Organic: organic |
|
integrated_partner |
|
Yes |
|
|
campaign |
For more granular attribution details, supply the original campaign name. Format: String |
No | |
|
campaign_id |
For more granular attribution details, supply the original campaign id. Format: String no spaces permitted |
No |
CSV file rules:
- CSV file can contain user devices from multiple apps.
- Do not duplicate the same combination of device ID and app ID in multiple rows. If duplication occurs, the last occurrence in the file is used.
- All column headers must be included: app_id, platform, device_id, id_type, install_time, media_source, integrated_partner, campaign, campaign_id. Note: The order of the fields is important and must be maintained.
- You can add both IDFV and IDFA for the same device, but they must be in separate rows. All fields in the separate rows should be the same, except device_id.
- Each row must contain exactly 9 fields separated by commas.
- Leave non-mandatory fields empty (blank).
- Files can contain up to 5 million rows.
- If you have multiple files, give each file a unique name.
- Encode data using UTF-8.
- [Optional] Compress files using ZIP or GZIP.
Non-attributed migration
Devices migrated to AppsFlyer with this method are recorded (but do not display) as organic users. Their in-app events and sessions are also recorded and displayed as organic.
Non-attributed device migration CSV file structure
CSV file rules:
- CSV file can contain user devices from multiple apps.
- Each row contains a single device ID per app.
- Depending on the file structure option you choose, file columns must be as follows (and in the order listed):
- Option 1: app_id,device_id
- Option 2: app_id,device_id,id_type
- App IDs in lowercase.
- Android identifiers in lowercase.
- IDFA/IDFV in uppercase.
- Up to 25 million rows permitted.