SKAd Network

This article describes how to register and use the SKAd network attribution available in iOS 14.5+

Updated over a week ago

Background

iOS 14 seems to be one of Apple’s most significant iOS updates so far, introducing iPhone home screen redesign, new features and updates for existing apps, Siri improvement, and many other tweaks. The change that affects the online advertising industry the most is the privacy-related matter of the IDFA (Identifier for Advertisers) opt-in for all apps that Apple is implementing in iOS14.

To alleviate the impact and allow attribution and ad-measurement Apple introduced two new frameworks: the ATT (AppTrackingTransparency) and SKAdNetwork.

  • ATT (AppTrackingTransparency) - With ATT in place the app user needs to explicitly give permission to every app to allow being tracked across 3rd parties and apps i.e allowing them to use the IDFA.

  • SKAdNetwork - With SKAdNetwork, Apple will do the attribution of app installs to clicks and impressions for iOS Apps ensuring users' privacy.


Steps to get ready as an Ad-Network

  1. Register your network with Apple to generate your SKAdnetwork ID. You can have different SKAdnetwork IDs for different Apps. You will need an Apple developer account to register your SKAdnetwork

  2. Once you receive your SKAdnetwork ID from Apple, you will need to generate a private and public key pair as per Apple's requirements and share the public key with Apple

  3. Along with the Public key, you will also be required to share a postback URL with Apple

    The postback URL from Swaarm that you can share with Apple has the following structure:

  4. In order to receive postback from Apple, you need to inform your publishers of your SKAdnetwork id which needs to be included in every publishing app's information property list (Info.plist)


How to allow for SKAdnetwork Attribution in Swaarm?

  • Add your SKAdnetwork details

Under Organization > Settings > SKAD Networks, add the following information:

Network ID: The id that was assigned to you from Apple. The Network ID looks like xxxxxx.skadnetwork

Private Key: The Private Key of the respective public key you shared with Apple while registering for SKADnetwork

Public Key: The Public Key you shared with Apple while registering for SKADnetwork


  • Configure SKAd Campaign attribution on the Offer

What are SKAd Campaigns?

SKAd Campaigns are different than the normal notation of Campaigns in digital marketing. While using SKAd campaigns, networks need to encode all the targeting, creative, and optimization information into these campaign ids.

IMPORTANT NOTE:

Apple only allows for 100 campaign IDs (1 - 100) per SKAdnetwork per advertising App. As a network, you have to encode all the targeting, creative, and optimization information into these 100 campaign ids.

SKAd Campaigns can be configured on the offer edit page as shown below:

Network ID: Your SKAd network ID. Once you have added the SKAd network information in Swaarm (as shown above), you need to choose the network id you are using for the respective App here as there can be multiple SKAd networks available

App ID: The App ID of the offer you are adding the SKAd Campaign for. An example of an App id is 281796108 for the app Evernote - Notes Organizer

Campaign ID: As mentioned above, Apple only allows for 100 campaign IDs (1 - 100) per SKAdnetwork per advertising App. As a network, you have to encode all the targeting, creative, and optimization information into these 100 campaign ids. Hence you can choose a number between 1 and 100 from the drop-down.

If no campaign id is selected, then all campaigns for that app id get attributed to the selected Offer and Publisher

Publisher: You can select the publisher you want to assign the above-selected campaign id to.

Ext. Campaign ID: The ID of the campaign as decided and provided by the advertiser or MMP

Ext. Campaign Name: The name of the campaign as decided and provided by the advertiser or MMP


  • Forwarding Postbacks received via SKAd network

Once you receive the postback from Apple, you can choose to forward this postback to the MMP or any other third party. In order to do so, a postback link needs to be added to the offer as shown below:

Network ID: Your SKAd network ID. Once you have added the SKAd network information in Swaarm (as shown above), you need to choose the network id you are using for the respective App here as there can be multiple SKAd networks available

Campaign ID: Choose the campaign id from 1 - 100 for which you would like to forward the postback

If no campaign id is selected, then the postback is sent for all the campaign ids

Type: Choose the type of postback. Currently, we support the following types:

  • Adjust

  • Appsflyer

  • Generic

  • Kochava

  • Singular

  • Branch

There is some information required to be added for each type of Postback. Please find the information per type below:

  • Adjust

    • Adjust URL: This is provided by the Advertiser

  • Appsflyer

    • Appsflyer Network Name: You can find this information in your partner account for Appsflyer

  • Generic

    • URL: This is provided by the third party or advertiser

    • Method: This is provided by the third party or advertiser

    • Payload: This is provided by the third party or advertiser

  • Kochava

    • Kochava Subdomain: You can find this information in your partner account for Kochava

  • Singular

    • There is no additional information needed

Validate Postbacks with MMP: With forwarding the postbacks for SKAd, there are two possible options:

  • Either you can validate your own postback, in this case, the field should be kept unchecked

  • You can forward the postback to MMP for validation, in this case, the field should be checked


  • Receiving Postbacks from MMPs

Some MMPs already process the SKAD postbacks forwarded by the networks and then send validated postbacks back to the network. Below you can find details on receiving the SKAD postback from MMPs.

