Single Source of Truth (SSOT) guide for iOS attribution

At a glance: In the context of the iOS 14+ environment, AppsFlyer brings together data from multiple attribution match methods like IDFA, IDFV, SKAN, Apple Search Ads, and so on, and gives a complete picture of app campaign performance. No attribution method provides the full app performance picture. The challenge is to count a given user once because that same user can be attributed by two methods. The AppsFlyer Single Source of Truth (SSOT) mechanism does just that. SSOT reports and metrics are true and accurate and count the same user only once.

About Single Source of Truth—True iOS performance data

Starting iOS 14, AppsFlyer attributes iOS users using data from multiple data streams, including SKAdNetwork, ATT consenting users, probabilistic modeling, incrementality-based insights, and dedicated APIs for Apple Search Ads. The absence of IDFA makes it nearly impossible to tie the attribution methods together without including duplicate data.

The SSOT mechanism eliminates duplicate install data and corrects the attribution of misattributed users. In other words, users attributed as organic who should have been attributed to a non-organic media source. As a result, the number of installs attributed to a campaign is corrected and the associated cost- and revenue-related metrics, like eCPI, ROI, and ROAS, are also calculated correctly. Note: To get in-app event and revenue-related metrics, you need these metrics configured in SKAN Conversion Studio.

Simply put, the SSOT mechanism flags SKAN installs which are also attributed using another match type. The flag is considered in calculating aggregated metrics to avoid counting the same user twice. Similarly, you use the flag when processing SKAN raw data.

To include the SSOT flag in your data, you must turn on SSOT in the Conversion Studio. 

Turn on Single Source of Truth

SSOTControl.png

To turn on SSOT:

  1. Before you begin, consider the AppsFlyer Single Source of Truth billing policy. 
  2. In AppsFlyer, go to Settings > SKAN Conversion Studio.
  3. Select Custom mode.
  4. Turn on Single Source of Truth.
  5. Complete the settings as needed.

See SKAN Conversion Studio

Overview dashboard Single Source of Truth view

SSOTisNowOn.png

The Single Source of Truth view available via the Overview dashboard provides a complete picture of non-organic performance metrics. In the view:

  • Install metrics are true. 
  • Cost- and revenue-related metrics, that depend on the install metric, including eCPI, ARPU, and ROAS, are calculated correctly.
  • Organic metrics adjusted after accounting for misattributed installs.

This section highlights the differences and unique features of the SSOT view. It assumes that you are familiar with the Overview dashboard.

Turn on Single Source of Truth view

Data in the SSOT view is available 3-5 days after you enable Single Source of Truth in the Conversion Studio. 

To enable Single Source of Truth view:

  1. Before you begin, verify that in the Conversion Studio Single Source of Truth is turned on. 
  2. In AppsFlyer, go to Dashboard > Overview. 

    SelectSavedReport.png

  3. Click ▼. 
  4. Select Lite overview.
    The Single Source of Truth switch displays.

    SSOTviewon.png

  5. Turn on Single Source of Truth. 
  6. One of the following occurs:
    • Dashboard metrics and charts display.
      The sections that follow describe the data available. See the sections that follow about the data that displays.
      Save the SSOT view as a new report. To do so:
      1. Click ▼.
      2. Click + Save new report.
      3. Enter a report name.
      4. Click Save
    • Data doesn't display. Consider that it can take 3-5 days after turning SSOT on until the data displays. Wait for this period to elapse and visit the dashboard again. 

Turn off the SSOT switch at any time to see regular data with the dimensions not available in SSOT view.  Doing so enables you to take a deep dive.

SSOT view considerations

In the SSOT view: 

  • Null conversion values (CV): Modeled. Advanced machine learning is used to model a null value as attributed by either AppsFlyer or SKAN using the af_attribution flag. If attributed to SKAN, all post-install SKAN measurements are included in the SSOT dashboard. Learn more
  • Redownloads: Included in the installs metric. There is no segregation of installs vs. redownloads.
  • Timezone: AppsFlyer-reported installs and events display in UTC or in the app-specific local timezone as set on the app settings page. For SKAN-reported data, installs and events display using UTC, with the exception of Meta and Google SKAN data, for which the timezone is based on the timezone configured in your Meta and Google accounts, respectively.

  • Currency: Displays in USD or in the app-specific local currency as set on the app settings page.

