SKAdNetwork raw-data reports

At a glance: SKAdNetwork raw data reports contain row-level data generated after translating and decoding postbacks received by AppsFlyer from iOS, as well as raw SKAdNetwork postbacks. Data is available via Data Locker and Push API. If your subscription plan includes raw data, there is no need for a Data Locker subscription. 

Related reading: SKAdNetwork reports available

SKAdNetwork raw-data reports

Principles: 

  • Data is provided by:
    • Data Locker.
      • Note! Available to accounts having a raw data subscription. Meaning, there is no need for a Data Locker subscription. If you aren't currently using Data Locker, the admin must configure Data Locker and enable the SKAdNetwork reports. To do so, go to Integration > Data Locker. Select the SKAdNetwork reports. 
      • Data freshness rate: Daily. Data is contained in the h=23 folder of the date the postback is received by AppsFlyer. Example: If the postback was received on Monday, it is processed after the end of the day. Processing is completed, by 12:00 UTC Tuesday, the data is written to the Monday h=23 folder. 
    • Push API
  • Install date:
    • The install date is derived from the postback arrival time.
    • By default, the install time is 48 hours before postback arrival. As such, reports contain installs of multiple days.
    • If you use custom conversion value, the formula to derive the install time is:
      postback arrival time-24 hours-hours_from_install

Report types available are: 

  • Device postback: 1 device postback per install or redownload received from the iOS device.
  • SKAd raw data:
    • AppsFlyer decodes and translates the device postback into raw data records.
    • Each postback generates an install or redownload record and in-app event records.
    • The number of in-app event records depends on the conversion value (CV) as follows:
      • CV = 0, blank, or null: No in-app records are generated. 
      • CV range 1-63: The number of in-app records depends on your measurement settings. 

Why are some fields empty? This occurs for any of the following reasons:

  • Non-mandatory enrichment fields like campaign_name, ad_network_campaign_id, ip that the ad network did not provide.
  • Apple withheld the data due to Apple threshold policies. Fields like source_app_id, skad_campaign_id, skad_conversion_value. 

Report types

Report type Event type Description
Postback Postbacks from iOS

Copy of device postbacks sent by the iOS to AppsFlyer. (The postbacks are sent via the ad network). Download postbacks example (CSV).

Topic name in Data Locker: skad_postbacks

Decoded event Installs

First-time app installs

SKAdNetwork reported redownload=false. Meaning, this is the first time the user, represented by the Apple ID, downloaded the app. Download installs example (CSV).

Topic name in Data Locker: skad_installs

Decoded event Redownloads

App installs that are not first-time installs

SKAdNetwork reported redownload=true. Meaning, this is not the first time the user, represented by the Apple ID, downloaded the app. This report has the same structure as installs.

Topic name in Data Locker: skad_redownloads

Decoded event In-app events

In-app events

Starting July 21, 2021, there are changes to how we provide in-app event raw data as detailed in the tables. 

The number of in-app event records depends on your measurement settings. 

Download in-app events example (CSV).

Measurement type Description
Revenue
  • Revenue of a given user. If revenue > 0, a record containing the skad_revenue and event_name fields.
  • The fields min_revenue and max_revenue are populated with your custom conversion range values. In most cases, you don't need to consider them. 
In-app conversion and funnel events
  • A record for each unique conversion event performed. The event_name field is populated accordingly. If no events are performed, there is no record.
  • Conversion events have min_event_counter = 0 and max_event_counter = 1. 
In-app engagement  To determine the number of times a user performed a given in-app event use the formula[round up (min_event_counter + max_event_counter) / 2]
Valid for iOS postbacks received starting July 21, 2021

 

Measurement type Number of records Description
Revenue 0-1 If revenue > 0, a record containing the skad_revenue and event_name fields.
Conversion 

0-6

A record for each unique conversion event performed. The event_name field is populated accordingly. If no events are performed, there is no record.
Engagement

0-63

The number of records represents the number of times the user performed the engagement event. If the user does not engage, there are no engagement records.
Custom 0-unlimited According to your custom conversion schema. 
Valid for iOS postbacks received until July 20, 2021. 

SKAdNetwork raw data fields

Field formats
Format name Description
String [n]

