iOS 14 SKAdNetwork Support for DSPs

With Apple’s announcement on June 24, DSPs will need to start utilizing Apple’s privacy conscious SKAdNetwork framework for install and conversion tracking on iOS14 devices. Smaato is adding support for SKAdNetwork attribution into its SDK and API, along with necessary bid request/response signals. Smaato supports SKAdNetwork versions 2.0, 2.1, and 2.2.

What should DSPs do to enable SKAdNetwork attribution with Smaato?

  • DSPs should register as an Ad Network to Apple’s SKAdNetwork API. Click here to register.
  • Supply your public key to Apple and set your postback urls.
  • Provide your SKAdNetwork ID to your Smaato Account Manager.
  • Smaato will get your SKAdNetwork ID(s) added to publishers’ info.plist.
  • DSPs should be able to ingest the list of SKAdNetwork ID(s), version, and source bundle ID information in BidRequest.imp.ext.skadn object of the bid request.
  • If the DSP is responding with a SKAdNetwork enabled campaign, it should respond with SKAdNetwork ID and all relevant fields in the bid response.
  • Advertiser app should be registering its new users to SkAdNetwork via registerAppForAdNetworkAttribution()
  • DSPs should have an install tracking service to handle install data and signature
    from the SKAdNetwork postback.

SKAdNetwork Attribution Workflow

Smaato SKAdNetwork Attribution Workflow

Bid Request

Object: BidRequest.imp.ext.skadn

This object will be populated if all conditions below are met:

  • The DSP has at least one SKAdNetwork ID registered in the publisher’s info.plist
  • The user’s device is operating on iOS14 or above.
  • The Application is integrated with Smaato via a SKAdNetwork supported version.
  • The DSP is on Smaato’s OpenRTB 2.4 and above spec.
Attribute Description Type Example
version Version of skadnetwork supported. Always “2.0”. Dependent on both the OS version and the SDK version. Used for SKAdNetwork version 2.0. string “version”:”2.0”
versions Versions of skadnetwork supported. Always “2.0” or higher. Dependent on both the OS version and the SDK version. Used for SKAdNetwork version 2.1+. string “versions”:[”2.0”, “2.1”, “2.2”]
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 “skadnetids”:
[“dticjx1a9i.skadnetwork”,
“8srfag4vvc.skadnetwork”]

Example – v2.0

{
  “imp”: [
    {
      “ext”: {
        “skadn”: {
          “version”: “2.0”,
          “sourceapp”: “880047117”,
          “skadnetids”: [
            “dticjx1a9i.skadnetwork”,
            “8srfag4vvc.skadnetwork”
          ]
        }
      }
    }
  ]
}

Example – v2.1

{
  “imp”: [
    {
      “ext”: {
        “skadn”: {
          “versions”: [“2.0”, "2.1"],
          “sourceapp”: “880047117”,
          “skadnetids”: [
            “dticjx1a9i.skadnetwork”,
            “8srfag4vvc.skadnetwork”
          ]
        }
      }
    }
  ]
}

Example – v2.2

{
  “imp”: [
    {
      “ext”: {
        “skadn”: {
          “versions”: [“2.0”, "2.1", "2.2"],
          “sourceapp”: “880047117”,
          “skadnetids”: [
            “dticjx1a9i.skadnetwork”,
            “8srfag4vvc.skadnetwork”
          ]
        }
      }
    }
  ]
}

Changes in Bid Request Device Object

If the user does not give permission through the AppTrackingTransparency framework for targeting, IDFA field will not be passed. Smaato will offer IDFV and an exchange based device identifier. These two identifiers can be used for fraud prevention and frequency capping, not for targeted advertising or advertising measurement purposes.

Attribute Description Type Example
BidRequest.device.ifa IDFA will only be passed if the user gives the permission through the AppTrackingTransparency framework. string “ifa”:”F52329FE-DAB6-11EA-87D0-0242AC130003”
BidRequest.device.ext.ifv An alphanumeric string that uniquely identifies a device to the publisher. string “ifv”:”A9F6BDD8-3343-4E6D-A283-F98986880335”
BidRequest.device.ext.atts (iOS 14+ only) An integer passed to represent the app’s app tracking authorization status, where
0 = not determined
1 = restricted
2 = denied
3 = authorized
integer “atts”:3
BidRequest.user.id Exchange defined user identifier which will be consistent up to 24 hours within the same application. string “id”:”F4EE2B2D-1B0E-4BA9-8471-28E9ED8FB95C”

