SKAdNetwork Guide: Privacy-First Attribution for iOS Apps

SKAdNetwork (SKAN) is Apple's privacy-preserving framework for measuring the effectiveness of advertising campaigns without revealing individual user data. Since Apple introduced App Tracking Transparency (ATT) in iOS...

Oğuz DELİOĞLU
Oğuz DELİOĞLU
·
21 Mac 2026
·
9 minit membaca
·
28 tontonan
SKAdNetwork Guide: Privacy-First Attribution for iOS Apps

SKAdNetwork Guide: Privacy-First Attribution for iOS Apps

SKAdNetwork (SKAN) is Apple's privacy-preserving framework for measuring the effectiveness of advertising campaigns without revealing individual user data. Since Apple introduced App Tracking Transparency (ATT) in iOS 14.5, SKAdNetwork has become the primary attribution mechanism for iOS app install campaigns.

If you advertise your iOS app through any channel — Apple Search Ads, Meta, Google, TikTok, or programmatic networks — you need to understand how SKAdNetwork works. It fundamentally changes how you measure campaign performance, optimize creative, and allocate budget.

This guide explains the mechanics of SKAdNetwork, how to configure it properly, and practical strategies for making data-driven decisions within its privacy constraints.

Why SKAdNetwork Exists

The ATT Shift

Before iOS 14.5, advertisers could track individual users across apps using the IDFA (Identifier for Advertisers). This enabled precise attribution: you could link a specific ad impression to a specific install to specific in-app events.

With ATT, users must explicitly opt in to tracking. Opt-in rates average 20-35% across the industry, which means deterministic attribution (matching ad views to installs at the user level) is no longer reliable for 65-80% of iOS users.

Apple's Answer

SKAdNetwork provides aggregate-level attribution without exposing individual user identity. The trade-offs:

AspectPre-ATT (IDFA)SKAdNetwork
Attribution accuracyUser-levelCampaign-level (aggregate)
Data granularityIndividual eventsConversion values (limited)
Real-time dataYesDelayed (24-72+ hours)
View-through attributionFullLimited
PrivacyLow (tracking-based)High (anonymous)

How SKAdNetwork Works

The Basic Flow

  1. Ad display — An ad network shows an ad for your app
  2. Install — User installs your app from the App Store
  3. Postback timer — SKAdNetwork starts a timer (minimum 24 hours)
  4. Conversion value update — Your app updates the conversion value during the timer window
  5. Postback — Apple sends an anonymous postback to the ad network with campaign-level data

The Key Concepts

Conversion Value: A 6-bit number (0-63) that your app sets to indicate what the user did after installing. You define what each value means.

Timer Window: After install, SKAdNetwork gives you a window to set/update the conversion value. Each update resets a 24-hour timer. Once the timer expires without an update, the final value is locked.

Postback: Apple sends the conversion value + campaign ID + source app to the ad network — but not the individual user ID. The postback is delayed by 24-72+ hours and may include noise (random values added by Apple for privacy).

SKAdNetwork Versions

VersionKey FeatureiOS Requirement
SKAN 2.0Basic conversion valuesiOS 14.5+
SKAN 3.0Multiple postbacks, winning postbackiOS 15+
SKAN 4.0Fine + coarse conversion values, 3 postback windows, source identifieriOS 16.1+

SKAN 4.0 is the most significant update:

  • 3 postback windows (0-2 days, 3-7 days, 8-35 days) instead of just one
  • Fine conversion values (6-bit, 0-63) for the first window + coarse values (low/medium/high) for subsequent windows
  • Source identifier (up to 4 digits) providing more campaign granularity based on crowd anonymity

Configuring SKAdNetwork

Step 1: Register SKAdNetwork IDs

In your Info.plist, register the SKAdNetwork IDs for every ad network you work with:

<key>SKAdNetworkItems</key>
<array>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cstr6suwn9.skadnetwork</string>  <!-- Example: Google -->
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v9wttpbfk9.skadnetwork</string>  <!-- Example: Meta -->
  </dict>
  <!-- Add all network IDs -->
</array>

Important: Missing a network's ID means you'll get no attribution from that network. Keep this list updated — ad networks frequently add new IDs.

Step 2: Define Your Conversion Value Schema

The conversion value (0-63) is your primary measurement tool. Design your schema to capture the most valuable post-install signals.

Common schema approaches:

Revenue-based:

Value RangeMeaning
0Installed, no action
1-10Free user, engaged
11-30Revenue $0.01-$9.99
31-50Revenue $10-$49.99
51-63Revenue $50+

Event-based:

BitEvent
Bit 0Registration completed
Bit 1Tutorial completed
Bit 2First key action
Bit 3Day 1 retention
Bit 4First purchase
Bit 5Subscription started

Hybrid (recommended):
Combine engagement milestones with revenue brackets for the most useful data.

Step 3: Implement Conversion Value Updates

In your app code, update the conversion value as users complete key events:

import StoreKit

// For SKAN 4.0
if #available(iOS 16.1, *) {
    SKAdNetwork.updatePostbackConversionValue(newValue, coarseValue: .high) { error in
        if let error = error {
            print("SKAN update error: \(error)")
        }
    }
}

Best practices:

  • Update the conversion value as early as possible (the timer is ticking)
  • Only increase the value (decreasing it resets the timer unnecessarily)
  • Use your MMP's SDK — most handle conversion value management automatically

Step 4: Configure Your MMP

Your Mobile Measurement Partner (AppsFlyer, Adjust, Branch, etc.) typically manages SKAN implementation:

  • Automatic conversion value mapping — MMP maps in-app events to conversion values
  • Postback collection — MMP aggregates postbacks from all ad networks
  • Data modeling — MMP fills data gaps using statistical modeling
  • Dashboard — View SKAN data alongside other attribution data

