Integrations / Attribution

Attribution

Attribution turns funnel analytics into acquisition answers: which campaigns produce users who complete onboarding, start trials, and pay — not just install.

Two ways in

1. From the SDK

Forward attribution from your MMP SDK's conversion callback with UpliftFunnel.setAttribution. The four supported keys are source, campaign, ad_set, and creative; they're attached as context to every subsequent event from that device.

AppsFlyer

AppsFlyer → Uplift Funnel
// pubspec: appsflyer_sdk
final appsflyer = AppsflyerSdk(AppsFlyerOptions(
  afDevKey: 'YOUR_DEV_KEY',
  appId: 'YOUR_IOS_APP_ID',
));

appsflyer.onInstallConversionData((res) {
  final data = Map<String, dynamic>.from(res['payload'] ?? {});
  UpliftFunnel.setAttribution({
    'source': (data['media_source'] ?? 'organic').toString(),
    'campaign': (data['campaign'] ?? '').toString(),
    'ad_set': (data['af_adset'] ?? '').toString(),
    'creative': (data['af_ad'] ?? '').toString(),
  });
});

appsflyer.initSdk(registerConversionDataCallback: true);

Adjust

Adjust → Uplift Funnel
// pubspec: adjust_sdk
final config = AdjustConfig('YOUR_APP_TOKEN', AdjustEnvironment.production);

config.attributionCallback = (attribution) {
  UpliftFunnel.setAttribution({
    'source': attribution.network ?? 'organic',
    'campaign': attribution.campaign ?? '',
    'ad_set': attribution.adgroup ?? '',
    'creative': attribution.creative ?? '',
  });
};

Adjust.start(config);

Not on an MMP? You can call setAttribution with values from anywhere — a deferred deep link, your own backend, or a campaign parameter you pass at install time.

2. Server-side postbacks

Alternatively, connect AppsFlyer or Adjust from the dashboard's attribution settings and point the MMP's postbacks at the URL it gives you. Attribution then arrives server-side and is joined to users by identity — no app changes needed.

Where it shows up

The campaign table in Analytics breaks the full funnel — started, completed, activated, trial, paid — down by campaign, combining attribution with revenue data. That's cost-of-growth truth: the campaign with the most installs is often not the one with the most payers.