SKAdNetwork

MoPub’s Approach to SKAdNetwork Support

In response to the announced iOS 14 changes, MoPub has released a new version of the MoPub SDK that will support SKAdNetwork, Apple’s framework for on-device mobile install attribution.

MoPub supports SKAdNetwork attribution by allowing DSPs to submit signed clicks to the SKAdNetwork API. DSPs that register with Apple may:

  • Obtain a SKAdNetwork ID. Ensure it is all lowercase.
  • Obtain a private key that allows them to sign their key that can be verified by Apple.
  • Specify a postback endpoint to receive install attribution notifications.

If a DSP wishes to use MoPub’s SKAdNetwork solution, after registering with Apple, they should provide MoPub with their SKAdNetwork ID.

Below, you can find both a general and a technical flowchart outlining MoPub’s SKAdNetwork support.

iOS 14 SKAdNetwork Flowchart 1

iOS 14 SKAdNetwork Flowchart 2

  1. MoPub SDK retrieves the SKAdNetworkItems from the publisher app’s Info.plist.
  2. SDK makes ad request to ad server including SKAdNetworkItems.
  3. MoPub determines from Info.plist which DSPs have SKAdNetwork capabilities. Bid request to eligible DSPs includes the imp.ext.skadn object, defined below.
  4. DSP responds, including seatbid.bid.ext.skadn if the campaign requires SKAdNetwork support.
  5. Ad response to SDK includes skadn object.
  6. If the impression is shown and the user clicks, MoPub calls loadProduct() with the appropriate data, including the DSP-signed signature. If valid, Apple will consider the app for install attribution.
  7. Advertised app must register that user for SKAdNetwork attribution on app launch.
  8. (Optional). Advertised app can choose to provide an additional 6 bits of conversion value information.
  9. If SKAdNetwork determines that the DSP’s click led to the install, Apple will send a postback to the DSP’s registered endpoint with the ids of the source app, advertised/target app and campaign, and conversion value if provided by the advertised/target app.

DSP Guidelines for SKAdNetwork on MoPub

  1. DSP should register for SKAdNetwork with Apple.
  2. DSP must submit Legal Entity Name and SKAdNetwork ID to their MoPub account manager. Please note that the SKAdNetwork IDs are case sensitive and should be lowercase.
  3. MoPub will confirm when the DSP’s SKAdNetwork ID has been added to the exchange’s info.plist.
  4. When eligible for SKAdNetwork, MoPub will include the imp.ext.skadn object in the bid request.
  5. DSP should bid.ext.skadn information within the bid response.
  6. DSP will receive postbacks directly from Apple to their designated endpoint given during registration.

SKAdNetwork Testing Using the MoPub Sample App

If DSP partners receive postbacks from Apple, they can consider their solution to be working as expected. If there is a need for additional testing, you may follow the guidelines below.

  • MoPub has always provided a Sample App to be used for testing bid responses, rendering creatives, and observing SDK behavior.
  • DSPs may use MoPub’s Sample App as either the source app or the advertised app; however, it cannot be both.

Using MoPub Sample App as the Source App

  • If the DSP chooses to use MoPub’s Sample App as the source app, they can follow the end-to-end testing guidelines outlined here.
  • Ensure the DSP’s SKAdNetwork ID is included in the MoPub Sample App’s latest version of info.plist. You may ask your MoPub account team if you’re unsure.
  • DSP would need to pass the necessary information within the bid.ext.skadn object in the bid response.
  • Ensure that the advertised app (bid.ext.skadn.itunesitem in the bid response) is:
    • A live app published in the Apple App Store
    • Not already installed on the test device
    • Configured to provide app install validation information by calling registerAppForAdNetworkAttribution
  • DSP may call, render, and click on the ad. Install the advertised app.
  • MoPub, as the exchange, will pass the SKAdNetwork information from the bid response to Apple.
  • Apple will send postbacks with attribution data to the DSP in 24-48 hours.
  • Alternatively, the DSP can download a testing profile on the test device, set the sourceapp value to 0, and thus simulate a test environment in which postback information is provided within 5-10 minutes.
    • Downloading the testing debugging profile is mandatory to get postback/attribution data within 5-10 minutes.
    • Our recommendation, derived from learnings from our own internal testing, is for the DSP to send back bid.ext.skadn.sourceapp as “0”

Using MoPub Sample App as the Advertised App

  • The DSP may also use MoPub’s Sample App v5.15+ as the advertised app in a SKAdNetwork campaign, as we have added support for SKAdNetwork.registerAppForAdNetworkAttribution.
  • This requires DSPs to use another app as the source app. This may be an internal DSP test app.
  • DSP must include MoPub Sample App’s store ID within the bid.ext.skadn.itunesitem field of the bid response. MoPub Sample App’s store ID is 1446093432.
  • If choosing to use MoPub’s Sample App as the advertised app, ensure that it isn’t already installed on the test device in order to appropriately follow the click > install > attribution flow.

Bid request

If a DSP has at least one SKAdNetworkItem in the publisher app’s Info.plist, MoPub will include a new object in the bid request that provides the necessary information to create a signature. This object will only be present if both the MoPub SDK version and the OS version (14+) support SKAdNetwork. Available only on a OpenRTB 2.5 integration.

Object: BidRequest.imp.ext.skadn

