At a glance: Interoperability enables Meta ads to share decoded SKAN data with AppsFlyer and enables AppsFlyer to share your CV measurement bits (mapping) with Meta ads.
SKAN interoperability: AppsFlyer <-> Meta ads
If you work with multiple ad network partners, it is best to set it up in AppsFlyer. By doing so, SKAN performance metrics, enriched with other metrics like cost, are available via the AppsFlyer platform.
Scope of SKAN interoperability with Meta ads
The interoperation with Meta ads allows the following:
- AppsFlyer and Meta ads share the SKAN conversion value (CV) schema, enabling both to provide you with performance metrics.
- AppsFlyer supports all Meta ads campaign objectives which enable campaign optimization:
- Mobile app install (MAI)
- Mobile app engagement (MAE)
- Value optimization (VO)
- After enabling SKAN integration the following occurs:
- Facebook SDK stops updating SKAN CV (kill switch).
- AppsFlyer SDK updates the CV.
- Meta ads shares SKAN postback data for inclusion in the SKAN dashboard and aggregated reports.
Other considerations:
- If you don't enable SKAN partner integration, in the SKAN dashboard, installs brought by Meta ads are counted as organic installs.
- In the context of AppsFlyer attribution (Overview dashboard):
- Consenting user installs brought by Meta ads are attributed correctly.
- Non-consenting users are attributed to organic.
- iOS 14.5 implications on SRN reporting
-
Our MMP integration with Meta ads always implements the Advertiser Tracking Enabled flag. (This information is provided according to the Meta ads app guidance iOS 14 checklist from February 2021).
Considerations
- Once interoperability is enabled each time you change measurement settings, you don't need to repeat the MMP integration procedure in this article. Meaning you don't need to copy the MMP connection URL again.
- In AppsFlyer, if you turn SKAN measurement off, Meta ads can no longer get CV mapping.
- AppsFlyer SDK vs. Facebook SDK: The Facebook SDK is suited if you run campaigns only with Meta ads. If you run campaigns with multiple partners, by using the AppsFlyer SDK you can view data of all partners.
- Review the discrepancies section in this article.
Meta ads app install ads guidance
In configuring your Meta ads iOS 14 app install campaigns, take into account the following Meta ads guidance:
- A maximum of 9 campaigns per app, each having 5 ad sets is allowed. Advertisers can run these 9 app campaigns across 9 ad accounts per app ID.
- You don't need a separate account for iOS 14 campaigns. You can run iOS 14 campaigns from existing accounts.
-
There is a relationship between the Meta ads optimization method and the measurement type you select in AppsFlyer as follows:
- Revenue measurement: VO and AEO
- Conversion measurement: AEO— Includes Meta ads standard events and purchase event. You must map the app event in AppsFlyer to the relevant Meta ads event.
Interoperation procedures
Complete the procedures that follow to enable interoperation.
For app install attribution:
Allow Meta ads to share SKAN data with AppsFlyer
Allow Meta ads to share SKAN data with AppsFlyer. If you don't do so, you won't see SKAN installs attributed to Meta ads in the AppsFlyer SKAN dashboard.
This procedure needs to be performed once per app.
To grant Meta ads permission to share SKAN data with AppsFlyer:
- In AppsFlyer, go to Collaborate > Active Integrations.
- Search for and select Meta ads.
- Go to the SKAN tab.
- Click f login. The account you use must be an Admin or Advertiser account with the following permissions:
- Ads_read permission. See verify that you have ads read permission.
- Access to the advertised app ID in the Meta Business Partner settings.
- Follow the instructions in the user interface.
Meta generates an access token that permits data sharing with AppsFlyer. After you complete the process, you are returned to AppsFlyer. - If this is your first time setting up this integration, verify that the account status Waiting for sync displays.
This message persists until we get data from Meta ads. - Wait until after 02:00 UTC of the next day, then verify that the status changes to Data was pulled successfully.
Data in the SKAN dashboard updates daily by 08:00 UTC. - Read the section about measurement differences.
For in-app events attribution:
Share CV schema with Meta ads
Enabling AppsFlyer SKAN interoperation with Meta ads
Step | Action | Details | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
1 |
App prerequisites |
|
||||||||
2 |
SKAN settings review |
Verify that AppsFlyer SKAN Solution is set up and is on. Doing so allows the AppsFlyer SDK to call SKAN APIs and set the CV. To view SKAN settings:
|
||||||||
3 |
In-app event mapping |
Review, and if necessary, make changes to your in-app event mappings. To view and set in-app event mappings:
|
||||||||
4 |
Connect AppsFlyer to Meta ads |
Notes
|
||||||||
5 |
iOS 14 campaign setting |
In Meta ads, verify that the iOS 14 campaign setting is on. This setting is found in the New App installs Campaign settings page. |
Additional information
Turning off the SKAN integration
When turning off your Meta ads integration, it's not enough to turn off the Activate partner toggle, you must separately remove the SKAN connections to stop SKAN data recording.
To turn off the SKAN integration:
- In AppsFlyer, go to Collaborate > Active Integrations.
- Search for and select Meta ads.
- Go to the SKAN tab.
- Click the delete icon for the account you want to remove.
Measurement and timing differences between AppsFlyer and Meta ads
Item | Details |
---|---|
In-app event names |
Until August 15, 2021, event names in the dashboard used the Meta ads event names. Going forward, this is no longer true. |
Revenue mode converted users metrics |
[Deprecated August 16, 2021]
|
Earliest data availability |
In the first data sync after integration, as well as subsequent syncs, AppsFlyer receives Meta ads data for up to the last 7 days retroactively. |
Install date |
AppsFlyer and Meta ads differ in the way they determine the install date. Consider:
|
Data freshness |
|
Verifying the ads_read permission
ads_read permission provides Meta ads customers API access to ad performance data for use in custom dashboards and data analytics.
To verify your Meta ads account has ads_read permission:
- Go to your Meta ads developer account.
- Select a Facebook App ID.
- Navigate to App Review > Permissions and Features.
- Verify that ads_read has the ready for use status. If this is the case, no further action is required.
- If you don't have ads_read then you must request it as follows:
- Go to App Review > Requests.
- Request ads_admin permission.
- Repeat the steps in this procedure to verify that you have been given the necessary permission.
Troubleshooting, discrepancies, and FAQ
Action | Details |
---|---|
Meta ads can't connect |
Symptom In Meta ads, if you get the message, we can't connect. Check that you're using the correct URL. If the problem continues, contact your partner app for help. Corrective action In AppsFlyer, verify that you have turned in-app event mapping and mapped your AppsFlyer events to your Meta ads events. (Described in the in-app event mapping described in the preceding section) [Guidance updated April 20, 2021] |
Event priority |
Q: How do I set the event priority in Meta ads? A: There is no need to set priority in Meta ads. This priority feature relates to apps that use the Facebook SDK to set the CV. In your case, the AppsFlyer SDK is setting the CV. Disregard the priority option in Meta ads. AppsFlyer measures 6 events in conversion without priority. [Guidance updated April 20, 2021] |
Event occurrences |
Q: Why do I have more event occurrences displaying in AppsFlyer than in Meta ads? A: Meta ads only counts 0-1 event occurrences. Therefore, even if you define more occurrences as part of a range, the additional occurrences are only counted by AppsFlyer. |
Import from partner app is disabled |
Symptom In Meta ads, if import from partner app is disabled, the app has never sent an event to Meta ads using an MMP SDK. Corrective action Do one of the following:
Having done so, after the first events are recorded in Meta ads, configure the integration with AppsFlyer. [Guidance updated April 25, 2021] |
Ranges can't overlap and must be in consecutive order |
Symptom You use AppsFlyer SKAN custom measurement mode. When importing the measurement schema to Meta ads the following message display: Ranges can't overlap and must be in consecutive order. Corrective action Revenue values in the custom conversion schema must be in consecutive ascending order. [Guidance updated April 26, 2021] |
Sending events to Meta ads |
Q: Does it make sense to send additional event postbacks for events not selected in the CV measurement option to Meta ads? A: For consenting users, send the full range of events to maximize Meta ad's ability to optimize. |
Map multiple events to the same Meta ads event |
Q: Can I map multiple in-app events to one Meta ads event? A: If multiple events are mapped to one Meta ads standard event, Meta ads will not be able to differentiate between the events. So, Meta ads will optimize toward the one event they recognize. |
No data to pull |
Q: Why does the connection status display "No data to pull: Check your Meta data-sharing permissions"? A: Either there is no SKAN data yet or you need to log into Meta Ads using an Administrator user role on the account. Q: I got a "No data to pull: Check your Meta data-sharing permissions". Even though I see Meta Ads details, is everything ok? A: Yes. Although this error message may display, everything is fine and your data will get pulled. |
Meta ads data is not in the dashboard |
Symptom In the SKAN integration tab, the message failed to pull data displays. Corrective action Verify that the connected account is either a Facebook admin or a Meta ads Advertiser account having ads_read permission. |
There is an error in Meta ads when you try to run iOS 14 campaigns |
Symptom All of the following are true:
This occurs because Meta ads isn't aware that you are using an SDK that includes SKAN support. Meaning the AppsFlyer SDK. Corrective action
|
Revenue reported by Meta ads |
[Updated July 12, 2021] Meta ads derives revenue from the CV using your SKAN settings. However, this is not a direct calculation, and Meta ads uses algorithms in determining the revenue. A symptom of this is revenue having unrounded values even if you measure revenue in complete dollars. |
Retroactive data backfill |
[Updated December 23, 2021] Sometimes we aren't able to connect to Meta ads to get the data, for example, due to login failures. No need to worry. We'll fill in reporting gaps of the previous 7 days the next time we are able to log in. |
AppsFlyer is showing significantly more installs/events/revenue than Meta ads |
In many cases, this discrepancy occurs because Meta ads dashboard displays only click-through installs or events by default, while AppsFlyer dashboard display both click and view-through installs and events. |
Agency integration |
If the agency has an Administrator user role in the advertiser's Meta ads account, then they can perform the procedure in this article to enable SKAN interoperation on the behalf of the advertiser. Advertisers don't need to log in to their Meta ads account as well. The agency login will be indicated in the advertiser's account. |
An updated CV doesn't appear on Meta ads |
When adding, changing, or removing a conversion value (CV) in the SKAN Conversion Studio, make sure that the event is mapped in the In-app event postbacks. Otherwise, the CV won't be updated on Meta ads. |
Modeled data differences in AppsFlyer and Meta ads Manager |
AppsFlyer models aggregate data that basic SKAN reporting is unable to provide. Learn more When AppsFlyer models data, data that is modeled by Meta ads isn’t taken into consideration, as AppsFlyer relies solely on confirmed, impartial data. Therefore, there may be data and granularity discrepancies between Meta ads Manager reports and AppsFlyer reports. |