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