Apple's SKAdNetwork API aims to measure the success of app install ad campaigns while maintaining user privacy. For SKAdNetwork v2.0 and v2.1, install attribution for StoreKit-rendered ads is driven by clicks on the ad that would lead to the user installing the app. SKAdNetwork v2.2 and later versions additionally supports view-through ads where attribution is driven by just viewing the ad.
The following guidelines are provided to ensure that the Google Mobile Ads SDK can initiate SKAdNetwork attribution correctly.
On-click attribution for mobile ads
By default, SKAdNetwork attribution is initiated by the Google Mobile Ads SDK ad click event only if the click action specifically lands in the Apple App Store. The reason for this requirement is to prevent the app store from being launched by clicks that are not meant to open the app store. These types of click actions could include, for example, navigating to an Ad Choices page.
Guidelines
To guarantee that click actions on ads and subsequent app installs would result in a SKAdNetwork attribution, when building the creatives, make sure that the creative's click-through URL is either
- a direct link to the advertised app in the app store, or,
- uses redirect methods, such as HTTP 301, 302, or other types of server-side HTTP redirect chains that would have a final destination of the app store.
Links to the app store either directly or through a redirect chain are confirmed if the URL begins with any of the following patterns:
https://apps.apple.com
https://itunes.apple.com
itms-apps://
itms://
Any other landing pages or using any other client-side redirect methods are determined to not land in the app store and might not initiate the SKAdNetwork attribution process. Examples:
- HTML page that requires user action to redirect to the app store
- HTML page that has an automated JavaScript-based redirect script to the app store
- Meta refresh tags
Best practices for different creative types
The click action to initiate SKAdNetwork attribution can be set up for the different creative types as follows:
- HTML creatives
- This can be set up as the destination URL on the anchor tags surrounding the
clickable element, or as the target URL of
window.location
operations from JavaScript-based on-click events. - MRAID
- The click action needs to call
Mraid.open()
to initiate the SKAdNetwork attribution. - VAST video
- The app store URL or the starting element of the redirect chain can be set as
the
ClickThrough
element in the VAST XML. - Native
- The app store URL or the starting element of the redirect chain can be set on
the
native_ad.click_link_url
field for the Google RTB proto or thenative.link
field for OpenRTB proto.
Optionally always initiate SKAdNetwork attribution
The always_open_appstore
option on the bid response can be enabled to always
launch the app store and initiate SKAdNetwork attribution for all ad clicks
regardless of destination URL. This means, for example, clicking on Ad Choices
icons also launches the app store and initiates the SKAdNetwork attribution
instead of showing the Ad Choices information.
The option can be specified as part of the BidResponse.ad.skadn.skadn_options
object field in the Google Authorized Buyers protocol bid response:
ad {
skadn {
version: "2.0"
...
skadn_options {
always_open_appstore: true
}
}
}
or, as part of the BidResponse.seat_bid.bid.ext.skadn.skadn_opts
object
field in the OpenRTB protocol bid response:
"seatbid": [{
"bid": [{
"ext": {
"skadn": {
"version": "2.0"
...
"skadn_opts": {
"always_open_appstore": true
}
}
}
}]
}]
View-through attribution for mobile ads
When SKAdNetwork v2.2 view-through attribution is supported, the SKAdNetwork API starts an impression timer once the ad is rendered and is viewed by the user. Attribution is only allowed for ads that have been displayed for a minimum of 3 seconds.
Note that iOS versions 15.3 and older only supports 1 active impression timer at a time, in which case it could be possible for an impression to fail view-through attribution initiation if there are multiple view-through attribution ads within the same screen. This restriction has been lifted on iOS version 15.4 and above, so SKAdNetwork now allows for multiple concurrent impressions enabled for view-through attribution.
Guidelines
The bid request fields BidRequest.mobile.skadn.supported_fidelity_types
for
the Google RTB protocol and BidRequest.imp.ext.skadn.fidelities
for the
OpenRTB protocol specify which attribution fidelity types are supported by
the bid request. These fields include the VIEW_THROUGH_ADS
fidelity type in
SKAdNetwork versions v2.2 and above.
Ensure the bid response doesn't include VIEW_THROUGH_ADS
fidelities if
view-through attribution is not supported. Responding with VIEW_THROUGH_ADS
fidelities when not supported causes the bid to be filtered before the auction.
Backwards compatibility
As of SKAdNetwork v4.0, ad requests enabled for SKAdNetwork attribution are backwards compatible. This allows ad networks to respond with older SKAdNetwork versions even when the ad request supports newer versions.
Guidelines
The user's device OS version and the publisher app's Google Mobile Ads SDK
version both dictate which SKAdNetwork features are supported by the ad request.
This can be determined on the bid request using the
BidRequest.mobile.skadn.versions
field for the Google RTB protocol, or the
BidRequest.imp.ext.skadn.versions
field for the OpenRTB protocol. This field
lists all SKAdNetwork versions supported by the ad request.
To prevent bid filtering, ensure that the SKAdNetwork version used to build the response is one of the listed versions on the bid request. In addition, when newer SKAdNetwork versions are introduced, note that responding with older versions are allowed as long as the version is in this list. This allows ad networks to continue responding with older versions and adapt newer versions at their own pace.