How to Choose an Attribution SDK
A practical checklist for engineers choosing an MMP's attribution SDK: framework coverage, who maintains the package, licence, minimum OS, deep links and ATT handling.
Start from your framework, not the vendor. Check that the MMP publishes the package itself, that its minimum OS matches your deployment target, that the licence suits your legal team and that deep links and the ATT prompt are documented for your stack. Pricing and reporting come after the SDK fits.
What is an attribution SDK?
An attribution SDK is the library a mobile measurement partner (MMP) asks you to add to your app so it can record the first open, in-app events and deep link opens, and match each install to the ad, link or channel that drove it.
Product and marketing teams usually pick the MMP. Engineering then finds out whether the SDK fits the app. Doing that check first saves a migration later. Across the 9 MMPs and 9 frameworks tracked on this site, 67 of the 81 pairs have an official SDK, so most of the gaps sit in a handful of frameworks.
Which framework does the SDK need to support?
Start with the framework your app is built in, then check every platform you ship. The coverage matrix shows the pattern:
- React Native, Flutter, native iOS and native Android: almost every vendor publishes an official package. Your choice here rarely narrows the field.
- Expo: six vendors publish an Expo-ready package; two document a community config plugin; one has no Expo route. See Expo and MMP SDKs.
- Capacitor: only four of nine vendors publish an official plugin. If you are on Ionic with Capacitor, this is where the list gets short.
- Cordova: seven vendors have an official or vendor-documented plugin, one of those is deprecated, and two rely on community plugins.
- Unity: most vendors ship a Unity package for iOS and Android games; check the Unity editor version it needs.
- Web: two vendors publish no web SDK at all, which matters if you run web-to-app flows.
Use the SDK picker to filter by your framework, then open the framework's datasheet for the full table.
Who maintains the package?
"Supports Flutter" can mean three different things. Read the publisher on the registry before you commit:
- Vendor-published: the MMP publishes the package on npm, pub.dev or Maven under its own account. Releases track the native SDK.
- Vendor-documented: the MMP's docs describe the route, but someone else maintains the package. Branch's Flutter plugin is published on pub.dev by an individual maintainer; Adjust's and Branch's Expo config plugins live in the community expo/config-plugins repository.
- Community only: the vendor neither publishes nor documents it. Tenjin, for example, lists its Cordova plugin under unofficial plugins, last published in 2018.
A vendor-documented route can work well, but plan for a lag between a new native SDK release and the wrapper that exposes it.
Does the licence suit your company?
Most framework wrappers are MIT licensed. Several native SDKs are not:
- AppsFlyer's native iOS and Android SDKs are published under proprietary terms, while its wrappers are MIT.
- Kochava's SDKs, wrappers included, point to Kochava's terms of service rather than an open-source licence.
- AppMetrica's Flutter plugin uses Yandex's proprietary SDK licence; its iOS and Android SDKs are MIT.
- No licence is stated on the registry or repository for Airbridge's Flutter, iOS, Android and Unity SDKs.
If your legal team reviews third-party licences, send them the exact packages from the vendor datasheets, not just the vendor name.
Will it build against your minimum OS?
Minimum iOS versions across the native SDKs here range from iOS 12 to iOS 15.5. If your deployment target is iOS 13, an SDK that needs iOS 15 forces a decision you did not plan for. On Android, most SDKs need API 21, a few React Native and Capacitor wrappers default to API 24, and Airbridge's Android SDK states API 16.
Where a cell says "Not published", no primary source states a minimum. Treat that as a question for the vendor, not as "no minimum".
How does it handle ATT, the Install Referrer and deep links?
These three decide how much work the integration really is:
- ATT prompt: some SDKs can wait a set time for the user's answer before sending the install (Adjust up to 360 seconds, Kochava 30 seconds by default, AppsFlyer and Singular through a timeout setting). Others expect you to request ATT before starting the SDK.
- Play Install Referrer: some SDKs bundle the library; Adjust, Kochava and native AppsFlyer ask you to add it.
- Deep links: if you need deferred deep linking, check whether the MMP hosts the link domain and its apple-app-site-association and assetlinks.json files, or whether you bring your own links. Tenjin, for example, does not host links.
Each vendor's datasheet has a "what the SDK needs from you" checklist with these details and sources.
Where does Linkrunner fit?
Linkrunner is one of the smaller MMPs on the list, and its SDK coverage is broad: official packages for React Native, Flutter, Expo, Capacitor, Cordova, native iOS, native Android and the web, with a Unity bridge guide rather than a Unity package. Its native SDKs need iOS 15 and Android API 21, so check those against your targets.
Where Linkrunner fits: Best for teams on Expo, Capacitor or Cordova who want attribution and deferred deep linking from one SDK. Free for the first 25k attributed installs, then priced per attributed install.
Other vendors fit other needs: Tenjin builds its attribution around mobile games, Kochava publishes official SDKs for both Unity and the web, and Airbridge publishes its own Expo package.
A short decision order
- List every framework and platform you ship, including web.
- Filter the SDK picker by the framework that limits you most (often Expo, Capacitor or Unity).
- Check publisher, licence and minimum OS for the shortlisted packages.
- Read each shortlisted vendor's ATT, Install Referrer and deep link requirements.
- Only then compare pricing and reporting. For the business side, the choosing an MMP chapter of The App Attribution Guide covers attribution models, windows and contracts.
Questions
What is the most important thing to check in an attribution SDK?
Framework coverage from the vendor itself. A vendor-published package for your exact framework avoids wrappers that lag behind native releases, and it is the one fact that can rule a vendor out entirely.
Is a vendor-documented SDK safe to use?
Usually, but check how recently it was published and whether it exposes the native SDK features you need. The vendor documents the route, but a third party sets the release schedule.
Should engineering or marketing choose the MMP?
Both. Marketing owns the reporting and network integrations; engineering should confirm the SDK fits the stack, licence and minimum OS before a contract is signed.
Can I switch attribution SDK later?
Yes, but it means an app release, a period of running both SDKs to compare numbers and new deep link domains. Choosing an SDK that fits your stack first reduces the chance you need to.
What is an MMP SDK?
An MMP SDK is the library a mobile measurement partner asks you to add to your app. It records the first open, in-app events and deep link opens, and sends them to the MMP so installs can be matched to the ad or link that drove them.
Is every MMP SDK open source?
No. Many wrappers and SDKs are MIT licensed, but some native SDKs are proprietary: AppsFlyer's native iOS and Android SDKs, Kochava's SDKs and AppMetrica's Flutter plugin are published under proprietary terms. The licence column in each table shows what the registry or repository states.
More guides
- GD-02Expo and MMP SDKs: Managed vs Bare WorkflowHow attribution SDKs work in Expo: why Expo Go can't run them, config plugins in the managed workflow, what changes in a bare project, and which MMPs support Expo.Guide
- GD-03What an MMP SDK Collects from a DeviceThe device signals, identifiers and events an attribution SDK typically sends, which ones need consent or a permission, and how to check what a specific SDK collects.Guide