The maximum length of the string. We don't usually enforce field length limitations on receipt of the data, but data may be truncated thereafter.

Time string

String having the format, yyyy-mm-dd hh:mm:ss. For example, 2019-09-17 00:09:25 

Enum [n] Enum fields can only contain specific values. For example, Cost currency has 3 characters and can contain only currency codes as specified
Timestamp

10-digit UNIX timestamp. Example:

August 4, 2020, 07:25 UTC translates to "timestamp": "1596525944"

Boolean

The value of the field can be either TRUE or FALSE

Postback raw data fields
Field name Source or iOS SKAdNetwork starting version Description Format

ad_network_campaign_id

Ad network Campaign ID reported by the ad network to AppsFlyer String

ad_network_campaign

_name

Ad network

Campaign name reported by the ad network to AppsFlyer.

 

String

ad_network_timestamp

Ad network

Time the ad network received the postback.

In the case of Google Ads, the time is derived from the last-click time reported by Google.

Timestamp

app_id

AppsFlyer App ID (advertiser app) with prefix ID. String

city

AppsFlyer*   String

country_code

AppsFlyer*   String

dma

AppsFlyer*   String

postal_code

AppsFlyer*   String

region

AppsFlyer*   String

skad_ad_network_id

1.0 
  • ID of the ad network to whom the postback was sent.
  • Some SRNs don't share their ID, and the field is left blank. For example, Twitter. 
String

skad_attribution_signature

1.0   String
skad_campaign_id 1.0 Campaign ID used to publish the ad. Range 0-100 String
skad_conversion_value 2.0 

Conversion value reported by iOS. Range 0-63.

Field population depends on privacy thresholds**

Integer
skad_redownload 2.0 If true, app was redownloaded String
skad_source_app_id 2.0

Site ID. The app publishing the ad. This field is identical to source_app_id.

Field population depends on privacy thresholds**

String
skad_transaction_id 1.0   String
skad_version 2.0   String
timestamp Ad network

Time the iOS device sent the postback.

In the case of Google ads, this time is derived using the last-click time reported by Google Ads. 

Timestring
ad_network_name Ad network

Ad network name reported by the ad network to AppsFlyer. 

  • If this field is blank, the ad network didn't (couldn't) populate it.
  • You can resolve the ad network name using skad_ad_network_id. Use this table to do so. 
String
ip  

IP address in the HTTP message of the iOS device sending the postback.

This field is populated if the ad network provides us with the address.

Note! The SDK isn't involved in getting the address.

String

skad_app_id

1.0   String

source_app_id

AppsFlyer Site ID. The app publishing the ad. This field is identical to skad_source_app_id String

ad_network_adset_id

Ad network   String

ad_network_adset_name

Ad network   String

ad_network_ad_name

Ad network   String

ad_network_ad_id

Ad network   String

did_win (1)

3.0 (iOS 14.6)

Used to distinguish between campaigns contributing or attributed with the install. 

  • If true, the campaign is attributed for bringing the install.
  • If false, the campaign is recognized as contributing to the install
Boolean

fidelity_type (1)

2.2 (iOS 14.5)

Differentiate between ad presentation options that affect attribution. Indicated using the values 0 and1 as follows: 

  • View-though ads (0)
  • StoreKit-rendered ads (1)

Disregard the field value if the SKAdNetwork version is before 2.2

Integer

ad_network_source_app_id (1)

Ad network Publisher app ID reported by the ad network. Use to help reconcile cost; reported by the ad network. The publisher app gives the basis for this data.  String

ad_network_channel (1)

Ad network   String

af_prt (1)

Ad network   String

* Derived using the source IP address of the postback sent by iOS 

** Apple determines if the field is populated using a privacy-threshold mechanism

(1) Starting June 2, 2021, the field is added to reports but won't necessarily be populated

 

Decoded event raw data fields
Field name Source Description Format
ad_network_campaign_id Ad network Campaign ID reported by the ad network to AppsFlyer String
ad_network_campaign
_name
Ad network Campaign name reported by the ad network to AppsFlyer String
ad_network_timestamp Ad network

Time the postback was received by the ad network

In the case of Google Ads, this field isn't populated. 

