SKAdNetwork Conversion
Choose your SDK version below:
- Apptrove SDK → Recommended for all projects (Latest: v2.x.x)
- Trackier SDK → Will be deprecated in August 2026 (v1.x.xx)
Use the tabs below to view SKAdNetwork postback code for your chosen SDK.
This guide provides instructions for implementing SKAdNetwork postback conversion with the Apptrove Flutter 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
- Apptrove Flutter 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</string>
After configuring Info.plist, you must explicitly enable SKAdNetwork in your SDK configuration before initialization:
config.enableSkanAttribution();
From Apptrove SDK v2.0.5 onwards, calling this method will also automatically handle the initial SKAdNetwork registration (conversion value 0) for you!
Step 2: Integration with Apptrove SDK
Initialize the Apptrove SDK and then call postback conversion from any part of your app:
- ✓ Apptrove SDK (Recommended)
- Trackier SDK (Deprecating August 2026)
import 'package:apptrove_sdk_flutter/apptrove_sdk_flutter.dart';
import 'package:flutter/services.dart';
import 'dart:io' show Platform;
Future<void> initializeSDK() async {
final config = AppTroveSDKConfig("YOUR_SDK_TOKEN_HERE", "development");
// Enable SKAdNetwork Attribution (v2.0.5+)
config.enableSkanAttribution();
AppTroveFlutterSdk.initializeSDK(config);
}
SKAdNetwork attribution is disabled by default. If you need to explicitly disable it (e.g., depending on user consent or specific build configurations), you can use the disable method before initialization:
config.disableSkanAttribution();
if (Platform.isIOS) {
// Example 1: Basic conversion update (e.g., Registration)
try {
final result = await AppTroveFlutterSdk.updatePostbackConversion(10);
print('updatePostbackConversion success: $result');
} catch (e) {
print('SkanupdatePostbackConversion error: $e');
}
// Example 2: Update with coarse value and lock window (iOS 16.1+)
try {
final result = await AppTroveFlutterSdk.updatePostbackConversion(
20,
coarseValue: AppTroveCoarseValue.high,
lockWindow: true
);
print('updatePostbackConversion success: $result');
} catch (e) {
print('SkanupdatePostbackConversion error: $e');
}
// Example 3: Test conversion value with coarse value .low
try {
final result = await AppTroveFlutterSdk.updatePostbackConversion(
0,
coarseValue: AppTroveCoarseValue.low,
lockWindow: false
);
print('updatePostbackConversion success: $result');
} catch (e) {
print('SkanupdatePostbackConversion error: $e');
}
}
import 'package:trackier_sdk_flutter/trackier_sdk_flutter.dart';
import 'dart:io' show Platform;
Future<void> initializeTrackierSDK() async {
final config = TrackierSDKConfig(
appToken: "YOUR_SDK_TOKEN_HERE",
env: TrackierSDKConfig.ENV_DEVELOPMENT
);
Trackierfluttersdk.initializeSDK(config);
if (Platform.isIOS) {
Trackierfluttersdk.updatePostbackConversion(0);
}
}
if (Platform.isIOS) {
Trackierfluttersdk.updatePostbackConversion(0); // App open
Trackierfluttersdk.updatePostbackConversion(10); // Registration
Trackierfluttersdk.updatePostbackConversion(20); // First purchase
Trackierfluttersdk.updatePostbackConversion(30); // Subscription
Trackierfluttersdk.updatePostbackConversion(40); // High-value
Trackierfluttersdk.updatePostbackConversion(50); // Premium
}
Step 4: Track Conversion Events
Track conversion events throughout your app using the examples in the tabs above (values 0–63).
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: The SDK's
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: Use
try-catchblocks to handle postback errors correctly - iOS Only: SKAdNetwork is only available on iOS devices
- Platform Check: Consider checking platform before calling on cross-platform apps
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
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 Flutter SDK, ensuring proper attribution tracking while respecting user privacy on iOS 14.5+.