Filter considerations

Consider the impact of the filters on data display and metrics as described in the tables that follow. 

Filter Consideration
Single Source of Truth To view Single Source of Truth metrics, verify that the control is on. 
View type
  • User Acquisition: The preferred view for SSOT data. 
  • Retargeting: SKAN doesn't support retargeting. 
  • Unified: Install campaigns contain SSOT data. Retargeting campaigns aren't affected by SSOT. 
Dates
  • [Best practice] Select a date range of 7+ days that doesn't include the most recent 3 days to obtain accurate results.
  • The earliest date available is usually 3 days after you turned SSOT on. AppsFlyer determines this date. 
  • Example optimum date selection: 
    • If the current date is February 10 and you turned SSOT on  January 29. You can select February 1-7.
  • Some data (such as revenue) may only be available 8 days after turning on SSOT.
  • Google SKAN installs can be reported with a delay of up to 45 days.
Campaign filters

Campaign hierarchy filters available: 

  • Media source
  • Campaign
Headline KPIs

The headline KPIs available in the SSOT dashboard let you see:

  • User acquisition: Both non-organic and organic
  • SKAN duplicates
  • Retargeting: Re-engagements and re-attributions
  • Cost
  • eCPI

For each KPI, there is a percentage value. This value shows how the presented KPI is in relation to the parallel date range before it. For example, this week compared to last week, or any days selected in the date range compared to the same number of days that came before: For example, if it shows an X% increase in installs, it means the previous parallel date range had X% fewer install.

Charts

Dimensions available:

  • Attributing method:
    • AF models: Installs matched by more than one method including SKAN. In the dashboard, the SKAN record is disregarded to avoid double-counting the same install. In SKAN raw data,  af_attribution_flag of the install is set to true. 
    • SKAN uniques: Installs matched only by SKAN and by no other method. In SKAN raw data, af_attribution_flag of the install is set to false. 
  • Attribution type
  • Attributed touch type
  • Campaign
  • Campaign ID
  • Media source
  • Source
  • App ID (for some charts)
  • Geo (SKAN geos are modeled)
  • In-app event name (meaning the name of a specific in-app event as configured in SKAN Conversion Studio).

Metrics:

As described in the metrics sections.

Table

Groupings:

  • [Default] The table is grouped by Media source and campaign.
  • Grouping options include: Media source, attribution type, attribution method, campaign, campaign ID, Attributed touch type, date, source, geo, and combinations thereof. Note: SKAN geos are modeled.
  • If you select a grouping with dimensions that only apply to non-organic traffic, the table displays N/A for the organic media source.

Metrics: 

As described in the metrics sections.

Metrics

Metrics available in the SSOT dashboard:

Metric Description and considerations
Groupings
  • [Default] The table is grouped by Media source and campaign.
  • Grouping options include: Media source, attribution type, attribution method, campaign, campaign ID, Attributed touch type, date, source, and combinations thereof.
  • If you select a grouping with dimensions that only apply to non-organic traffic, the table displays N/A for the organic media source. 
SSOT attributions

Headline breakdown of SSOT installs, reattributions, and re-engagements during the selected dates.

  • Non-organic: The campaign that brings the user. The SSOT mechanism ensures that the same install is counted only once. 
  • Organic metrics.
Total

Number of installs, re-attributions, and re-engagements.

Installs

The number of unique users who install the app. Calculated as installs attributed by AppsFlyer in the context of UA campaigns plus the number of new installs and re-downloads reported by SKAN after removing duplicates.
Re-attributions Retargeting metrics are available in the Unified and Retargeting view types. Consider that SKAN doesn't support retargeting.
Re-engagements Retargeting metrics are available in the Unified and Retargeting view types. Consider that SKAN doesn't support retargeting.
Other metrics Various other metrics relating to SSOT and advertising performance
SKAN duplicates The number of SKAN installs with af_attribution_flag=true
Clicks Clicks and impressions data reported by ad networks via API. The SSOT mechanism doesn't affect touchpoint metrics.
Impressions Clicks and impressions data reported by ad networks via API. The SSOT mechanism doesn't affect touchpoint metrics.
Conversion rate Click-to-install
Cost ($) Campaign cost data reported by ad networks via API. Data displays for campaigns with at least one install. The SSOT mechanism doesn't affect the total cost reported. It affects only metrics calculated using install numbers. 
AVG eCPI ($) Effective cost per install metric is calculated using SSOT view install metrics. It excludes organic installs.
CPM Cost per mille (1000 impressions). Formula: (Cost / Impressions) * 1000
CPC Cost per click. Formula: Cost / Clicks
Click-throughs

