SKAN interoperation with Facebook

At a glance: Interoperability enables Facebook to share decoded SKAN data with us and enables us to share your CV measurement bits (mapping) with Facebook Ads.

SKAN interoperability: AppsFlyer <-> Facebook

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. 

Related reading: AppsFlyer SKANetwork Solution guide

Scope of SKAN interoperability with Facebook

The interoperation with Facebook allows the following:

  • AppsFlyer and Facebook share the SKAN conversion value (CV) schema, enabling both to provide you with performance metrics.
  • AppsFlyer supports all Facebook 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.
    • Facebook 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 Facebook are counted as organic installs. 
  • In the context of AppsFlyer attribution (Overview dashboard):
    • Consenting user installs brought by Facebook are attributed correctly.
    • Non-consenting users are attributed to organic. 
  • iOS 14.5 implications on SRN reporting
  • Our MMP integration with Facebook always implements the Advertiser Tracking Enabled flag. (This information is provided according to the Facebook app guidance iOS 14 checklist from February 2021).


  • Once interoperability is enabled each time you change measurement settings in AppsFlyer, Facebook pauses (Facebook guidance) your campaigns. Before enabling them, verify that all relevant in-app events are mapped. Note! Don't 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 SKAdNetwork measurement off, Facebook can no longer get CV mapping. 
  • AppsFlyer SDK vs. Facebook SDK: The Facebook SDK is suited if you run campaigns only with Facebook. 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. 

Facebook app install ads guidance

In configuring your Facebook iOS 14 app install campaigns, take into account the following Facebook 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 Facebook optimization method and the measurement type you select in AppsFlyer as follows:
    • Revenue measurement: VO and AEO 
    • Conversion measurement: AEO— Includes Facebook standard events and purchase event. You must map the app event in AppsFlyer to the relevant Facebook event. 

Interoperation procedures

Complete the procedures that follow to enable interoperation. 

For app install attribution:

Allow Facebook to share SKAdNetwork data with AppsFlyer

Allow Facebook to share SKAdNetwork data with AppsFlyer. If you don't do so, you won't see SKAdNetwork installs attributed to Facebook in the AppsFlyer SKAdNetwork dashboard. 

This procedure needs to be performed once per app. 

To grant Facebook permission to share SKAdNetwork data with AppsFlyer:

  1. In AppsFlyer, go to Configuration > Integrated partners.
  2. Select Facebook.


  3. Go to the SKAdNetwork tab.
  4. Click Facebook login. The account you use must be an Admin or Advertiser account having:
  5. Follow the instructions in the user interface.
    After you complete the process in Facebook, you are returned to AppsFlyer. 
  6. Verify that the account status waiting for sync displays.
    This message persists until we get data from Facebook.
  7. Wait until after 02:00 UTC of the next day, then verify that the status changes to success.
    Data in the SKAdNetwork dashboard updates daily by 08:00 UTC.
  8. Read the section about measurement differences

For in-app events attribution:

Share CV schema with Facebook


To enable AppsFlyer SKAdNetwork interoperation with Facebook:
Step Action Details 


App prerequisites
  • Adopt the most recent AppsFlyer SDK into your app.


SKAdNetwork settings review 

Verify that AppsFlyer SKAN Solution is set up and is on. Doing so allows the AppsFlyer SDK to call SKAdNetwork APIs and set the CV.

To view SKAdNetwork settings:

  1. In AppsFlyer, go to Configuration > SKAN Conversion Studio.
  2. Click options (), and verify that SKAdNetwork measurement is on.


  3. Select your preferred measurement mode.
    Learn more about SKAN Conversion Studio.
  4. Make a note of the exact event names set. You need them in the next step. Note! Names are case-sensitive.


In-app event mapping

Review, and if necessary, make changes to your Facebook in-app event mappings. 

To view and set in-app event mappings:

  1. In AppsFlyer, go to Configuration > Integrated Partners.
  2. Select Facebook.
  3. Go to the Integration tab.
  4. In the In-app events postback section:
    1. [Mandatory] If not on, turn on In-app events postback.


    2. Verify that the in-app events, SDK event names you set in SKAdNetwork measurement are mapped to Partner event identifiers, meaning Facebook event names. You must map the currently selected SKAdNetwork measurement type. Notes: (1) The default measurement type is revenue. (2) If you don't map the events, Facebook can't optimize and will only count installs; in-app event postback must always be on.
      Measurement type Mapping requirement

      Map the in-app events you set in Custom to the corresponding Facebook events.

      To report revenue by postback you must set Send revenue to Values & revenue



      If you report revenue by postback to ad networks, verify that your in-app event postback mappings include the in-app revenue events set by you.

      af_skad_revenue is used for overall revenue and mapped to the Facebook revenue event, usually fb_mobile_purchase.

      Note! It's OK to map more than one event to fb_mobile_purchase.

      Conversion Map 1–6 conversion events to the corresponding Facebook events.
      Engagement Map the engagement event you set to the corresponding partner event.
       In-app event mapping guide
  5. Click Save integration.
  6. Scroll down to the bottom of the page. 


  7. In the SKAdNetwork configuration section, click on the MMP connection URL to copy it. 
    The URL is copied. In the next section, we'll tell you where to paste the URL in Facebook.