Timestamp
app_id iOS App ID (advertiser app) String
city AppsFlyer*   String
country_code AppsFlyer*   String
dma AppsFlyer*   String
event_name AppsFlyer In-app event name String
event_uuid AppsFlyer A unique random identifier enabling partners to identify duplicate postbacks String
install_date iOS Estimated by AppsFlyer based on the update Conversion window. Time string
install_type iOS New installs String
ip iOS

IP address in the HTTP message of the iOS device sending the postback.

This field is populated if the ad network provides us with the address.

Note! The SDK isn't involved in getting the address. 

string
media_source iOS Ad network attributed using AppsFlyer network names String
postal_code AppsFlyer*   String
region AppsFlyer*   String
skad_ad_network_id iOS ID of the ad network to whom the postback was sent String
skad_ambiguous_event AppsFlyer If true, the iOS postback was received during the first 72-hours after an advertiser changed the SKAdNetwork settings in the dashboard. Due to the various timers employed by SKAdNetwork AppsFlyer can't map the event accurately. Boolean
skad_attribution_signature iOS   String
skad_campaign_id iOS Campaign ID used to publish the ad. Range 0-100 String
skad_conversion_value iOS

Conversion value reported by iOS. Range 0-63.

Field population depends on privacy thresholds**

Integer
skad_mode AppsFlyer The conversion measurement mode used to decode the iOS postback. Being: single, split, or custom. String
skad_redownload iOS If true, app was redownloaded. String
skad_revenue iOS Event revenue amount in USD. String
skad_source_app_id iOS

Site ID. The app publishing the ad.

Field population depends on privacy thresholds**

String
skad_transaction_id iOS - String
skad_version iOS - String
timestamp iOS

Time the postback was sent by the iOS device.

In the case of Google ads, this time is derived using the last-click time reported by Google Ads. 

Timestamp
event_value S2S

Default value: null

Contains a string set by apps implementing custom decode or event sending by S2S

Advertisers consume this in their systems. AppsFlyer doesn't make use of it. 

String (JSON)

ad_network_adset_id

Ad network   String

ad_network_adset_name

Ad network   String

ad_network_ad_name

Ad network   String

ad_network_ad_id

Ad network

 

String

skad_did_win (1)

3.0 (iOS 14.6)

Used to distinguish between campaigns contributing or attributed with the install. 

  • If true, the campaign is attributed for bringing the install.
  • If false, the campaign is recognized as contributing to the install
Boolean

skad_fidelity_type (1)

2.2 (iOS 14.5)

Differentiate between ad presentation options that affect attribution. Indicated using the values 0 and1 as follows: 

  • View-though ads (0)
  • StoreKit-rendered ads (1)

Disregard the field value if the SKAdNetwork version is before 2.2

Integer

ad_network_source_app_id (1)

Ad network Publisher app ID reported by the ad network. Use to help reconcile cost; reported by the ad network. The basis for this data is provided by the publisher app. String

ad_network_channel (1)

Ad network   String

af_prt (1)

Ad network   String

min_revenue (2)

AppsFlyer See note (4) Real number

max_revenue (2)

AppsFlyer See note (4) Real number

min_event_counter (2)

AppsFlyer Use to calculate the number of times a user performs an event. See note (3) Integer

max_event_counter (2)

AppsFlyer See note (3) Integer

min_time_post_install (2)

AppsFlyer See note (5) Integer

max_time_post_install (2)

AppsFlyer See note (5) Integer

* Derived using the source IP address of the postback sent by iOS 

** Apple determines if the field is populated using a privacy threshold mechanism

  1. Starting June 2, 2021, the field is added to reports but won't necessarily be populated.
  2. Starting July 21, 2021, the field may be populated
  3. To determine the number of times a user performs a given in-app event use the formula: [round up (min_event_counter + max_event_counter) / 2] . Note!  You must round up the nearest integer.
    Example:
    A. If min = 0 and max = 1 the average is 0.5; rounding up returns a result of 1.
    B. If min = 5 and max = 10 the average is 7.5; rounding up returns a result of 8.
  4. Revenue is always provided in the field skad_revenue>. If you use custom conversion, the bucket range associated with the event and used to calculate skad_revenue is described by min_revenue and max_revenue.
  5. In custom conversion, AppsFlyer calculates install time as the postback arrival time - average of min_time_post_install + max_time_post_install. 

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?