For all MMPs that forward SKAd network validated postbacks, the SKAd Network postback is different from the standard attribution postback you have been receiving from the MMPs and hence you will need to send them a separate postback link. Further information on that can be found below.

NOTE: In order to receive the SKAD postbacks from MMP, you will need the SKAD network to be configured in Swaarm.

  • Swarm supported SKAD postback Parameters and Macros

    Parameters to receive SKAD conversions back from MMPs

    skad_network_id=<<your_skad_network_id>>

    skad_campaign_id= Example: 42,

    skad_transaction_id= Example: "6aafb7a5-0170-41b5-bbe4-fe71dedf1e28",

    skad_redownload= Example: true,

    skad_source_app_id= Example: 1234567891,

    skad_app_id= Example : 525463029,

    event_id= Example: 12345/registration

    skad_conversion_value= Example: 20,

    Macros to send SKAD conversions to MMPs

    #{skad.campaignId} Example: 56

    #{skad.transactionId} Example: 6aafb7a5-0170-41b5-bbe4-fe71dedf1555

    #{skad.appId} Example: 525463054

    #{skad.attributionSignature} Example: MDYCGQCsQ4y8d4BlYU9SFNMBPWPi+ixk/OiRysCGQDZZ8fpJnuqs9my8iSQVbJO/oU1AXUROYU=

    #{skad.reDownload} Example: True/False,

    #{skad.sourceAppId} Example: 1234567891,

    #{skad.fidelityType} Example: 1

    #{skad.conversionValue} Example: 20

  • Appsflyer

Appsflyer after processing the SKAD postback forwarded from Swaarm will fire one or more postbacks back to Swaarm after decoding the conversion value. Depending on the conversion value, there can either be only one install postback or one install and multiple event postbacks. In order to track the events correctly, it is essential to configure all the events in Swaarm.

Reach out to your Partner Development Manager at Appsflyer to integrate the SKAD postback. You can find more information on this HERE.

You can use the following postback template by replacing the domain and the network id

https://<<your_postback_tracking_domain>>/mmpskadpostback?skad_network_id=<<your_skad_network_id>>&skad_campaign_id={skad_campaign_id}&skad_redownload={redownload}&skad_transaction_id={transaction_id}&conversion_timestamp={skad_ad_network_time}&skad_app_id={app_id}&sale_amount={revenue}&event_id={event_name}&skad_source_app_id={site_id}&country={country}&sale_amount_currency={currency}&skad_nonce={af_skad_nonce}

  • Singular

Singular is also equipped to send you back a notification postback containing information about the SKAdnetwork conversion event. In order to track the events correctly, it is essential to configure all the events in Swaarm.

Reach out to your Partner Manager at Singular to integrate the SKAD postback. You can find more information on this HERE.

You can use the following postback template by replacing the domain

Postback url: https://<<your_postback_tracking_domain>>/mmpskadpostback

{
"version": "{SKAN_POSTBACK.VERSION}",
"ad-network-id": "{SKAN_POSTBACK.AD_NETWORK_ID}",
"campaign-id": {SKAN_POSTBACK.CAMPAIGN_ID},
"transaction-id": "{SKAN_POSTBACK.TRANSACTION_ID}",
"app-id": {SKAN_POSTBACK.APP_ID},
"attribution-signature": "{SKAN_POSTBACK.ATTRIBUTION_SIGNATURE}",
"redownload": {SKAN_POSTBACK.REDOWNLOAD},
"source-app-id": {SKAN_POSTBACK.SOURCE_APP_ID},
"conversion-value": {SKAN_POSTBACK.CONVERSION_VALUE},
"eventTypeId": "{CONVERSION.ADVERTISER_CONVERSION_NAME}"
"saleAmount": "{CONVERSION.ADVERTISER_ CONVERSION_VALUE}"
"saleAmountCurrency": "{CONVERSION.ADVERTISER_ CONVERSION_CURRENCY}"
"isValid": "{SKADNETWORK_IS_VALID}"
}

  • Branch

Branch is now equipped to send you back a notification postback containing information about the SKAdnetwork conversion event. Depending on the conversion value, there can either be only one install postback or one install and multiple event postbacks. In order to track the events correctly, it is essential to configure all the events in Swaarm.

You can find more information on this HERE.

You can use the following postback template by replacing the domain

https://<<your_postback_tracking_domain>>/mmpskadpostback?skad_network_id=<<your_skad_network_id>>&skad_campaign_id={campaign-id}&skad_redownload={redownload}&skad_transaction_id={transaction-id}&skad_app_id={app-id}&event_id={event name}&skad_source_app_id={source-app-id}

The following postback URL can be used to send SKAD conversions to Branch,

https://api2.branch.io/v1/skadnetwork

As payload body, this information can be added,

{

"version": "2.0",

"ad-network-id": "w28pnjg2k4.skadnetwork",

"campaign-id": #{skad.campaignId},

"transaction-id": "#{skad.transactionId}",

"app-id": #{skad.appId},

"attribution-signature": "#{skad.attributionSignature}",

"redownload": #{skad.reDownload},

"source-app-id": #{skad.sourceAppId},

"fidelity-type": #{skad.fidelityType},

"conversion-value": #{skad.conversionValue}

}

Watch this space for more updates :) !!!

Did this answer your question?