Number of attributions occurring after a user clicks on an ad (CTA)

CTR

Click-through rate. Formula: Clicks / Impressions

Uninstall rate

Rate (%) of users uninstalling the app, as a proportion of the users attributing. Meaning installing, re-engaging, or re-attributing. Formula: Uninstalls / Attributions *100 (Relevant for User Acquisition only)

Uninstalls

Number of app users installing the app who subsequently uninstall (delete) the app (Relevant for User Acquisition only)

View-throughs

Number of attributions occurring after a user views an ad (VTA)

Revenue (D2)

SKAN and Classic revenue (including ad revenue) for the first SKAN measurement window (D2):

  • SKAN revenue: Revenue for SKAN installs (where af_attribution_flag=false/null). Based on conversion value settings for revenue in Conversion Studio, and the measurement window time frame.
  • Classic revenue: Revenue generated by app users after an install attributed by Classic attribution method and within the SKAN measurement window.
  • For those using SKAN 4 in Conversion Studio, this is data for 2 days post-install. For those using SKAN 3 in Conversion Studio, data is based on the defined SKAN activity window, whether that's more or less than 2 days.
  • Example:
    • Activity window is 24h.
    • Revenue events occur on the day after the install (Day X+1), but within the 24h activity window.
      • For both SKAN and AF-reported revenue, revenue is counted, as it occurred within the 24h window (even though it was on a different day than the install).

Note:

  • If SKAN revenue is configured only for certain events, the SSOT revenue metric only considers the corresponding AF-reported revenue events.

Tip: To improve SKAN revenue accuracy:

Revenue D7
  • Includes modeled data, beyond the SKAN measurement window, up to 7 days post-install. Learn more
  • Excludes data from organic installs.
  • Requires revenue D2 data for modeling.
ARPU D2

Average Revenue per User.

Formula: Revenue/Unique Users

For those using SKAN 4 in Conversion Studio, this is data for 2 days post-install. For those using SKAN 3 in Conversion Studio, data is based on the defined SKAN activity window, whether that's more or less than 2 days.

ARPU D7

Includes modeled data, beyond the SKAN measurement window, up to 7 days post-install. Learn more

ROAS D2
Return On Ad Spend (%).
Formula: Revenue/Cost * 100
For those using SKAN 4 in Conversion Studio, this is data for 2 days post-install. For those using SKAN 3 in Conversion Studio, data is based on the defined SKAN activity window, whether that's more or less than 2 days.
ROAS D7
Includes modeled data, beyond the SKAN measurement window, up to 7 days post-install. Learn more
ROI D2

Return On Investment (%).

Formula: (Revenue - Cost)/Cost * 100

For those using SKAN 4 in Conversion Studio, this is data for 2 days post-install. For those using SKAN 3 in Conversion Studio, data is based on the defined SKAN activity window, whether that's more or less than 2 days.

ROI D7

Includes modeled data, beyond the SKAN measurement window, up to 7 days post-install. Learn more

Gross profit D2

Profit after deducting campaign cost.

Formula: Revenue - Cost

For those using SKAN 4 in Conversion Studio, this is data for 2 days post-install. For those using SKAN 3 in Conversion Studio, data is based on the defined SKAN activity window, whether that's more or less than 2 days.

Gross profit D7

Includes modeled data, beyond the SKAN measurement window, up to 7 days post-install. Learn more

In-app event metrics

Metrics relating to specific in-app events (IAEs)

Event unique users (D2)

Unique users performing the event, measured by a combination of AppsFlyer and SKAN, including modeled data of null values. For those using SKAN 4, this data is accumulated for the first 2 days post install. For those using SKAN 3, the data is an accumulation of days post-install based on the defined Activity Window.

