Appearance
Attribution Events
Track user acquisition sources and campaign performance using attribution events in your iOS app.
Attribution Setup
Configure attribution tracking in your iOS app.
Integration Partners
Configure third-party attribution partners in your iOS project:
AppsFlyer Integration
objective-c
#import <AppsFlyerLib/AppsFlyerLib.h>
// Configure AppsFlyer
- (void)configureAppsFlyer {
[AppsFlyerLib shared].appsFlyerDevKey = @"YOUR_APPSFLYER_DEV_KEY";
[AppsFlyerLib shared].appleAppID = @"YOUR_APPLE_APP_ID";
// Set attribution callback
[AppsFlyerLib shared].delegate = self;
[[AppsFlyerLib shared] start];
}
// Handle AppsFlyer attribution
- (void)onConversionDataSuccess:(NSDictionary *)conversionInfo {
// Track attribution in Upshot
NSDictionary *payload = @{
BKAttributionSource: @"AppsFlyer",
BKUTM_Source:conversionInfo.network,
BKUTM_Medium:conversionInfo.trackerName,
BKUTM_Campaign:conversionInfo.network
};
[[BrandKinesis sharedInstance] createAttributionEvent:payload];
}
swift
import AppsFlyerLib
// Configure AppsFlyer
func configureAppsFlyer() {
AppsFlyerLib.shared().appsFlyerDevKey = "YOUR_APPSFLYER_DEV_KEY"
AppsFlyerLib.shared().appleAppID = "YOUR_APPLE_APP_ID"
// Set attribution callback
AppsFlyerLib.shared().delegate = self
AppsFlyerLib.shared().start()
}
// Handle AppsFlyer attribution
func onConversionDataSuccess(_ conversionInfo: [AnyHashable : Any]) {
// Track attribution in Upshot
let payload = [
BKAttributionSource: "Adjust",
BKUTM_Source:conversionInfo.network,
BKUTM_Medium:conversionInfo.trackerName,
BKUTM_Campaign:conversionInfo.network
]
BrandKinesis.sharedInstance().createAttributionEvent(payload)
}
Adjust Integration
objective-c
#import <AdjustSdk/AdjustSdk.h>
// Configure Adjust
- (void)configureAdjust {
NSString *yourAppToken = @"YOUR_ADJUST_APP_TOKEN";
NSString *environment = ADJEnvironmentProduction; // or ADJEnvironmentSandbox
ADJConfig *adjustConfig = [ADJConfig configWithAppToken:yourAppToken environment:environment];
// Set attribution callback
[adjustConfig setAttributionCallback:^(ADJAttribution *attribution) {
// Convert attribution to dictionary
NSDictionary *attributionDict = @{
BKAttributionSource:@"Adjust",
BKUTM_Source: attribution.network ?: @"",
BKUTM_Campaign: attribution.campaign ?: @"",
BKUTM_Medium: attribution.trackerName ?: @"",
};
// Track attribution in Upshot
[[Brandkinesis sharedInstance] createAttributionEvent:attributionDict];
}];
[Adjust appDidLaunch:adjustConfig];
}
swift
import AdjustSdk
// Configure Adjust
func configureAdjust() {
let yourAppToken = "YOUR_ADJUST_APP_TOKEN"
let environment = ADJEnvironmentProduction // or ADJEnvironmentSandbox
let adjustConfig = ADJConfig(appToken: yourAppToken, environment: environment)
// Set attribution callback
adjustConfig?.setAttributionCallback { attribution in
// Convert attribution to dictionary
let attributionDict: [String: Any] = [
BKAttributionSource:"Adjust",
BKUTM_Source: attribution?.network ?? "",
BKUTM_Campaign: attribution?.campaign ?? "",
BKUTM_Medium: attribution?.trackerName ?? "",
]
// Track attribution in Upshot
Brandkinesis.sharedInstance().createAttributionEvent(attributionDict)
}
Adjust.appDidLaunch(adjustConfig)
}
Best Practices
- Configure attribution partners correctly - Ensure proper SDK setup for each partner
- Implement deep link handling - Use iOS URL schemes and Universal Links
- Track relevant campaign data - Include UTM parameters and campaign identifiers
- Monitor attribution accuracy - Validate attribution data across different sources
- Validate tracking setup - Test attribution flows in development environment
- Handle attribution delays - Account for potential delays in attribution data
- Use consistent naming - Maintain consistent event and property naming across campaigns