Attribute Description Type Example
version Version of SKAdNetwork supported. Always "2.0" or higher. Dependent on both the OS version and the SDK version. string "version": "2.0"
sourceapp ID of publisher app in Apple’s App Store. Should match BidRequest.app.bundle string "sourceapp": "880047117"
skadnetids A subset of SKAdNetworkItem entries in the publisher app’s info.plist that are relevant to the DSP. array ["cdkw7geqsh.skadnetwork","qyjfv329m4.skadnetwork"]
ext Placeholder for exchange-specific extensions to OpenRTB. object "ext": {}

Example

Used for direct SSP to DSP connections where a DSP wants to only consume their own relevant SKAdNetwork IDs.

{
  "imp": [
    {
      "ext": {
        "skadn": {
          "version": "2.0",
          "sourceapp": "880047117",
          "skadnetids": [
            "cdkw7geqsh.skadnetwork",
            "qyjfv329m4.skadnetwork"
          ]
        }
      }
    }
  ]
}

Bid response

If the bid request includes the BidRequest.imp.ext.skadn object, then a DSP could choose to add the following object to their bid response. If the object is present in the response, MoPub will submit the click data and signature to the productView for attribution.

Object: BidResponse.seatbid.bid.ext.skadn

Attribute Description Type Example
version Version of SKAdNetwork desired. Must be 2.0 or above. string "version": "2.0"
network Ad network identifier used in signature. Should match one of the items in the skadnetids array in the request string "network": "cdkw7geqsh.skadnetwork"
campaign Campaign ID compatible with Apple’s spec. As of 2.0, should be an integer between 1 and 100, expressed as a string string "campaign": "45"
itunesitem ID of advertiser’s app in Apple’s app store. Should match BidResponse.bid.bundle string "itunesitem": "880047117"
nonce An id unique to each ad response string "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7"
sourceapp ID of publisher’s app in Apple’s app store. Should match BidRequest.imp.ext.skad.sourceapp string "sourceapp": "123456789"
timestamp Unix time in millis string used at the time of signature string "timestamp": "1603246928149"
signature SKAdNetwork signature as specified by Apple string "signature": "MEQCIEQlmZRNfYzK…"
ext Placeholder for exchange-specific extensions to OpenRTB. object "ext": {}

Example

{
  "seatbid": [
    {
      "bid": [
        {
          "ext": {
            "skadn": {
              "version": "2.0",
              "network": "cdkw7geqsh.skadnetwork",
              "campaign": "45",
              "itunesitem": "880047117",
              "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
              "sourceapp": "123456789",
              "timestamp": "1603246928149",
              "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg=="
            }
          }
        }
      ]
    }
  ]
}

FAQs

What is SKAdNetwork?

Apple’s iOS 14 release fundamentally changes how attribution is done across the mobile performance marketing landscape. An iOS user will have to provide consent in order for third-party companies to track their IDFA. SKAdNetwork is Apple’s solution to on-device attribution, which reduces the reliance on third party measurement partners. Apple had released this in a previous version, but now they have made improvements to it and significantly increased functionality.

What is the main impact of iOS14 for DSPs?

DSPs will see more traffic that doesn’t have a device ID associated with it. UA advertisers may look to switch how they do attribution, in which case the DSPs will look to support SKAdNetwork.

I’m a DSP who wants to run ads across iOS devices. Where and when should I register for SKAdNetwork?

As soon as possible. Apple officially made the decision to delay the requirement of IDFA requiring consent until the start of 2021. Please register for SKAdNetwork with Apple, and follow instructions as listed above under section DSP Guidelines for SKAdNetwork on MoPub. Please reach out to your MoPub account manager with your SKAdNetwork ID once completed.

I’m a DSP, do I have to use Apple’s SKAdNetwork for Install Attribution?

Though not mandatory, if you are a DSP interested in purchasing app installs across the iOS Operating System, it is highly recommended to support SKAdNetwork.

What are the risks of not supporting SKAdNetwork as a DSP?

If a DSP elects not to support Apple’s SKAdNetwork, then they will not receive install postbacks directly from Apple for any installs driven from advertisements targeting iOS applications.

What is the main impact to publishers?

For publishers, the main impact is that they will have to make changes to their App Store submission workflow. There will be a change to user experience because their users will get a new prompt on ‘first app open.’ Because of the impact to DSPs and Marketers, it is likely to cost them some revenue. MoPub has released an iOS 14 compliant SDK (5.14+), and publishers have started updating to that version. Publishing apps that do not have a iOS14-compatible SDK are likely to see a significant revenue loss for users that update their OS.

What is the main impact to Marketers?

Marketers will be impacted through the attribution vendors they work with. Any attribution vendor that leverages the IDFA will be impacted.

How are Google and Facebook impacted?

Google and Facebook are impacted by this in the same way other providers would be. Additionally, their ‘login’ tracking will also be impacted by this. Currently, Facebook Audience Network only buys traffic that has an IDFA present. They will need to assess over time if this is the approach they continue to go with, or whether they will buy traffic with no IDFA and serve contextual advertising.

What’s the impact on our third-party attribution partners? Should we no longer recommend that marketers work with folks like Adjust, AppsFlyer, Singular, etc for attribution?

Any attribution vendor that leverages the IDFA will be impacted. Attribution vendors will need to work with Marketers to determine their approach to attribution (whether that be using Apple’s SKAdNetwork, or some other approach).

Last updated December 03, 2020

TWITTER, MOPUB, and the Bird logo are trademarks of Twitter, Inc. or its affiliates. All third party logos and trademarks included are the property of their respective owners.

© 2020 MoPub (a division of Twitter, Inc.)