Bid Response

Object: BidResponse.seatbid.bid.ext.skadn

For bid requests with SKAdnetwork extension object, the DSP can return a bid response which includes the following fields to enable SKAdNetwork install and conversion attribution. Smaato will validate SKAdNetwork ID, bundle ID fields in the response, and call loadProduct() with appropriate values.

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”:”dticjx1a9i.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”:” 642831690”
fidelities Supports multiple fidelity types introduced in SKAdNetwork v2.2 object array “fidelities”: [ { “fidelity”: 0, “signature”: “MEQCIEQlmZRNfYzK…”, “nonce”: “473b1a16…”, “timestamp”: “1594406341” } ]
nonce An id unique to each ad response.
Note: With the release of SKAdNetwork v2.2, this field is deprecated in favor of the BidResponse.seatbid.bid.ext.skadn.fidelities.nonce to support multiple fidelity-types.
string “nonce”:”473b1a16-b4ef-43ad-9591-fcf3aefa82a7”
sourceapp ID of publisher’s app in Apple’s app store. Should match `BidRequest.imp.ext.skadn.sourceapp` string “sourceapp”:” 1207472156”
timestamp Unix time in millis string used at the time of signature.
Note: With the release of SKAdNetwork 2.2, this field is deprecated in favor of the BidResponse.seatbid.bid.ext.skadn.fidelities.timestamp to support multiple fidelity-types.
string “timestamp”: “1594406341”
signature SKAdNetwork signature as specified by Apple.
Note: With the release of SKAdNetwork 2.2, this field is deprecated in favor of the BidResponse.seatbid.bid.ext.skadn.fidelities.signature to support multiple fidelity-types.
string “signature”: “MEQCIEQlmZRNfYzK…”

Object: BidResponse.seatbid.bid.ext.skadn.fidelities

Fields that should have different values for the different fidelity types (e.g. fidelity, nonce, signature) are wrapped into an array of objects.

Attribute Description Type Example
fidelity The fidelity-type of the attribution to track. integer “fidelity”: 0
nonce An id unique to each ad response. string “nonce”:”473b1a16-b4ef-43ad-9591-fcf3aefa82a7”
timestamp Unix time in millis string used at the time of signature. string “timestamp”: “1594406341”
signature SKAdNetwork signature as specified by Apple. string “signature”: “MEQCIEQlmZRNfYzK…”

Example – v2.0

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

Example – v2.1

{
  “seatbid”: [
    {
      “bid”: [
        {
          “ext”: {
            “skadn”: {
              “version”: “2.1”,
              “network”: “dticjx1a9i.skadnetwork”,
              “campaign”: “45”,
              “itunesitem”: “880047117”,
              “nonce”: “473b1a16-b4ef-43ad-9591-fcf3aefa82a7”,
              “sourceapp”: “123456789”,
              “timestamp”: “1594406341”,
              “signature”: “MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==”
            }
          }
        }
      ]
    }
  ]
}

Example – v2.2

{
  "seatbid": [
    {
      "bid": [
        {
          "ext": {
            "skadn": {
              "version": "2.2",
              "network": "cdkw7geqsh.skadnetwork",
              "campaign": "45",
              "itunesitem": "123456789",
              "sourceapp": "880047117",
              "fidelities": [
                {
                  "fidelity": 0,
                  "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
                  "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
                  "timestamp": "1594406341"
                },
                {
                  "fidelity": 1,
                  "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
                  "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
                  "timestamp": "1594406342"
                }
              ]
            }
          }
        }
      ]
    }
  ]
}

Last Modified: September 16, 2021 at 2:10 pm


© 2005-2020 Smaato, Inc. All Rights Reserved. Smaato® is a registered trademark of Smaato, Inc.

Privacy Policy | Cookie Policy | Support