# SKAdNetwork

Digital Turbine supports Apple's [SKAdNetwork](https://developer.apple.com/documentation/storekit/skadnetwork) version 2.0 and later, which allows programmatic buyers to effectively measure and track app installs and conversions on iOS. This framework allows buyers to gather insights while maintaining user privacy by leveraging aggregated attribution data.

## Configuring SKAdNetwork IDs

To configure SKAdNetwork on DT Exchange:

1. Register for ad network SKAdNetwork support with Apple. For more information, see [Registering an ad network](https://developer.apple.com/documentation/storekit/registering-an-ad-network).
2. Provide your Legal Entity Name and your Apple SKAdNetwork ID to your Account Manager. To locate your Apple SKAdNetwork ID, see Apple's developer documentation to [Configure a Source App](https://developer.apple.com/documentation/storekit/configuring-a-source-app).
3. Remove IFA filters from your integration.
4. Update your integration to:
   * Support SKAdNetwork Bid Request and Bid Response extension objects. For more information, see IAB's documentation about [SKAdNetwork extensions](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/874c838934f93b03c30da5a738d5bf2e99879a23/extensions/community_extensions/skadnetwork.md#skadnetwork-extension).
   * Receive Contextual Data Signals, as described in [Contextual App Targeting](https://docs.digitalturbine.com/dt-exchange/advertisers/dt-exchange-openrtb-2.5-specs/contextual-app-targeting).
5. Send a bid response when the SKAdNetwork applies, as described in [Bid Response](https://docs.digitalturbine.com/dt-exchange/advertisers/dt-exchange-openrtb-2.5-specs/..#bid.ext.skadn-skadnetwork).

{% hint style="info" %}
To retrieve DT's recommended SKAdNetwork IDs, see [Getting the SKAdNetwork IDs](https://docs.digitalturbine.com/dt-exchange/publishers/sdk-configuration/integrating-the-ios-sdk#id-01hry2ffm7789xepyy78tr8pn0).
{% endhint %}

### Receiving Postbacks

Apple sends postbacks to your designated endpoints, which you can share with your attribution provider for a unified view of app installs and conversions.

## Bid Request

If a publisher includes at least one SKAdNetwork Item in the publisher app's `Info.plist`, pass all of the following parameters in the bid request. DT includes a new object in the bid request that provides the necessary information to create a signature.

### BidRequest.imp.ext.skadn

<table><thead><tr><th>Attribute</th><th width="488.875">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>version</code></td><td>Version of SKAdNetwork supported. Always <code>2.0</code> or later. Dependent on both the OS version and the SDK version. With the release of SKAdNetwork 2.1, this field is deprecated in favor of the <code>BidRequest.imp.ext.skadn.versions</code> to support an array of version numbers.</td><td>String</td></tr><tr><td><code>versions</code></td><td>Array of strings containing the supported SKAdNetwork versions. Dependent on both the OS version and the SDK version. For example, [<code>2.0</code>, <code>2.1</code>, <code>2.2</code>, <code>3.0</code>, <code>4.0</code>].</td><td>String</td></tr><tr><td><code>sourceapp</code></td><td>ID of publisher app in Apple's App Store. Should match <code>BidRequest.app.bundle</code>. For example, <code>880047117</code>.</td><td>String</td></tr><tr><td><code>skadnetids</code></td><td>A subset of <code>SKAdNetworkIdentifier</code> entries in the publisher app's <code>info.plist</code>, expressed as lowercase strings, that are relevant to the bid request, for example, [<code>"SKAdNetwork1.skadnetwork"</code>, <code>"SKAdNetwork2.skadnetwork"</code>].</td><td>String Array</td></tr></tbody></table>

## Bid Response

If the bid request includes the `BidRequest.imp.ext.skadn` object, you must pass all the following parameters in the bid response. If present, DT submits the click data and signature to the `productView` for iOS SKAdnetwork attribution.

### BidResponse.seatbid.bid.ext.skadn

<table><thead><tr><th width="160.0390625">Attribute</th><th width="479.20703125">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>version</code></td><td>Version of SKAdNetwork desired. Must be <code>2.0</code> or above.</td><td>String</td></tr><tr><td><code>network</code></td><td>Ad network identifier used in signature. This should match one of the items in the <code>skadnetids</code> array in the request, for example, <code>dsp1.skadnetwork</code>.</td><td>String</td></tr><tr><td><code>campaign</code></td><td>Campaign ID compatible with Apple's spec. This should be an integer between 1 and 100, expressed as a string. With the release of SKAdNetwork 4.0, this field is deprecated in favor of <code>sourceidentifier</code>.</td><td>String</td></tr><tr><td><code>sourceidentifier</code></td><td>A four-digit integer that ad networks define to represent the ad campaign. For 4.0+, <code>sourceidentifier</code>. This should be an integer between 1 and 9999, expressed as a string.</td><td>String</td></tr><tr><td><code>itunesitem</code></td><td>ID of advertiser's app in Apple's app store. This should match <code>BidResponse.seatbid.bid.bundle</code>.</td><td>String</td></tr><tr><td><code>nonce</code></td><td>A unique ID for each ad response. Refer to Apple's documentation for the <a href="https://developer.apple.com/documentation/storekit/skstoreproductparameteradnetworknonce">proper UUID format</a>. With the release of SKAdNetwork 2.2, this field is deprecated in favor of <code>BidResponse.seatbid.bid.ext.skadn.fidelities.nonce</code>, for example, <code>beeeb65e-b3de-02420004</code>.</td><td>String</td></tr><tr><td><code>sourceapp</code></td><td>ID of publisher's app in Apple's app store. This should match <code>BidRequest.imp.ext.skad.sourceapp</code>.</td><td>String</td></tr><tr><td><code>timestamp</code></td><td>Unix time (in milliseconds) string used at the time of signature. With the release of SKAdNetwork 2.2, this field is deprecated in favor of <code>BidResponse.seatbid.bid.ext.skadn.fidelities.timestamp</code> to support multiple fidelity types, for example, <code>1594406341</code>.</td><td>String</td></tr><tr><td><code>signature</code></td><td>SKAdNetwork signature, as specified by Apple. With the release of SKAdNetwork 2.2, this field is deprecated in favor of the <code>BidResponse.seatbid.bid.ext.skadn.fidelities.signature</code> to support multiple fidelity types, for example, <code>MEQCIEQZRRyMyUXg==</code>.</td><td>String</td></tr></tbody></table>

{% hint style="info" %}
Other contextual and device identifiers are critical to maintaining granular targeting post-IDFA; for more information, see [Contextual App Targeting](https://docs.digitalturbine.com/dt-exchange/advertisers/dt-exchange-openrtb-2.5-specs/contextual-app-targeting).
{% endhint %}

## Testing SKAdNetwork with DSP Test App

To test your SKAdNetwork setup on the DT Test App, see [SKAdNetwork Testing via DSP Test App](https://docs.digitalturbine.com/dt-exchange/advertisers/dsp-test-app/skadnetwork-testing-on-the-demand-test-app).

## FAQs

<details>

<summary>Will Digital Turbine pass the new BidRequest.imp.ext.skadn object when your network_ID is not listed on the publisher's <code>p.list</code>?</summary>

Yes. In this case, `skadnetids` passes as null.

</details>

<details>

<summary>What happens if the StoreKit fails to load?</summary>

The iOS DT Exchange SDK supports fallback to the Apple Store if StoreKit fails to load. This only occurs in sporadic edge cases.

</details>
