SKAdNetwork Integration
SKAdNetwork (SKAN) is Apple's privacy-preserving attribution framework for iOS. Clippr supports SKAN for measuring ad campaign effectiveness without user-level tracking.
What is SKAdNetwork?
SKAdNetwork allows advertisers to measure conversions while preserving user privacy:
- No user identifiers shared
- Aggregated, anonymized data
- Apple-verified install attribution
- Delayed postbacks (24-48 hours)
How It Works
1. User sees ad in an app (source app)
2. User clicks ad → Installs your app (advertised app)
3. App notifies SKAdNetwork of conversion value
4. Apple sends postback to ad network (after delay)
5. Clippr receives and stores postback
Clippr SKAN Features
- Postback reception: Receive and store SKAN postbacks
- Conversion value schema: Configure 6-bit conversion values
- Coarse conversion values: Support for iOS 16.1+ coarse values
- Dashboard analytics: View SKAN data alongside other metrics
Setup
1. Register Your App
Your app must be registered with Apple and have a valid App Store ID configured in Clippr.
2. Configure Info.plist
Add the SKAdNetwork identifiers for your ad networks:
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<!-- Add more ad network IDs -->
</array>
3. Update Conversion Values
When users complete valuable actions, update the conversion value:
import StoreKit
// User completed sign up (value = 1)
SKAdNetwork.updatePostbackConversionValue(1) { error in
if let error = error {
print("Failed to update conversion value: \(error)")
}
}
// User made purchase (value = 5)
SKAdNetwork.updatePostbackConversionValue(5) { error in
// Handle error
}
Conversion Value Schema
Configure what each conversion value means in the dashboard:
6-bit Values (0-63)
| Value | Meaning |
|---|---|
| 0 | Install only |
| 1 | Sign up |
| 2 | Tutorial complete |
| 3 | First purchase |
| 4-10 | Revenue tiers |
| 11-20 | Engagement levels |
| ... | Custom definitions |
Coarse Values (iOS 16.1+)
| Value | Meaning |
|---|---|
| low | Low value user |
| medium | Medium value user |
| high | High value user |
Viewing SKAN Data
In the dashboard:
- Go to your app
- Click SKAdNetwork
- View:
- Postback volume
- Conversion value distribution
- Redownload vs. new install ratio
Postback Data
Each SKAN postback contains:
| Field | Description |
|---|---|
transaction_id |
Unique identifier |
app_id |
Your App Store ID |
conversion_value |
0-63 value you set |
coarse_conversion_value |
low/medium/high |
did_win |
Whether this was the winning ad |
fidelity_type |
View-through vs. click-through |
redownload |
New install or reinstall |
Best Practices
1. Plan Your Conversion Value Schema
Map business events to values strategically:
0: Install
1-10: Engagement milestones
11-30: Revenue tiers ($1-$10, $10-$50, etc.)
31-63: Custom high-value events
2. Update Values Incrementally
Only update to higher values:
// Good - values increase over time
updatePostbackConversionValue(1) // Sign up
updatePostbackConversionValue(5) // First purchase
updatePostbackConversionValue(10) // $50 revenue
// Bad - decreasing values are ignored
updatePostbackConversionValue(10)
updatePostbackConversionValue(5) // This is ignored
3. Consider Timer Windows
SKAN has timer windows that affect when postbacks are sent:
- First 24 hours: Can update value
- After 24 hours: Value is locked
- iOS 16.1+: Multiple postback windows
4. Test in Development
Use the SKAdNetwork testing tools:
- Xcode's StoreKit Configuration
- TestFlight for real postbacks
- Apple's SKAN testing profile
Limitations
- Delayed data: Postbacks arrive 24-48+ hours after install
- Limited values: Only 64 possible conversion values
- No user-level data: Cannot link to specific users
- Crowd anonymity: Low-volume campaigns may not receive postbacks
SKAN 4.0 Features
iOS 16.1+ supports SKAN 4.0:
- Multiple postbacks: Up to 3 postbacks over time
- Coarse values: Low/medium/high for smaller campaigns
- Source identifier: 4-digit campaign identifier
- Lock window: Extended conversion windows
Troubleshooting
Not Receiving Postbacks
- Verify App Store ID is correct
- Check SKAdNetwork identifiers in Info.plist
- Ensure you're calling
updatePostbackConversionValue - Wait 24-48 hours (postbacks are delayed)
Conversion Values Not Updating
- Can only increase values, not decrease
- Window may have expired (24+ hours)
- Check for errors in the callback