Facebook Ads SKAdNetwork Integration


Integration Summary

SKAdNetwork Postback Handling N/A
Conversion Value Decoding Supported
Campaign Data Enrichment


Due to data being aggregated at the campaign level, Facebook's reporting at the ad set may be partial.

Where available, the supported granularity is:
• Campaign Name
• Campaign ID
• Sub Campaign Name (Ad Set Name)
• Sub Campaign ID (Ad Set ID)
• View-Through / Click-Through
• Country
• Is Modeled (available in API & Destinations)
• SKAN Campaign ID (available in API & Destinations)

Note: Facebook does not share the SKAdNetwork Redownload flag with customers or MMPs. SKAN installs from Facebook will never appear as redownloads in reports.

Campaign Data Granularity Supported
Conversion Model Sharing  Supported

FAQ and Troubleshooting


Why might there be differences in SKAdNetwork (SKAN) installs reported between Singular and Facebook?

There could be several reasons for variations in SKAN installs reported by Singular and Facebook:

  1. Different Attribution Logic: Singular considers both click-through and view-through conversions, while Facebook may default to showing only click-through conversions. To view view-through conversions in Facebook, hover over the relevant result in their report.
  2. Data Refresh Rates: Singular and Facebook may have different data refresh frequencies, leading to temporary discrepancies.
  3. Privacy Thresholds: Changes in Apple’s privacy thresholds might cause missing conversion values in SKAdNetwork data on Facebook. Minimum install requirements may be necessary for data to be passed back without null information.
  4. Time Zone Differences: Facebook's SKAdNetwork reports use the configured timezone of the Facebook account, which may differ from Singular's reports.
  5. Redownload Handling: Facebook does not share the SKAdNetwork redownload flag, resulting in SKAN installs from Facebook not appearing as redownloads in reports.
  6. Campaign and Account Limitations: Facebook has limitations on active campaigns per app and ad accounts per app for SKAdNetwork campaigns, which could impact reported data.
  7. Data Aggregation Levels: Facebook aggregates data at the campaign level, potentially leading to partial reporting at the ad set level, causing discrepancies if data granularity differs.
  8. Conversion Model Differences: Variances in conversion models or configurations between Singular and Facebook can lead to differences in reported installs.
  9. Delays in Conversion Model Changes: Changes in conversion models in Singular may not immediately reflect in Facebook's reporting, causing short-term discrepancies.

Considering these factors when comparing data between Singular and Facebook helps to understand the sources of any discrepancies.

Why am I unable to select "Value (Optimization)" as an option for my Facebook SKAN campaign?


For "Value" to be a selectable option, double-check that your app meets Facebook requirements for value optimization. In particular:

  • You must be using a Singular revenue conversion model (configuration schema). Facebook value optimization uses revenue/purchases to optimize, so using a Singular revenue model is required.
  • Have an active or recent AEO campaign optimizing using a revenue model for the app, as:
    • Facebook must have received at least 15 attributed click-through purchases with conversion values over the last 7 days.
    • Facebook must have received at least 2 distinct purchase conversion values over the last 7 days.
Note: An app only needs to meet Facebook's VO eligibility requirements once.

For more details, see Facebook's documentation on VO eligibility requirements.

Why am I seeing many missing conversion values for Facebook?

Facebook has provided the following statement on increases in missing conversion values passed back through SKAdNetwork for AEO/VO campaigns:

In May 2021, we identified an issue impacting iOS 14 SKAdNetwork (SKAN) App Event Optimization (AEO)/Value Optimization (VO) campaigns that resulted in an increase in null conversions in the data passed back.

Based on the investigation conducted by our product team, we have high confidence that this was triggered as a result of a change in Apple’s privacy threshold for SKAN campaigns, meaning campaigns will need to have a minimum number of campaign installs for data to be passed back without null information.

While we are working to implement back-end mitigations by early July, we recommend advertisers to take the following alternative actions:

  • Consolidate campaigns to meet the 128 installs per day threshold
  • Increase budget to meet 128 installs per day
  • After options 1 and 2, if you are still experiencing artificially high costs, switching optimization from AEO/VO to MAI may help to achieve the minimum install threshold
Why can't I see SKAdNetwork events from Facebook in my Singular SKAdNetwork reports?

Make sure that you've mapped the following:

  • The SDK event to a Facebook event (in Partner Configuration)
  • The Singular SKAN event to the Facebook event (in Settings > Events).

For more details, see How do I make SKAN events include data from Facebook?

