December 16, 2020

In early 2021 Facebook will begin to show Apple’s App Tracking Transparency (ATT) prompt. Once Facebook and Instagram show Apple’s ATT prompt, those businesses that optimize, target, and/or report on mobile web events from any of our business tools will be impacted given Apple required limits on data sharing.

The main change is that campaigns will have a new field called is_skadnetwork_attribution. If set to true, we consider this campaign to be targeted at iOS 14 users. In this document, we refer to those as SKAdNetwork campaigns. See Breaking Changes, Limitations, Upcoming New Feature for more information.

In response to Apple’s new policy, we are also announcing breaking changes to all campaigns — not only the ones targeting iOS 14 users — and updates to our Ad Insights metrics to all campaigns. These changes have not gone into effect and cannot be implemented at this time, however, we want to give you as much notice as possible.

Breaking Changes For SKAdNetwork Campaigns

Affected endpoint(s) Changes

POST /{ad-id}

Deferred Deep Links are not supported in ads created under this type of campaign.

POST /{ad-account-id}/adsets

You cannot use Mobile App Custom Audiences (MACA) in Inclusion Targeting.

You cannot use App Connections (App connections, friends of app connections, exclude app connections) in the targeting spec.

GET /{ad-account-id}/insights
GET /{campaign-id}/insights
GET /{ad-set-id}/insights
GET /{ad-id}/insights
POST /{ad-account-id}/insights
POST /{campaign-id}/insights
POST /{ad-set-id}/insights
POST /{ad-id}/insights

When changes go into effect, We won’t be able to aggregate conversion metric values across iOS14 and non-iOS14 campaigns.

Breaking Changes For All Campaigns

Affected endpoint(s) Changes for All Campaigns

POST /adaccount

You will no longer be able to create new ad accounts with attribution_spec. Additionally, you cannot edit an ad account’s attribution settings.

POST /{ad-id}
POST /{ad-account-id}/ads

These endpoints will get a new field called conversion_domain, which will be used to store web domains. To create or update an ad in a campaign that shares data with a pixel, you will be required to specify conversion_domain.

This field will be auto-populated for existing ads by inferring from destination URLs.


Mobile App Install Ads (nonSKAdNetwork) will have the following restrictions that will be validated.

Validation changes for Ad Set (API errors on failure):

  • Block Creation of an Ad Set with App Install, App Events, or Value Optimization targeting iOS 14+ devices
  • If an Ad Set is created using the default targeting string and the optimization goal is App Install, App Events or Value, we will automatically filter out iOS14+ devices.


For cost bidding campaigns, duration must be set to at least 3 days.

GET /{ad-account-id}/insights
GET /{campaign-id}/insights
GET /{ad-set-id}/insights
GET /{ad-id}/insights
POST /{ad-account-id}/insights
POST /{campaign-id}/insights
POST /{ad-set-id}/insights
POST /{ad-id}/insights

When changes go into effect, we will no longer support offsite web conversion metrics over the following attribution windows: 7d_view, 28d_view, and 28d_click. These windows will still remain available to access historical data — data prior to when the changes go into effect.

Limitations for SKAdNetwork Campaigns, Ad Sets, and Ads

Under one Facebook App ID, advertisers targeting iOS 14 users can have one ad account, 9 campaigns, and 5 ad sets. See below for more limitations.

SKAdNetwork Campaigns have the following restrictions:

  • You cannot create a SKAdNetwork campaign to promote an app if that same app is already being promoted in another ad account.
  • To create a SKAdNetwork campaign and promote an external app, you must follow these requirements:
    • The app being promoted must be an iTunes app — The object_store_url in promoted_object must point to an iTunes app.
    • The Ad Account used to create the campaign must have permission to advertise the app being promoted.
    • The app being promoted must have at least v8.0 of the Facebook Business SDK. If you use a Mobile Measurement Partner SDK, make sure your SDK is also updated.
  • Once an SKAdNetwork Campaign is live, you cannot edit the promoted object or the SKAdNetwork flag.
  • Your buying_type must always be auction.

Ad sets created inside a SKAdNetwork Campaign have the following restrictions:

  • Each SKAdNetwork Campaign can have up to 5 ad sets.
  • You must specify at least iOS 14 under user_os. If you provide an invalid value, you won’t be able to create the ad set.
  • If the ad set is created using the default targeting string, we will filter the target devices based on if the ad set is eligible for iOS 14+ devices.

Ads created inside a SKAdNetwork Campaign have the following restriction:

  • iOS 14 App Ads can only be created on ad sets under SKAdNetwork campaigns.

Upcoming New Features

/ios_fourteen_campaign_limits — This endpoint will provide iOS14 campaign limit information. This includes the number of available slots that can be used for new campaigns and ad sets.

Ad Insights Updates

The following new features apply to all campaigns, not only to SKAdNetwork Campaigns.

New mixed option for action_report_time

This option can be used in GET requests to /adcampaigngroup, /adcampaign, /adgroup, and /adaccount. If you set action_report_time as mixed, actions that occur on your ad (such as impressions and link clicks) are reported under impression time, and actions that occur off your ad (such as a purchase on your website) are reported under conversion time. If no option is specified under action_report_time, the default behavior will reflect the mixed option.

For actions that occur off your ad and off-Facebook (such as a purchase on your website), we will continue to support impression time reporting for historical data. However, only conversion time will be supported going forward. For inline actions that occur off your ad but on-Facebook, impression time reporting will continue to be available for historical and future campaigns, though conversion time will be the default.

New use_unified_attribution_setting field

This field can be used in GET and POST requests to /adcampaigngroup/insights, /adcampaign/insights, /adgroup/insights, and /adaccount/insights. If you set use_unified_attribution_setting to true, your query's conversion metric attribution and campaign optimization will use the attribution_setting of the ad object(s) being queried — a single period of time during which conversions are credited to ads and used to inform campaign optimization.

If use_unified_attribution_setting is set to true, we:

  • Ignore the use_account_attribution_setting field, and
  • Cannot aggregate conversion metric values across different attribution settings.

New attribution_setting field

This field can be used in GET and POST requests to /adcampaigngroup/insights, /adcampaign/insights, /adgroup/insights, and /adaccount/insights. This field is used to indicate which attribution setting is used by a conversion metric. The attribution setting is set at the ad set level during ads creation, and ensures the conversions our system optimizes for are the same ones you want to measure.

For queries of ad objects that are using mixed or SKAdNetwork-dependent settings, attribution_setting will return the following:

  • mixed: indicates when a campaign or account has ad sets using multiple attribution settings
  • skan: indicates when SKAdNetwork attribution setting is used for iOS 14 app install campaigns
  • na: indicates when a campaign or account doesn’t have an ad set within

atribution_setting will return values only when use_unified_attribution_setting is true, else response will not return attribution_setting.