SKAdNetwork Solution guide (iOS 14)

At a glanceBest practices and implementation guide to using SKAdNetwork on the AppsFlyer attribution platform.

5754SKAdNetworkFlow_us-en.jpg

iOS 14 updates

September 16, 2020, Apple announces the availability of iOS 14 

iOS14Implication.png

  • Starting with the release of iOS 14 until early 2021, the Grace Period, access to IDFA remains unchanged and you don't have to implement ATT.
  • As of September 16, 2020, AppsFlyer SDK versions are tested and interoperable with iOS 14 as follows:
    • SDK V6.0.X
      • Attribution continues to operate unchanged compared to iOS 13. 
      • During the Grace Period:
        • Implement the AppsFlyer SKAdNetwork Solution.
        • Ensure that your ad network partners have SKAdNetwork integration with AppsFlyer.
        • Use AppsFlyer SKAdNetwork simulation to get a better understanding of how ATT will impact your attribution.
        • There is no need to display the ATT prompt. 
        • Note! We may need to make changes to the SDK to support iOS updates at the end of the Grace Period. 
    • iOS SDK V5.4:
      • Attribution continues to operate unchanged compared to iOS 13. 
      • During the Grace Period consider adopting SDK V6.0.X as described above.

SKAdNetwork

SKAdNetwork infrastructure, part of iOS by Apple, helps advertisers measure campaign success while maintaining user privacy. The SKAdNetwork infrastructure operates without IDFA or other advertising ID. Consequently, there is no need for user consent to implement the solution. 

Related reading

Definitions

  • SDKAppsFlyer iOS SDK V6.X integrated into an app.
  • SKAdNetwork Infrastructure or Infrastructure: Refers to the attribution functions embedded in iOS 14, as defined by Apple. 
  • SKAdNetwork Solution or Solution: SDK, Infrastructure, and AppsFlyer platform working together. The Solution provides advertisers and ad networks with LTV data via dashboard analytics, reports, and postbacks. 
  • Measurement window has a duration of 24 hours starting with the first app open.
  • Conversion value is the measure of user quality calculated by the SDK as described in this article.

This article describes the relevant characteristics of the Infrastructure, the Solution, and the available configurations.

Apple SKAdNetwork Infrastructure basics

Characteristic Description
Prerequisites

To enable the use of SKAdNetwork in the app:

Supported
  • Devices having:
    • iOS 11-13 support SKAdNetwork V1 (installs only)
    • iOS 14 or later support SKAdNetwork V2 (with conversion value)
  • LAT devices
  • App-to-app attribution
Not supported
  • Mobile web
  • Adset and ad granularity
  • Campaign numbering is restricted to the range 1-100; means 100 unique values. To overcome this limitation, ad networks provide AppsFlyer with their campaign ID and name. This is reflected in AppsFlyer dashboards and reports. 
  • Organic installs
Provides
  • Last-click attribution for direct referrer mode: User clicks an ad → app store → install
  • Aggregated attribution with campaign-level granularity
  • Postbacks:
    • Sent to the attributed ad network by the OS layer of the iOS device
    • 24-72 hours after install
    • No postback for organic installs

SKAdNetwork Solution

Solution principles and flow

To overcome the functional and structural limitations of the SKAdNetwork infrastructure, the Solution takes into consideration the characteristics in the table that follows.

Characteristic Description
Data collection
  • For the advertiser, SKAdNetwork postbacks are collected from multiple ad networks.
  • Advertisers don't need to integrate individually with each ad network—a complex and tedious task.
Data validation
  • Ensures postbacks are signed by Apple; this reduces the chances of postback manipulation.
  • Uses the transaction ID field to validate that postbacks are unique.
Data enrichment
  • Enriches SKAdNetwork postback data with other data points to provide complete ROI analysis.
  • Data points include impressions, clicks, cost, organic traffic, and more.
Data delivery

Enriched SKAdNetwork data is available in the following: 

Seamless integration
  • Full encapsulation enables a near-zero effort by the advertiser via the app settings page.
  • No coding required. The app requires AppsFlyer iOS SDK Version 6.0 or later. 
  • Includes support for expected changes by Apple in the SKAdNetwork infrastructure.
Agility 

Advertisers can change measurement configurations as needed in the dashboard.


SKAdNetwork attribution flowSKAdNetwork__2_.png

  1. Advertiser sets SKAdNetwork measurement settings in the Platform. 
  2. After the user opens the app for the first time, Platform instructs SDK how to calculate the conversion value using the current configuration set by Advertiser.
  3. During the Measurement Window SDK updates the conversion value for each measurable user action.
  4. 24-48 hours after the most recent conversion value update, iOS sends the postback to ad network.
  5. Ad network forwards the postback to AppsFlyer.
  6. AppsFlyer validates and decodes the conversion value. Decoded data is:
    • Recorded and attributed before being made available in AppsFlyer via dashboards, reports, and APIs.
    • Sent via a postback to the Ad network to enable campaign optimization.

