Appsflyer SSOT Reporting (for AAP-enabled clients)
When a client’s app has Aggregated Advanced Privacy (AAP) enabled in Appsflyer, we lose access to user-level data for users who didn’t consent — especially from SAN platforms like Meta, TikTok, and Snapchat. This means imported install and event counts will appear lower than what’s shown in Appsflyer.
This doc outlines how we standardize reporting using aggregate reports + SKAN data to better align with what clients see in their Appsflyer dashboards.
✅ Set up these 2 Worfklows
These two reports work together to give a full picture of iOS installs and events when AAP is enabled.
1. Appsflyer Aggregated Data Report
Why we need it: Captures all non-SKAN installs and events, regardless of user opt-in/out
Action: Set up a workflow using the Appsflyer Aggregated Data Report template and export it to an Alli datasource
Optional reports:
If Facebook creative-level reporting is needed, set
Use Facebook Reportingtotrue.To pull retargeting and re-attributions, set
Include Retargeting Conversionstotrue.⚠️ These options pull different data than the default report and require separate datasources to be set up in Alli.
2. AppsFlyer SKAdNetwork Report
Why we need it: Captures SKAdNetwork (SKAN) performance, including modeled data hidden in the Appsflyer UI
Action: Set up an Appsflyer SkAdNetwork Marketplace App and export it to an Alli datasource
📊 Datasources & Logic
To align Single Source of Truth (SSOT) for total installs and events, you will want to sum the installs and events from both datasources.
Here is an example how to structure it:
🔹 Alli Aggregate Datasource:
SELECT
SUM(installs) AS total_installs,
SUM(af_purchase) AS total_purchases
FROM <<<insert Alli Aggregate Datasource here>>>
🔹 Alli SKAdNetwork Datasource:
SELECT
SUM(installs) AS skan_installs,
SUM(af_purchases) AS skan_purchases,
FROM <<<insert Alli SKAdNetwork Datasource here>>>
WHERE attribution_flag = FALSE
✅ Final SSOT Calculation:
SELECT
(agg.total_installs + skad.skan_installs) AS mobile_installs,
(agg.total_purchases + skad.skan_purchases) AS mobile_purchases
(SELECT
SUM(installs) AS total_installs,
SUM(af_purchase) AS total_purchases
FROM <<<insert Alli Aggregate Datasource here>>>) agg,
(SELECT
SUM(installs) AS skan_installs,
SUM(af_purchases) AS skan_purchases
FROM <<<insert Alli SKAdNetwork Datasource here>>>
WHERE attribution_flag = FALSE) skad
🔍 Notes & Best Practices
Confirm whether AAP is enabled for the client’s app in Appsflyer (check App Settings or ask MMP contact).
Expect slight delays in SKAN data availability (~24–72 hours).
This logic is scoped to iOS only. Android installs are not impacted by AAP and can be pulled via standard raw or aggregate reporting.
🧪 QA Suggestions
Cross-reference with Appsflyer UI totals for key date ranges (campaign or MMP dashboard).
If discrepancies occur, check:
Attribution window config
SKAN mapping accuracy
Event deduplication logic
🎯 Why This Matters
Completeness: This approach accounts for users hidden due to AAP, which can lead to underreporting when relying on raw datasets alone.
Cross-client applicability: Any iOS app using Appsflyer with AAP enabled for SANs (Meta, TikTok, Snap) benefits from this method.
Alignment: Helps align internal SSOT reporting with what clients see in the Appsflyer UI (especially if they’re viewing high-level install dashboards).