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.
1. Tag one link for the campaign
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 field | What to put in it |
|---|---|
| Campaign | The initiative — e.g. spring-sale |
| Channel | Where the link runs — e.g. meta, tiktok, email, qr |
| UTM | utm_source / utm_medium / utm_campaign, matching your web analytics |
| Deep link path | The screen the campaign is about — e.g. /sale/spring |
| Custom data | Anything the first screen needs — a voucher code, a creative ID |
2. How the install is matched on each platform
| Android | iOS | |
|---|---|---|
| Deterministic match | Google Play Install Referrer — passed through the store automatically | Deferred click token, read through a paste control (or automatically, with the system paste alert) |
| Fallback | Consent-gated probabilistic matching, if enabled | Consent-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:
LinkTrail.shared?.onAttribution { attribution in
// Forward to your own analytics if you want the campaign there too.
}LinkTrail.shared?.onAttribution { attribution ->
// Forward to your own analytics if you want the campaign there too.
}LinkTrail.onAttribution((attribution) => {
// Forward to your own analytics if you want the campaign there too.
});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.
LinkTrail.shared?.trackEvent(name: "purchase", value: 49.99, currency: "USD")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.