SKAdNetwork Conversion
Choose your SDK version below:
- Apptrove SDK → Recommended for all projects (Latest: v2.0.1)
- Trackier SDK → Will be deprecated in May 2026 (v1.x.xx)
Use the tabs below to view SKAdNetwork code for your chosen SDK.
This guide provides instructions for implementing SKAdNetwork postback conversion with the Apptrove iOS SDK. SKAdNetwork postback conversion allows you to track user engagement and conversion events for iOS 14.5+ apps.
Overview
SKAdNetwork postback conversion is Apple's privacy-focused attribution system that allows you to track conversion events without compromising user privacy. This is essential for iOS 14.5+ apps that want to measure campaign effectiveness while respecting user privacy.
Important: SKAdNetwork postback conversion can be called from any part of your app to track user engagement and conversion events.
Prerequisites
- iOS 14.5 or later
- Trackier iOS SDK installed
- Access to your app's
Info.plistfile
Implementation
Step 1: Configure Info.plist
Add the SKAdNetwork configuration to your Info.plist file:
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://apptrovesn.com/.well-known/skadnetwork/report-attribution</string>
After configuring Info.plist, call the initial conversion value:
- ✓ Apptrove SDK (Recommended)
- Trackier SDK (Deprecating May 2026)
// import ApptroveSDK // or import apptrove_ios_sdk
AppTroveSDK.updatePostbackConversion(conversionValue: 0)
// import TrackierSDK // or import trackier_ios_sdk
TrackierSDK.updatePostbackConversion(conversionValue: 0)
Step 2: Integration with Trackier SDK
Initialize the Apptrove SDK and then call postback conversion from any part of your app:
- ✓ Apptrove SDK (Recommended)
- Trackier SDK (Deprecating May 2026)
import UIKit
import ApptroveSDK // or import apptrove_ios_sdk
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Initialize Apptrove SDK
initializeAppTroveSDK()
return true
}
private func initializeAppTroveSDK() {
// 1. Wait for ATT authorization before initializing SDK
AppTroveSDK.waitForATTUserAuthorization(timeoutInterval: 20)
// 2. Initialize the SDK
let config = AppTroveSDKConfig(
appToken: "YOUR_SDK_TOKEN_HERE", // Replace with your actual SDK token
env: AppTroveSDKConfig.ENV_DEVELOPMENT
)
AppTroveSDK.initialize(config: config)
// 3. Set initial conversion value (can be called after SDK initialization)
AppTroveSDK.updatePostbackConversion(conversionValue: 0)
}
}
import UIKit
import TrackierSDK // or import trackier_ios_sdk
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Initialize Trackier SDK
initializeTrackierSDK()
return true
}
private func initializeTrackierSDK() {
// 1. Wait for ATT authorization before initializing SDK
TrackierSDK.waitForATTUserAuthorization(timeoutInterval: 20)
// 2. Initialize the SDK
let config = TrackierSDKConfig(
appToken: "YOUR_SDK_TOKEN_HERE", // Replace with your actual SDK token
env: TrackierSDKConfig.ENV_DEVELOPMENT
)
TrackierSDK.initialize(config: config)
// 3. Set initial conversion value (can be called after SDK initialization)
TrackierSDK.updatePostbackConversion(conversionValue: 0)
}
}
Step 3: Track Conversion Events
Track conversion events throughout your app:
- ✓ Apptrove SDK (Recommended)
- Trackier SDK (Deprecating May 2026)
// import ApptroveSDK // or import apptrove_ios_sdk
// Track app open
AppTroveSDK.updatePostbackConversion(conversionValue: 0)
// Track user registration
AppTroveSDK.updatePostbackConversion(conversionValue: 10)
// Track first purchase
AppTroveSDK.updatePostbackConversion(conversionValue: 20)
// Track subscription
AppTroveSDK.updatePostbackConversion(conversionValue: 30)
// import TrackierSDK // or import trackier_ios_sdk
// Track app open
TrackierSDK.updatePostbackConversion(conversionValue: 0)
// Track user registration
TrackierSDK.updatePostbackConversion(conversionValue: 10)
// Track first purchase
TrackierSDK.updatePostbackConversion(conversionValue: 20)
// Track subscription
TrackierSDK.updatePostbackConversion(conversionValue: 30)
Best Practice: Call updatePostbackConversion immediately after the user action occurs to ensure accurate attribution tracking.
Conversion Value Guidelines
| Value Range | Description | Use Case |
|---|---|---|
| 0-9 | App Engagement | App opens, session starts |
| 10-19 | User Onboarding | Registration, profile setup |
| 20-29 | First Actions | First purchase, first subscription |
| 30-39 | Regular Usage | Repeat purchases, engagement |
| 40-49 | High Value | Premium purchases, upgrades |
| 50-63 | Premium/Loyalty | VIP status, loyalty program |
Best Practices
- Flexible Usage:
updatePostbackConversioncan be called from any part of your app - Meaningful Values: Use conversion values that represent user value (0-63)
- Timing: Send conversion values immediately after the event occurs
- Validation: Always validate conversion values before sending
- Error Handling: Implement proper error handling for postback failures
Troubleshooting
Postback Not Sent
- Check if SKAdNetwork is available on the device (iOS 14.5+)
- Verify the conversion value is within 0-63 range
- Check console logs for error messages
Integration Issues
- Verify the app token is correct
- Ensure SDK is properly initialized
- Check Info.plist configuration for postback endpoint
Debug Tips
// Check if SKAdNetwork is available
if #available(iOS 14.5, *) {
print("SKAdNetwork is available")
} else {
print("SKAdNetwork not available on this iOS version")
}
// Test conversion value (Apptrove)
AppTroveSDK.updatePostbackConversion(conversionValue: 10)
Support
For technical support and questions:
- Support Email: support@apptrove.com
- Documentation: Apptrove Documentation Portal
This guide provides implementation of SKAdNetwork postback conversion with the Apptrove iOS SDK, ensuring proper attribution tracking while respecting user privacy on iOS 14.5+.