Campaign Attribution on iOS and Android

Track one campaign across iOS and Android: tag one smart link, read the attribution in the app, send post-install events, and compare platforms fairly.

Yes — one LinkTrail link can carry a campaign across iOS and Android. The link routes each device to the right store or into the app, the install is matched back to the click on both platforms, and every install and in-app event reports under the same campaign and channel. What differs between the platforms is how the match is made, which is worth understanding before comparing the numbers.

Create the link once (Links → Create link) and set its campaign, channel and UTM fields. Select both your iOS and Android apps and a fallback URL, so the same URL works wherever it's opened: phones with the app open it, phones without it go to their store, desktops go to the fallback. Use a separate link per channel or placement — one for Meta, one for TikTok, one for email — so each reports on its own. Paid-network specifics are on the ad network integrations page.

Link fieldWhat to put in it
CampaignThe initiative — e.g. spring-sale
ChannelWhere the link runs — e.g. meta, tiktok, email, qr
UTMutm_source / utm_medium / utm_campaign, matching your web analytics
Deep link pathThe screen the campaign is about — e.g. /sale/spring
Custom dataAnything the first screen needs — a voucher code, a creative ID

2. How the install is matched on each platform

AndroidiOS
Deterministic matchGoogle Play Install Referrer — passed through the store automaticallyDeferred click token, read through a paste control (or automatically, with the system paste alert)
FallbackConsent-gated probabilistic matching, if enabledConsent-gated probabilistic matching, if enabled
Apple frameworks—SKAdNetwork / AdAttributionKit postbacks, aggregated and delayed by Apple

Every install records which of these produced it (its match type), and one that doesn't match is reported as organic rather than guessed. The iOS click-token setup is on the iOS SDK page; the matching rules are in Attribution.

3. Read the attribution in the app

The deep link and the attribution arrive separately: onLink routes the user, onAttribution reports which campaign earned the install. The same hook exists on every SDK:

iOSswift
LinkTrail.shared?.onAttribution { attribution in
    // Forward to your own analytics if you want the campaign there too.
}
Androidkotlin
LinkTrail.shared?.onAttribution { attribution ->
    // Forward to your own analytics if you want the campaign there too.
}
React Nativets
LinkTrail.onAttribution((attribution) => {
  // Forward to your own analytics if you want the campaign there too.
});
Flutterdart
LinkTrail.onAttribution.listen((attribution) {
  // Forward to your own analytics if you want the campaign there too.
});

Attribution waits for consent by default (requireConsent: true): links route immediately, and the install is attributed once you call setConsent(true).

4. Send the events that matter

Installs are the start, not the result. Call trackEvent for sign-ups, purchases and anything else you judge the campaign on — events roll up to the campaign that earned the install on both platforms. Naming and revenue fields are in Tracking Events.

iOSswift
LinkTrail.shared?.trackEvent(name: "purchase", value: 49.99, currency: "USD")
Androidkotlin
LinkTrail.shared?.trackEvent(name = "purchase", value = 49.99, currency = "USD")

5. Compare the platforms fairly

  • Analytics breaks results down by campaign, channel, geo, device and platform, so one campaign shows iOS and Android side by side.
  • Expect iOS to attribute a smaller share than Android. Android's Install Referrer gives a deterministic match for installs from Google Play; iOS depends on the click token and, past that, on consent-gated probabilistic matching.
  • Compare match types, not just totals. A channel that looks weaker on iOS may simply be matched probabilistically more often — the match audit log (Growth and up) shows the split.
  • SKAdNetwork and AdAttributionKit numbers are aggregated by Apple and won't reconcile install-by-install with the per-install results above.

Campaign attribution with UTM and source/medium is on every plan, including Free. Ad-network cost data, the match audit log and attribution webhooks are on Growth — see pricing.