Practical Strategies for SKAN

Strategy 1: Optimize for Early Signals

Because the conversion value timer is limited, prioritize events that happen within the first 24-48 hours:

  • Registration/onboarding completion
  • First key action (first workout logged, first recipe saved, etc.)
  • Tutorial completion
  • First session duration threshold
  • Early purchase or subscription start

Strategy 2: Use Coarse Values for Long-Term Signals (SKAN 4.0)

SKAN 4.0's three postback windows let you capture signals over time:

  • Window 1 (0-2 days): Fine value — early engagement + first purchase
  • Window 2 (3-7 days): Coarse value (low/medium/high) — Day 7 retention or trial conversion
  • Window 3 (8-35 days): Coarse value — Subscription renewal or long-term engagement

Strategy 3: Campaign Structure for SKAN

SKAN provides limited campaign-level data, so structure your campaigns to maximize what you can learn:

  • Fewer, larger campaigns — SKAN works better with higher data volumes (crowd anonymity requirements)
  • Clear naming conventions — Campaign ID is your primary identifier
  • Test one variable per campaign — Don't mix audiences, creatives, and geographies in one campaign
  • Avoid micro-segmentation — Too many small campaigns dilute data quality

Strategy 4: Probabilistic Modeling

SKAN data alone is incomplete. Supplement it with:

  • Incrementality testing — Geo holdouts to measure true campaign impact
  • Media Mix Modeling (MMM) — Statistical models that estimate channel contribution from aggregate data
  • Bayesian estimation — Fill data gaps using prior knowledge and available signals

Strategy 5: Apple Search Ads Attribution

Apple Search Ads has a privileged position — it provides more attribution data than third-party networks:

  • Keyword-level attribution (which search term drove the install)
  • Campaign and ad group level data
  • Integration with your Apple Search Ads account for full reporting
  • Not affected by ATT opt-in rates (Apple's own attribution)

Use Apple Search Ads data as your "ground truth" benchmark for calibrating SKAN data from other channels.

Challenges and Limitations

Data Delays

SKAN postbacks are delayed by 24-72 hours minimum. In practice, it can take 3-5 days to get complete data for a given day. This makes real-time optimization impossible — you're always optimizing based on lagging data.

Mitigation: Set optimization cycles to weekly instead of daily. Use leading indicators (click-through rates, install rates from ad platforms) for faster signals.

Noise and Null Values

Apple adds random noise to postback data for privacy. Low-volume campaigns may receive null conversion values, meaning you get no post-install signal at all.

Mitigation: Consolidate campaigns to maintain minimum volume thresholds. Apple's crowd anonymity requirements mean you need sufficient installs per campaign to receive meaningful data.

Limited Granularity

With only 64 possible conversion values and coarse values (low/medium/high), you can't capture the full richness of user behavior.

Mitigation: Focus on the signals that most directly correlate with long-term value. You don't need to track everything — just the metrics that drive decisions.

Cross-Network Attribution

SKAN attributes each install to one network (the last touch). If a user saw ads on multiple networks before installing, only the winning network gets credit.

Mitigation: Use incrementality testing to understand each network's true contribution beyond last-touch attribution.

SKAN Checklist

Technical Setup

  • All ad network SKAdNetwork IDs registered in Info.plist
  • Conversion value schema designed and documented
  • MMP SDK integrated with SKAN support enabled
  • Conversion value updates implemented for key events
  • Postback verification tested with each ad network

Campaign Operations

  • Campaign structure optimized for SKAN data quality
  • Reporting dashboards include SKAN metrics
  • Weekly optimization cadence established
  • Incrementality testing framework in place
  • Budget allocation accounts for SKAN data limitations

Ongoing Maintenance

  • SKAdNetwork ID list updated quarterly
  • Conversion value schema reviewed monthly
  • MMP configuration verified after SDK updates
  • Apple's SKAN version updates tracked and adopted

FAQ

Do I need SKAdNetwork if I only use Apple Search Ads?

Apple Search Ads has its own attribution system that doesn't rely on SKAdNetwork. However, if you run ads on any other network (Meta, Google, TikTok, etc.), you need SKAN.

Does SKAdNetwork work for re-engagement campaigns?

SKAN is designed for new installs, not re-engagement. Re-engagement measurement is limited under ATT — most MMPs use probabilistic modeling for re-engagement attribution.

What happens if a user opts in to ATT tracking?

For users who opt in, your MMP can use deterministic (IDFA-based) attribution alongside SKAN. You'll effectively have two attribution signals — IDFA for opted-in users and SKAN for everyone.

How accurate is SKAdNetwork data?

Accuracy varies by volume. High-volume campaigns (1,000+ installs) produce reasonably accurate aggregate data. Low-volume campaigns may have significant noise or null values. Overall, expect 70-85% accuracy at the campaign level.

Will Apple replace SKAdNetwork with something better?

Apple continues iterating on SKAN (version 4.0 was a major improvement). The trend is toward more data while maintaining privacy. AdAttributionKit (introduced in iOS 17.4) extends similar concepts to alternative app marketplaces. Expect continued evolution.

Kongsi

Topik

skadnetworkskan attributionios privacyapp tracking transparencymobile attribution
Oğuz DELİOĞLU
Ditulis oleh

Oğuz DELİOĞLU

Founder of Appalize | Product Manager & Full-Stack Developer. Building & scaling AI-driven SaaS products globally.

Buletin

Kekal di Hadapan dalam ASO

Dapatkan strategi pakar setiap minggu dalam peti masuk anda.

Artikel Berkaitan

Lihat Semua