Skip to content

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 ​

  1. Configure attribution partners correctly - Ensure proper SDK setup for each partner
  2. Implement deep link handling - Use iOS URL schemes and Universal Links
  3. Track relevant campaign data - Include UTM parameters and campaign identifiers
  4. Monitor attribution accuracy - Validate attribution data across different sources
  5. Validate tracking setup - Test attribution flows in development environment
  6. Handle attribution delays - Account for potential delays in attribution data
  7. Use consistent naming - Maintain consistent event and property naming across campaigns

Powered by Upshot.ai