Performance measurement

Conversion value

  • Calculated according to the user-quality measurement setting existing at the time the user opens the app for the first time
  • Updated by the SDK after each measurable user action
  • A numerical value from 0-63
  • User actions occurring after the expiry of the measurement window are not recorded. 
  • Sent once per install, by iOS 24-48 hours, after the most recent conversion value update
  • Sent in the postback

The Solution supports the following user-quality measurement types:

  • [Default] Revenue: Total revenue generated by the user.
  • Conversion: Record the unique in-app events (1-6) the user performs.
  • Engagement: The number of times (0-63) the user performs a specific in-app event.

The sections that follow, contain descriptions of the metrics available and measurement examples. Use these to understand the capabilities and limitations of SKAdNetwork attribution and identify the measurement that will provide you with the greatest indication of user quality. Advertisers select the measurement type as needed via the dashboard. 

Metric

Formula/type 
Installs Count
Clicks Count
Impressions Count

Click-to-install rate

Installs / Clicks *100 
Cost Campaign cost 
Effective cost per install (eCPI) Cost / Installs *100
Converted users

Count of unique users performing a designated measurement event:

  • Revenue event (always af_skad_revenue)
  • Conversion event
  • Engagement event
Converted users rate

Converted users / Installs * 100

Effective cost per action (eCPA)

Cost / Unique users performing a designated event

Metrics always available (irrespective of measurement type)


User-quality measurement types

  • [Currently available] Single-mode: One measurement type
  • [Coming soon] Split-mode: Two measurement types simultaneously
User-quality measurement type settings
Measurement type Description
[Default] Revenue

Revenue generated during the Measurement Window

Settings:

  • Value range:
    • Single-mode: 0-63
    • Split-mode: 0-31
  • Conversion value translation:
    • Conversion value units are translated to USD using one of the following conversion factors: $0.01, $1.00, $10.00
    • Revenue amounts in the dashboard and raw-data are converted to the app-specific currency using the current exchange rate. 

Metrics:

    • Revenue
    • ROI
    • ROAS
    • ARPU: Revenue/users installing the app
    • Rate of users converting: Users making a purchase/users installing the app
    • eCPA

Consideration:

In the app, foreign currency amounts are translated to USD which are converted to conversion units. Fractions of a conversion value unit are rounded up to complete units. For Example, EUR 10, after translation using the current exchange rate is USD 11.25. If the conversion value unit rate selected is $1=1 unit, this is 11.25 units which is rounded up to 12 conversion value units. 

Conversion

In-app event performed at one or more times during the Measurement Window

Settings:

  • Number of events supported:
    • Single-mode: 1-6
    • Split-mode: 1-5
  • Select in-app events to measure from the drop-down list.
  • Designate one in-app event as the conversion event.

Metrics per in-app event:

    • Count of users performing an event
    • Conversion rate: Users performing the conversion event/users installing the app
    • eCPA

Example of user counts:

  • Completed registration
  • Made a purchase
  • Reached a game level

Clarification! Use conversion measurement to count if a user performed an event. To count how many times a user performs an event use engagement measurement.

Engagement Number of times the user performed a specified in-app event during the Measurement Window

Settings: 

  • Select an in-app event from the drop-down list.
  • The in-app selection is also designated as the conversion event.
  • Value range:
    • Single-mode: 0-63
    • Split-mode: 0-31

Metrics for the in-app event:

    • Count of users performing the event
    • Average number of events per user
    • Conversion rate
    • eCPA

Example: Measure the number of times a user opened the app.

Measurement type examples

Example A: Revenue measurement
Factor Remarks
Scenario
  • 20 users install the app and perform the following purchases:
    • 10 users each make a purchase of $10
    • 5 users each make a purchase of $5
  • Cost data provided by API from the ad network: $30
SKAdNetwork Attribution Configuration
  • Select measurement type: revenue
  • Set conversion factor: 1 conversion unit = $1
  • Designated conversion event: af_purchase (always)
Selected metrics  Revenue related metrics available
  • Installs: 20
  • Revenue: $125
  • Conversions:15
  • ARPU: $6.25
  • ROI: 316%
Developer considerations

Events carrying revenue are recognised

Example B: Conversion measurement
Factor Remarks
Example
  • Five users (A-E) install the app
  • They perform 0-3 different in-app events as depicted in the table
  • Cost data provided by API from the ad network: $30
  in-app-1 in-app-2 in-app-3
User A Performed Performed -
User B Performed - Performed
User C Performed Performed -
User D Performed Performed -
User E - - -
In-app events performed by users
SKAdNetwork Attribution Configuration

Select measurement type: Conversion

  • Select in-app events: in-app-1, in-app-2, in-app-3
  • Designated conversion event: in-app 1
