Facebook Ads and AppsFlyer SKAdNetwork interoperation

At a glance: Interoperability enables Facebook to share decoded SKAdNetwork data with us and enables us to share your conversion value measurement bits (mapping) with Facebook.

iOS 14 updates relating to Facebook

AppsFlyer confirms that our MMP integration with Facebook always implements the Advertiser Tracking Enabled flag. Meaning, no action is required of you in AppsFlyer.  This information is provided pursuant to the Facebook app guidance iOS 14 checklist dated February 2021.

SKAdNetwork interoperability: AppsFlyer <-> Facebook

If you work with multiple ad network partners, the best practice is to set it up in AppsFlyer. By doing so, SKAdNetwork performance metrics, enriched with other metrics like cost, are available via the AppsFlyer platform. 

Related reading: AppsFlyer SKAdNetwork Solution guide

Scope of SKAdNetwork interoperability with Facebook

The interoperation allows the following:

  • AppsFlyer and Facebook share the SKAdNetwork conversion value 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)
  • If you enable SKAdNetwork partner integration in Facebook: The Facebook SDK stops updating SKAdNetwork conversion value (kill switch). The AppsFlyer SDK updates the conversion value.
  • Facebook shares SKAdNetwork data for inclusion in the AppsFlyer SKAdNetwork dashboard and aggregated reports. If you don't do so, Facebook attributed installs are counted as organic installs. 
  • Traditional dashboard:  installs brought by Facebook of consenting users display correctly. Non-consenting users are attributed to organic. 
  • iOS 14.5 implications on SRN reporting

Considerations

  • Once interoperability is enabled each time you change the measurement settings in AppsFlyer, Facebook pauses (Facebook guidance) your campaigns.  Before enabling them, verify that all relevant in-app events are mapped. Note! 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.  
  • If you turn SKAdNetwork measurement off in AppsFlyer, Facebook can no longer get your measurement settings. 
  • AppsFlyer SDK vs. Facebook SDK: The Facebook SDK is suited if you run campaigns only with Facebook. If you run campaigns with multiple partners then using the AppsFlyer SDK allows you to use a common measurement system and to view data of all partners in AppsFlyer. 
  • Reporting: Facebook installs are reported in the dashboard and aggregated reporting API but aren't avaialble in postback level reports. 

Facebook app install ads guidance

In configuring your Facebook iOS 14 app install campaigns, take into account the following Facebook guidance

  • An app can belong to only 1 ad account.
  • A maximum of 9 campaigns per app, each having 5 ad sets is allowed.
  • Facebook no longer requires a new, 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

Interoperation consists of two parts as follows:

  • Share the conversion value schema with Facebook. No interoperation is required in the app itself. However, you need to adopt the most recent AppsFlyer SDK into the app. 
  • Allow Facebook to share SKAdNetwork data with AppsFlyer. This updates the SKAdNetwork dashboard and reports in AppsFlyer.

Complete the procedures that follow to enable interoperation. 

Share conversion value schema with Facebook

SKAdNetwork-Facebook-AppsFlyer_integration__5_.png

To enable AppsFlyer SKAdNetwork interoperation with Facebook:
Step Action Details 

1

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

2

SKAdNetwork settings review 

Set up and turn on AppsFlyer SKAdNetwork Solution. Doing so allows the AppsFlyer SDK to call SKAdNetwork APIs and set the conversion value.

To view SKAdNetwork settings:

  1. In AppsFlyer, go to Configuration > SKAdNetwork Settings.
  2. Make a note of the exact event names set. You need them in the next step. Note! Names are case-sensitive.
  3. Verify that SKAdNetwork measurement is on. 

3

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.

      SKAdFacebookEventMap_us-en.jpg

    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 be on, in all circumstances. (3) [Udated May 24, 2021] For now the integration is limited to standard Facebook events and not custom events. In the second half of 2021, we expect to remove the limitation.
      Measurement type Mapping requirement
      Revenue

      af_skad_revenue is 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. 

    FacebookScrollDown.png 

  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.

4

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

    FacebookSkadNetworkSetup.jpg

  2. Go to the Settings tab.

    mceclip0.png

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

    mceclip1.png

  4. Select Import from partner app
    This updates Facebook with the conversion value schema and instructs the Facebook SDK in your app to stop setting the conversion value.   If import from partner app is disabled—Troubleshoot.
  5. Follow the instructions in the Facebook user interface. You will be required to copy the MMP Connection URL from AppsFlyer and paste it in Facebook.
    • Notes:
      • 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 conversion value schema from AppsFlyer using a proprietary randomized structure. There is no way for you to configure this. 
      • It takes up to 24 hours for the updated settings in Facebook to take effect.

Allow Facebook to share SKAdNetwork data with AppsFlyer

Allow Facebook to share SKAdNetwork 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.

    FacebookEnable.png

  3. Go to the SKAdNetwork tab.
  4. Click Facebook login. You must log in to Facebook using an Admin or Advertiser account having ads_read permission.
  5. Follow the instructions in the user interface.
    After you complete the process in Facebook, you will be returned to AppsFlyer. 
  6. Verify that the account status waiting for synch 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

Additional information

Measurement and timing differences between AppsFlyer and Facebook

Measurement considerations
Item Details 
In-app event names 

At present, Facebook sends event names to AppsFlyer using the Facebook mapped event name and not your event name.

So, if your event name is af_purchase, Facebook reports the event using fb_mobile_purchase.

The names used are according to the in-app event names mapped in the integration.

Revenue mode converted users metrics

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)

SKAdPayingUsers.png

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

SKAdNetwork data is processed at the end of each day UTC. Meaning, SKAdNetwork data from Facebook received on Monday is available after processing in dashboards and reports on Tuesday after 08:00 UTC. 

This daily methodology impacts apps in the western hemisphere. For these apps, it can take another day for updated data to display. Learn more about daily processing.

Reports available

Facebook data is available in:

Converted users metric in SKAdNetwork dashboard

[Updated May 26, 2021] Currently the converted users metric in the SKAdNetwork dashboard doesn't consider events reported by Facebook. 

 

Troubleshooting, discrepancies, and FAQ

Troubleshoot integration
Action Details 

Facebook can't connect

Symptom

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 conversion value. In your case, the AppsFlyer SDK is setting the conversion value. 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

ImportFromPartnerApp.png

Symptom

In Facebook, if import from partner app is disabled, it means 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 

Symptom

You use AppsFlyer SKAdNetwor 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 that are not selected in the conversion value 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

Symptom

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

FacebookSKAdIntegration.png

Corrective action

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

Raw data

Q: Does Facebook postback data appear in raw data or aggregated postback reports?

A: No. Facebook data is available in the dashboard and via the aggregated reporting API. SKAdNetwork performance reporting API

 

Was this article helpful?