Event unique users (D7)

Unique users performing the event, modeled based on a combination of AppsFlyer and SKAN. Includes modeled data, beyond the SKAN measurement window, up to 7 days post-install. Learn more

Note: Unique users in (D7) also includes unique users in D2.

Event eCPA (D2)

Effective cost per action: Cost / unique users performing the event

Event eCPA (D7)

Effective cost per action: Cost / unique users performing the event. Includes modeled data, beyond the SKAN measurement window, up to 7 days post-install. Learn more

Event conversion (D2)

Rate (%) of unique users performing the event, as a proportion of the users attributing (meaning installing, re-engaging, or re-attributing). Formula: Unique users / attributions * 100

Event conversion (D7)

Rate (%) of unique users performing the event, as a proportion of the users attributing (meaning installing, re-engaging, or re-attributing). Formula: Unique users / attributions * 100. Includes modeled data, beyond the SKAN measurement window, up to 7 days post-install. Learn more

Event revenue (D2)

Revenue generated with this event, within the defined days post-install

Event revenue (D7)

Revenue generated with this event, within the defined days post-install. Includes modeled data, beyond the SKAN measurement window, up to 7 days post-install. Learn more

How does SSOT work

Understanding SKAN-AF modeled attribution duplication

SKAN attribution and AF modeled attribution work differently and have different traits and limitations. Therefore, each install can be attributed to a non-organic media source either:

  • Via SKAN or an AF model exclusively (unique attribution).
  • Via both SKAN and an AF model simultaneously (duplicates). In this case, the SSOT mechanism signals a SKAN duplicate install with the flag: af_attribution_flag=TRUE. And in the SSOT dashboard, only one install displays instead of two.
  • Neither SKAN nor AF model, meaning the install is organic.

The possible SKAN-AF model attribution scenarios are illustrated in the following Venn diagram.

skan_af_model_diagram.png

The following table describes the reasons for each attribution scenario.

SKAN only AF model only

Both SKAN and AF model

Neither SKAN nor AF model 
  • Media source is an SRN, user device has iOS 14.5+, user doesn’t provide dual ATT consent.
  • Media source is a non-SRN, user device has iOS 14.5+,  probabilistic modeling not available, user doesn’t provide dual ATT consent.
  • User device has iOS 14.4 and below.
  • Media source doesn't support SKAN.
  • Install came via a web-to-app flow (SKAN only supports app-to-app). 
  • Install is via retargeting (not supported by SKAN)

No limitations exist and both SKAN and an AF model attribute the install.

This creates duplicate installs, and is when SSOT is needed to remove the duplicate.

User is organic

SSOT mechanism workings

SSOT works as detailed in the visual that follows.

SingleSourceOfTruth.png

How does the SSOT mechanism work?

The SSOT mechanism exists in the AppsFlyer SDK in your app on the user device and in the AppsFlyer platform as follows:

User device:

  • A user opens the app for the first time. The AppsFlyer platform endeavors to attribute the user. The ability to attribute depends on the campaign type and user consent (ATT) status.
  • If attribution succeeds, the SDK sets the attribution bit in the Conversion Value (CV)
  • The regular SKAdNetwork flow continues unchanged. Meaning that user activity continues to be measured and the CV set until the measurement window terminates.
  • Subsequently, iOS sends the postback.

AppsFlyer platform

  • AppsFlyer receives the iOS postback, decodes the conversion value, and exposes the value of the attribution bit via the af_attribution_flag as detailed in the table that follows.

Considerations

  • In general, AppsFlyer doesn't count reinstalls. In the context of SSOT, the reinstall status isn't considered. This means SSOT doesn't remove duplicate SKAN installs coming from reinstalls in the context of SSOT analytics and they don't affect the setting of the af_attribution flag. 

Attribution flag field

SSOT indicator in the Conversion Value  Meaning af_attribution_flag field
On SSOT is on in the Conversion Studio and AppsFlyer succeeded in attributing the user. True
Off SSOT is on in the Conversion Studio and AppsFlyer didn't attribute the user. False
--

SSOT is off in the Conversion Studio.

Null