Selected metrics
Metric  App  in-app-1 in-app -2 in-app- 3
Installs 5      
Conversions 4      
Unique users   4 3 1
eCPA $ 7.5      
In-app related metrics available
Developer considerations
  • Ensure that you send in-app events users perform.
  • SKAdNetwork Solution disregards event values (except in relation to revenue measurement.
Example C: Engagement measurement
Factor Remarks
Example

Five users install the app and open the app the number of times listed in the table. 

  Number of times the event is performed
User A 63
User B 10
User C 5
User D 1
User E -
App opens
SKAdNetwork Attribution Configuration
  • Select measurement type: Engagement
  • Designated conversion event: af_app_opened Note! You can use any event available. 
Selected metrics

Sample metrics available

  • Installs: 5
  • Conversions: 4
  • Sessions: 79 
Developer considerations

On each occasion the user performs the selected engagement event: send the in-app event. SKAdNetwork counts the number of times you send the event. 

Procedures

Configuring SKAdNetwork attribution

To configure SKAdNetwork attribution:

  1. In AppsFlyer, go to Configuration > SKAdNetwork Settings.
    The SKAdNetwork settings page opens.

    skad-settings_en-us.png

  2.  Select a measurement type from one of the following:
    • Revenue: Select a unit-to-USD rate to translate revenue units to USD. There are up to 63 revenue units. The maximum measurable revenue is the unit-to-USD rate X 63.  Options available: $0.01, $1.00, $10.00
      For example, $10 X 63 = $630, $1 X 63 = $63, $0.01 X 63 = $0.63.
    • Conversion:
      1. Select up to 6 in-app events performed by users.
      2. From the in-app events selected, select one as the conversion event.
    • EngagementSelect an in-app event whose occurrences are counted.
  3. If necessary, enable SKAdNetwork measurements.
  4. Click Save changes.
    Measurement is active. Users opening the app for the first time are measured using these settings. SKAdNetwork attribution data updates in the dashboard 48-72 hours after the first app open. 

Disable SKAdNetwork measurement

To disable SKAdNetwork measurement:

  1. In AppsFlyer, go to Configuration > SKAdNetwork Settings.
  2. Disable SKAdNetwork measurements. 
    Amongst other things, the SDK stops setting the conversion value. 
  3. Click Save changes.

Addtional information

Reporting options

Features coming soon

Conversion value settings
Setting Description

 Split-mode 

[Coming soon] Enable split-mode to support two measurement types simultaneously

  • Users who install the app are split randomly between any two of the measurement types.
  • Attribution results are scaled automatically and are available in the dashboard and raw data reports.

Example:

  • Users are split between Revenue and Conversion modes.
  • On Day "X":
    • 100 users install the app
    • 50 users send revenue measurements
    • 50 send conversion measurements 
  • Conversion data is recorded:
    • $50 generated by 25 unique users
    • 10 users finished game level 5
  • Data is scaled and shown in the metrics. Media source attribution is similarly attributed as follows:
    • $100 generated by 50 unique users
    • 20 users finished game level 5
Measurement Window

A time window having a duration of 24 hours starting with the first app open. The SDK updates the conversion value 

  • The setting is communicated to the SDK.
  • Best practice is a 24-hour window; taking into consideration the trade-off between recording more events and the speed in getting conversion data.

SKAdNetwork Solution implementation checklist

Action Description Responsibility
 Prepare Marketer, Developer
Configure 

In AppsFlyer, configure the SKAdNetwork solution

Marketer
Prepare the app

Migrate the app to AppsFlyer V6 SDK

  • No change to app logic nor to app code is required.
  • The Solution relies on in-app events to set the conversion value. Send the in-app events in the usual manner. No Solution specific testing is required. 
  • See developer considerations for specific measurement scenarios.
  • Submit the app to the App Store
  • No SKAdNetwork registration or process is required in the app store.
Developer
Confirm partner integrations
  • Ad network partners must integrate with us using our updated SKAdNetwork integration.
  • Verify with each of your partners that they are suitably integrated.
  • SKAdNetwork simulation contains the data of all your partners irrespective of their current integration status. This won't be the case for the live data reported by SKAdNetwork postbacks.
Marketer
SKAdNetwork implementation list

Traits and limitations

SKAdNetwork Solution
Trait Remarks 
Ad network access Ad networks are provided with postbacks
Agency access Not available
Agency transparency N/A
Timezone UTC
Currency  USD
Organic data Based on SDK event data. For example, organic install metrics are calculated as follows: Data of all installs reported by the SDK less non-organic installs reported by SKAdNetworks.
Non-organic data Based on SKAdNetwork postbacks
Data freshness

Daily. SKAdNetwork timing means that iOS reports installs 48–72 hours after the first app open.

Historical data

Earliest date, availability of iOS 14 (September 16, 2020)

Team member access Available. According to account permissions

 

Was this article helpful?