Build with LinkTrail
Everything you need to ship deferred deep links, smart routing, and privacy-first attribution across iOS, Android, and web.
Get started
Introduction
What LinkTrail does and how a link flows from tap to the right in-app screen — through the store, a fresh install, and back to the campaign that earned it.
Quickstart
Integrate LinkTrail in about five minutes: register an app in the dashboard, add the SDK, and make the four calls that route links and attribute installs.
Dashboard
The web console at developer.linktrail.io — register apps, verify link domains, create and tag links, read attribution analytics, and manage settings.
App Credentials
What the dashboard needs to register an app, and where to find each — bundle IDs, Apple Team ID, App Store ID, package names and signing fingerprints.
Platforms
iOS SDK
Install and integrate the LinkTrail iOS SDK — module LinkTrailSDK, iOS 15+, via Swift Package Manager or CocoaPods — with configure, onLink and consent.
Android SDK
Install and integrate the LinkTrail Android SDK — io.linktrail, minSdk 26, on Maven Central — with configure, onLink, consent and the Install Referrer.
React Native SDK
Install and integrate the LinkTrail React Native SDK — linktrail-react-native, a New Architecture TurboModule for iOS and Android.
Flutter SDK
Install and integrate the LinkTrail Flutter SDK — package linktrail_flutter, one Dart API over the native iOS and Android SDKs.
Versions & Changelog
The current LinkTrail SDK versions, the minimum OS each supports, which native SDKs the wrappers pin, the breaking changes, and where each changelog lives.
Upgrading to 0.1.0
What changed in the 0.1.0 LinkTrail SDKs on iOS, Android, React Native and Flutter, and what to change in your app: link domains, consent, configure, logs.
Consent & privacy
Consent & Privacy
How the consent gate works on every LinkTrail SDK: what is held until setConsent, what grant and deny send, CMP integration, and the store privacy answers.
SKAdNetwork & ATT
When an iOS app needs the App Tracking Transparency prompt, how to set up SKAdNetwork conversion values with the SDK, and what LinkTrail does not receive.
Verify & troubleshoot
Troubleshooting
When a link opens the browser or store instead of your app — domain verification, signing fingerprints, caches, consent, and checks that find the cause.
Errors
Every error the LinkTrail SDKs report on iOS, Android, React Native and Flutter, what causes each, and the HTTP statuses behind them: 401, 404, 429, 5xx.
SDK Log Reference
Every line the LinkTrail iOS and Android SDKs log, with its level and when it prints: install, consent, deferred and re-engagement links, events and state.
Guides
Deep Linking
Direct, deferred, and contextual links — what each one carries, how the SDK delivers it after install, and when to reach for which.
Domains & Association Files
Set up LinkTrail link domains: a free linktrail.io subdomain or your own host with CNAME and TXT records, its statuses, and the association files served.
Attribution
How LinkTrail matches an install to the link and campaign that earned it — deterministic first, probabilistic only when enabled, and what gets recorded.
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.
Tracking Events
Attribute in-app behaviour and revenue back to the link that drove the install — which events to send, how to name them, and where they surface.
Migrate from Firebase Dynamic Links
Replace Firebase Dynamic Links with LinkTrail: map each FDL parameter, swap the handler on iOS, Android, React Native and Flutter, keep old URLs working.
API
API Authentication
How to authenticate against the LinkTrail REST API: SDK API keys for the event endpoints, access tokens and X-Workspace-Id for the management endpoints.
Links API
Create, list, edit and delete LinkTrail smart links over the REST API: the link object, its routing fields, all-time totals and the QR code endpoint.
Apps API
Register and manage the iOS and Android apps in a LinkTrail workspace over the REST API: the app object, each platform's required fields, and checks.
Domains API
Add and verify LinkTrail link domains over the REST API: subdomains, custom domains with their DNS records, the verify checks, and the association files.
Stats API
Read LinkTrail analytics over the REST API: overview KPIs with match quality, daily timeseries, breakdowns by dimension, monthly channels and events.
Webhooks API
Receive LinkTrail installs and events as signed webhooks: register an endpoint, the event types, the payload, and verifying the X-LinkTrail-Signature HMAC.
SDK Endpoints
The REST endpoints the LinkTrail SDKs call: resolve a link, record an install with its deferred deep link, record an open or an event, resolve a click.
Frequently asked questions
How do I integrate the LinkTrail SDK?
Four calls. Configure with your API key at launch, register an onLink handler to route incoming links, forward OS links with handleDeepLink, and call setConsent when your consent prompt resolves — the install is held until you do, and grant sends it attributed while deny only routes the deferred link. The Quickstart guide walks through both the dashboard setup and the app code in about five minutes.
Which SDKs does LinkTrail provide?
Four: iOS via Swift Package Manager or CocoaPods (iOS 15+), Android via Maven Central (minSdk 26), React Native as a New Architecture TurboModule, and Flutter as a pub.dev plugin. The React Native and Flutter packages wrap the same native SDKs, so behaviour is consistent across all of them.
Why do my deep links open the browser instead of my app?
Almost always domain verification rather than SDK code — a signing-fingerprint mismatch or a stale cache in the AASA or assetlinks.json file. Note that typing a URL in the address bar never opens an app on either platform by design; test by tapping a link from another app instead.
Do I need to obtain user consent before the SDK collects data?
Yes, and the SDK is built for it. Consent gating is on by default on every platform and holds the install: nothing is sent and no deferred link routes until your app calls setConsent(true) or setConsent(false). Grant sends the install attributed; deny sends one uncounted install that only resolves the deferred link, so the user still reaches the right screen. Re-engagement links route regardless. As the controller, obtaining that consent is your responsibility.
Does the LinkTrail SDK collect the IDFA or Google Advertising ID?
No. The SDK never accesses the Apple IDFA, with or without App Tracking Transparency permission, and never reads the Google Advertising ID. On iOS it generates a random, app-scoped per-install UUID (no IDFV); on Android it uses the App Set ID, with a random UUID as fallback — identifiers scoped to you as the developer and not shared across companies.