Why am I getting an error when entering my "MMP URL" in Facebook Events Manager?


  • Check to see you have an active conversion model configured in Singular (step #2)
  • Check to see that you have mapped all events in your Facebook partner configuration (step #3)
  • Check to see that you do not have any spaces or other non-URL safe characters in your MMP URL (step #4)
  • Verify that the app_id in the SKAN conversion tracking URL matches the App ID on the Singular Apps page.


What conversion models are supported with Facebook's campaign types?


Facebook Ads Manager - Campaign Type Options

You can select different options for optimization for ad delivery when creating your Facebook campaign. Since these campaigns optimize on different app signals, not all campaign types are supported with your Singular conversion model.

Below is a list of Facebook campaign types and the Singular conversion models that are supported for them

Facebook Campaign Type Supported Singular Conversion Models
App Installs (MAI) Any model type (conversion event, engagement, funnel, revenue)
App Events (AEO) Conversion event, funnel, revenue
Value (VO) 
*see additional requirements
What happens if I change my conversion model?

Facebook pulls the latest model roughly once an hour. If you change your conversion model, Singular will pause your existing model and then activate the new model. Due to SKAdNetwork limitations, the process takes up to 48 hours and includes a 24-hour gap in which no conversion values are sent or recorded. This will also cause Facebook to pause your campaigns for 24 hours automatically.

Reminder: While we encourage you to experiment with different models when you start using SKAdNetwork, we don't recommend changing models regularly afterward, due to the delay caused each time.

Can I use the Facebook SDK at the same time as the Singular SDK?

You can only have one SDK managing SKAdNetwork conversion values in the same app. However, the Facebook SDK will automatically stop managing SKAdNetwork if you follow step 4 in these instructions. Therefore, it's safe to continue using the Facebook SDK for other purposes while the Singular SDK manages SKAdNetwork conversion values.

What is the timezone of Facebook's SKAdNetwork data?

Facebook's SKAdNetwork data is pulled directly from their API, so the data relies on the configured timezone of the Facebook Account. You may find the relevant timezone in Facebook's dashboard.

What are Facebook's account and campaign limitations based on SKAdNetwork?

Facebook's statement on their support and plans for SKAdNetwork mentions the following limitations:

  • A measurement period of 24 hours.
  • One ad account per app.
  • Maximum of 9 active campaigns per app.
  • Only aggregate insights (no user-level insights). The aggregate data will be available in Singular's SKAdNetwork reporting.

In addition, note that Singular's conversion event, revenue, and funnel models are recommended for Facebook optimization of MAI and AEO campaigns. Singular's revenue model is required for Facebook optimization of VO campaigns.

How is Estimated Revenue pulled/calculated for Facebook campaigns?
Do I need to set the AdvertiserTrackingEnabled (ATE) flag?

As part of the updates related to iOS 14, Facebook announced new guidelines for using the Advertiser Tracking Enabled flag with MMPs. Your integration with Singular already implements this flag, and no action is required in your Singular SDK implementation.

Integration Details

Apple's SKAdNetwork framework allows ad networks (and advertisers) to receive some data about app installs attributed to their campaign without compromising the end-user's privacy. All the data about the app install and post-install events have to be contained in a single number from 0 to 63, called the conversion value.

Singular's SKAdNetwork solution offers several different ways to encode data into the conversion value, depending on whether the advertiser is interested in optimizing for revenue, retention, or other KPIs. Each encoding method is called a conversion model

Facebook's install, app event optimization, and value optimization campaigns in SKAdNetwork are supported through conversion models, which Facebook calls this "configuration schemas." By following the steps in this article, you'll be able to "Import" your Singular conversion model into a Facebook "configuration schema" so Facebook can optimize against SKAdNetwork. 

After successfully importing a "configuration schema," you'll be able to start SKAdnetwork-enabled campaigns with Facebook, and the resulting performance data will be available through your existing Facebook data connector.

See also: Facebook's article on considerations for iOS 14 and SKAdNetwork measurement.

Note: Facebook does not forward SKAdNetwork postbacks, and as a result, postback data is not available in Singular's Data Destinations (ETL) or User-Level Logs.

Setup Instructions

1. Implement Singular's SKAdNetwork Solution

If you haven't done so yet, add SKAdNetwork support to your Singular SDK Implementation (see iOS SDK: Adding SKAdNetwork support) or S2S integration (see SKAdNetwork S2S Implementation Guide).

Reminder: You can only have one SDK managing SKAdNetwork conversion values in the same app. The Facebook SDK will automatically stop managing SKAdNetwork if you follow step 4 in these instructions. However, you should ensure that any other SDKs in your app are not managing SKAdNetwork and interfering with your Singular conversion model implementation.

2. Configure a Conversion Model

In the Singular platform, go to SKAdNetwork > Model Configuration and select Add Conversion Model. Select a Singular conversion model for your app. Certain Facebook campaign types require specific conversion models. For more information, see What conversion models are supported with Facebook's campaign types?

Important: Facebook requires that all measurable conversions occur within 24 hours of the install, regardless of the campaign type. Make sure to set your Singular conversion model measurement period to 1 day.


3. Map Conversion Model Events to Facebook Events

If you're using a Singular conversion model for SKAdNetwork, make sure that every event defined in the conversion model is mapped to a Facebook event in Attribution > Partner Configuration.

This step is required for the Singular conversion model to appear in Facebook's conversion schema dashboard. Unmapped events will not appear or be used in Facebook's campaign optimization or reporting.



  • In Partner Configuration, don't map SDK events to "(Use SDK Event Name)." Always use a Facebook standard event.
  • This step is not required for a revenue conversion model.

4. Import Conversion Model in Facebook Event Manager

Go to the Facebook Event Manager dashboard and follow the instructions below (for additional guidance, see Facebook's Event Manager documentation).

  • Go to the Facebook Event Manager's SKAdNetwork Event Configuration.
  • Select Settings > Set Up Events.


  • Select Import from Partner App. If the "Import" option is not available to select, it may be that Facebook has not received app events for your app before. To enable this option, ensure that your Facebook partner configuration is enabled and that Facebook has received some events.


  • On the following screen, Facebook will prompt you to enter an MMP URL. Construct the following URL and enter your app's App Store ID in the app_id parameter:


    For example:

  • Once you've imported your Singular conversion model(s), you'll be able to view them on the subsequent screen.

Note: If you've imported an Events type model, Facebook asks you to choose one of the events for optimization purposes.