How does the af_attribution_flag (attribution bit) impact reporting tools? 

  • SKAN dashboard: Reflects only performance reported by SKAN postbacks. As such, the af_attribution flag isn't considered and duplicates aren't removed. 
  • SKAN aggregated performance reports and raw data reports: The af_attribution_flag is available in these reports. Use it according to your reporting requirements. If you combine SKAN data with AppsFlyer data, use the flag to remove duplicate data. This applies to both raw and aggregated data reports. 
  • SSOT view in the Overview dashboard: Data from all attribution methods, SKAN, IDFA, IDFV, Apple Search Ads, and so on are merged in a single view after removing duplicate SKAN data. 

Metrics derived by combining data from multiple attribution methods

When you combine SKAN data with the data of other attribution methods, use the af_attribution_flag to remove duplicate data from the data. This applies to both raw and aggregated data reports. 

The following example metrics can be calculated using the af_attribution_flag:

  • Non-organic installs
  • Organic installs
  • eCPI
  • Cohorted revenue

Formula to calculate example metrics:

Metric description Designation Formula
Non-organic AppsFlyer installs A Non-organic installs reported by AppsFlyer
SKAN unique installs B SKAN installs where af_attribution_flag=false
All non-organic installs C A + B
Organic installs D

Total installs - C

Note: Total installs mean all installs recorded by the AppsFlyer SDK, regardless of attribution.

Campaign eCPI  E Cost / C
Cohorted revenue F

Add together the following:

  • Revenue of users defined by A. Include events generated during the initial post-install period equivalent to your SKAN measurement window. 
  • SKAN revenue where af_attribution_flag = false
Organic revenue D2 G

Total D2 revenue - D2 revenue from A and B installs

Organic IAE unique users D2 H

Total D2 IAE unique users - D2 event unique users from A and B installs

Traits and limitations

Trait Remarks
SSOT view

SSOT is only available if there is at least one SKAN postback for each of the past 5 days that includes af_attribution_flag=true.

Total installs

In some cases, there may be more installs displayed when SSOT is turned on versus when it's off. One of the reasons for this is that null conversion value modeling can impact the install date calculation, and cause differences when comparing installs on similar dates. Additionally, total installs can be inflated if null CVs aren't modeled, since in that case, every SKAN install is counted as unique (with the flag af_attribution_flag=false).

Revenue

Revenue and other revenue-related metrics (ARPU, ROAS, ROI, gross profit) are supported as of September 1, 2022.

Agencies

Agency users can view the SSOT view in the Overview dashboard.

Ad networks
  • Ad networks can access the SSOT view in the Overview dashboard to see data attributed to their media source. To see the SSOT view, the:
    • Advertiser must have SSOT turned on in Conversion Studio.
    • Ad network must be running SKAN campaigns.
    • Ad network must have the required permissions from the advertiser to access aggregate data.
  • Ad networks can receive SSOT signals via SKAN postbacks by adding the skad_af_attribution_flag field macro. Learn more
D7 metrics

D7 metrics may be missing or less than D2 metrics if:

  • The date range contains dates for which 8 days haven't passed.
  • Modeled data isn't available. For example, if there aren't 14 days of revenue data. Learn more
  • SKAN Conversion Studio configuration has been changed in the past 14 days.
  • There are fewer than 10 installs for a given date.
  • There's a lot of organic traffic, which isn't included in in-app event D7 modeled data. 
SKAN Conversion Studio configuration changes

When you change your SKAN Conversion Studio configuration, there may be inaccuracies in SSOT data for approximately 96 hours. This is because AppsFlyer immediately begins to decode SKAN postbacks with the new schema, but postbacks still arrive from installs that were encoded with the previous schema.

AF-reported data
  • AF-reported data, sometimes referred to as AF model data, refers to data from installs or other events attributed via another AppsFlyer attribution method, as opposed to SKAN.
  • The SSOT dashboard's purpose is to prevent duplication of installs and events attributed via both SKAN and another AppsFlyer method.
  • If you turn on SSOT, but want to view data from before SSOT was turned on, the SSOT dashboard only displays AF-reported data.
In-app events

In-app events (as dimensions) and their metrics are available only for:

  • Events configured in SKAN Conversion Studio are available.
  • Events that occurred during the Window 1 period are available.