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
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
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
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:
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 :) !!!