Connect AppsFlyer to Facebook
  1. In Facebook, open the events manager.


  2. Go to the Settings tab.


  3. In the Configure App Events for SKAdNetwork section, click Set Up Events. 


  4. Select Import from partner app
    This updates Facebook with the CV mapping and instructs the Facebook SDK in your app to stop setting the CV. If import from partner app is disabled—Troubleshoot.
  5. Follow the instructions in the Facebook user interface. One of the following occurs:
    1. You successfully paste the MMP Connection URL into the Facebook user interface. Congratulations! You have completed the integration. Read the notes that follow. 
    2. Pasting the MMP connection URL fails, and an error message displays in the Facebook user interface. If so:
      - Wait 24 hours, then repeat this procedure.
      - If the error persists (more than 24 hours), contact AppsFlyer support. 


  • You need to perform this procedure once. Meaning, there's no need to copy and paste the connection URL after changing the measurement settings in AppsFlyer. For example, if you switch from revenue measurement to conversion measurement, Facebook uses the existing URL to get the current schema. 
  • Completing the procedure enables Facebook to get the CV schema from AppsFlyer using a proprietary randomized structure. There is no way for you to configure this.
  • It takes up to 24 hours for updated measurement settings to take effect in Facebbok. 


iOS 14 campaign setting

In Facebook, verify that the iOS 14 campaign setting is on. 

This setting is found in the New App installs Campaign settings page. 


Additional information

Measurement and timing differences between AppsFlyer and Facebook

Measurement considerations
Item Details 
In-app event names 

Until August 15, 2021, event names in the dashboard used the Facebook event names. Going forward, this is no longer true. 

Revenue mode converted users metrics

[Deprecated August 16, 2021]

In revenue mode, the converted users (paying users) metric doesn't consider the number of users reporting revenue via Facebook campaigns dues to the revenue naming convention. mentioned in the previous section (in-app event names)

Earliest data availability

Data is available starting on the date that you enable the integration according to UTC time. 

Install date 

AppsFlyer and Facebook differ in the way they determine the install date. Consider:

  • iOS SKAdNetwork postbacks don't contain an actual install timestamp. 
  • Facebook regards the postback arrival time as the install time and considers the app timezone in Facebook in setting the date.
  • AppsFlyer derives the install time as follows: Postback arrival time-48 hours=install time. Neither the app time zone nor the Facebook Ad Account time zone are considered in the calculation. 
Data freshness
  • We collect SKAdNetwork data from Facebook at 01:00 UTC
  • Dashboards and aggregate data update 7 hours later.

Verify that you have ads read permission in your Facebook developer account

  1. Go to your Facebook developer account.
  2. Select a Facebook App ID.
  3. Navigate to App Review > Permissions and Features.


  4. Verify that ads_read has the ready for use status. If this is the case, no further action is required. 
  5. If you don't have ads_read then you must request it as follows:
    1. Go to App Review > Requests.
    2. Request ads_admin permission.
    3. Repeat the steps in this procedure to verify that you have been given the necessary permission.

Troubleshooting, discrepancies, and FAQ

Action Details 

Facebook can't connect


In Facebook, 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 Facebook 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 Facebook.

A: There is no need to set priority in Facebook. 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 Facebook. AppsFlyer measures 6 events in conversion without priority. 

[Guidance updated April 20, 2021]

Import from partner app is disabled



In Facebook, if import from partner app is disabled, the app has never sent an event to Facebook using an MMP SDK.

Corrective action

Do one of the following:

  • Start passing events to Facebook using the MMP SDK as soon as possible.
  • Start passing events to Facebook using the Facebook SDK or App Events API and use one of the other flows to set up the conversion schema.

Having done so, after the first events are recorded in Facebook, configure the integration with AppsFlyer. 

[Guidance updated April 25, 2021]

Ranges can't overlap and must be in consecutive order 


You use AppsFlyer SKAdNetwork custom measurement mode. When importing the measurement schema to Facebook 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 Facebook

Q: Does it make sense to send additional event postbacks for events not selected in the CV measurement option to Facebook?

A: For consenting users, send the full range of events to maximize Facebook's ability to optimize.

Map multiple events to the same Facebook event

Q: Can I map multiple in-app events to one Facebook event?

A: If multiple events are mapped to one Facebook standard event, Facebook will not be able to differentiate between the events. So, Facebook will optimize toward the one event they recognize.

Facebook data is not in the dashboard


In the SKAdNewtork integration tab, the message failed to pull data displays.


Corrective action

Verify that the connected account is either a Facebook admin or a Facebook Advertiser account having ads_read permission. 

There is an error in Facebook when you try to run iOS 14 campaigns


All of the following are true:

  • You get an error message in Facebook when you try to run an iOS 14 campaign
  • You recently added a new App or a kids app to the App Store.

This occurs because Facebook isn't aware that you are using an SDK that includes SKAdNetwork support. Meaning the AppsFlyer SDK. 

Corrective action

  1. In AppsFlyer, go to Configuration > Integrated Partners.
  2. Select Facebook
  3. Go to the Integration tab.
  4. Turn off Activate Partner.
  5. Click Save Integration.
  6. Wait 15 seconds.
  7. Turn on Activate Partner.
  8. Click Save Integration.
  9. Wait up to 24 hours for Facebook to get the signal. 

Revenue reported by Facebook

[Updated July 12, 2021]

Facebook derives revenue from the CV using your SKAdNetwork settings. However, this is not a direct calculation, and Facebook uses algorithms in determining the revenue. 

A symptom of this is revenue having unrounded values even if you measure revenue in complete dollars. 

Installs vs. redownloads

[Updated November 30, 3021]

  • Facebook provides us with the postback data of users who install and redownload your app. However, all postbacks are regarded as installs. Consequently, install metrics can be inflated.
  • Starting iOS 15, you can send postback copies directly to AppsFlyer. They are available as raw data. Use them to calculate the number of installs and redownloads. 
Was this article helpful?