MMP SDK HubAttribution SDK datasheets
Home / Guides / What an SDK collects

What an MMP SDK Collects from a Device

The 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.

Short answer

An MMP SDK typically sends device and app details, the IP address its requests come from, the Play Install Referrer on Android, advertising IDs where the platform allows them, deep link URLs and the in-app events you choose to log. The IDFA needs ATT consent; the Android advertising ID needs the AD_ID permission on Android 13 and later.

What does an MMP SDK send?

An MMP SDK sends the signals the MMP needs to match an app install or event to a click or impression, plus the events you choose to measure.

Attribution signal: any piece of data an MMP can use to connect an install to the campaign that drove it, from a referrer string on Android to an advertising ID or a click identifier in a deep link.

The exact list differs by vendor and by settings. The groups below are what the vendor docs and SDK manifests on this site typically describe. Treat them as a checklist for reading a specific vendor's privacy documentation, not as a statement about any one SDK.

Device and app details

Sent with almost every request so the MMP can tell devices and app versions apart:

  • device model, OS name and version, language and time zone
  • app version and build, and the SDK version
  • the IP address the request comes from, which the server sees whatever the SDK does
  • timestamps for first open, sessions and events

Several vendors use IP address and user agent only as a fallback for probabilistic matching, where privacy rules and the platform allow it. Linkrunner, for example, describes its matching as deterministic first, with IP and user-agent matching only as a fallback when no deterministic signal exists. Check each vendor's documentation for how it uses them.

Platform identifiers

These carry the most privacy weight, and each platform controls them:

  • IDFA (iOS): only available after the user allows tracking in Apple's App Tracking Transparency prompt. Without consent it reads as zeros.
  • IDFV (iOS): a per-vendor identifier that doesn't need ATT consent, commonly used to count devices across your own apps.
  • Google Advertising ID (Android): apps targeting Android 13 (API 33) or later must declare com.google.android.gms.permission.AD_ID to read it. Several SDKs declare it for you; child-directed apps usually remove it.
  • App Set ID (Android): a per-developer identifier that some SDKs read alongside the advertising ID. Tenjin's Flutter plugin, for example, bundles the App Set ID library.

On each vendor datasheet, the Android permissions line shows what that SDK declares, from its docs or its published manifest.

Attribution-specific signals

These exist mainly for attribution:

  • Play Install Referrer (Android): the referrer string Google Play passes to the app after install, which carries the click's tracking parameters. It is the main Android signal for Play Store installs. Some SDKs bundle the library; others ask you to add it.
  • Click identifiers in deep links: when a user opens the app from a tracking link, the URL can carry a click ID that the MMP matches on its servers.
  • SKAN and AdAttributionKit (iOS): the SDK may update conversion values on the device. The postback itself goes from Apple's frameworks to the ad network (and a copy to the MMP if you set it up), without user-level data.

Deep Link Doctor's page on Play Store referrer encoding shows how campaign tags reach the referrer from a store link, and why bad encoding loses them.

Events and revenue you choose to send

The SDK sends the in-app events you log: sign-ups, purchases, levels completed. That part is entirely in your hands:

  • Send only the events you use for measurement or ad network optimisation.
  • Avoid personal data in event names and values. If you pass an email or phone number for ad network matching, check whether the SDK can hash it on the device first.
  • Revenue events usually carry an amount and currency.

Linkrunner, for example, documents opt-in SHA-256 hashing of personal data in its SDK, off by default, and a setConsent call for consent signals. Other vendors offer their own hashing and consent controls, so check each one's privacy docs.

How to check what a specific SDK collects

Don't rely on a summary, this one included. For the SDK you are adding:

  1. Read the vendor's data collection or privacy page for the SDK, and the platform-specific docs linked from its datasheet.
  2. Check the merged Android manifest after a build. It lists every permission the SDK and its dependencies declare.
  3. Check the SDK's iOS privacy manifest (PrivacyInfo.xcprivacy) if it ships one, and use it in your App Store privacy answers.
  4. Watch the network calls from a debug build with a proxy, and compare them with the vendor's documentation.
  5. Use the SDK's consent and opt-out APIs where your consent setup requires them.

Questions to ask a vendor

  • Which identifiers does the SDK read, and on which OS versions?
  • Does it read the advertising ID when the user or app has opted out?
  • Is personal data hashed on the device, and is that on by default?
  • Which permissions does the SDK declare on Android, and can they be removed?
  • Where is the data processed and stored?

An SDK is the part of an MMP that lives inside your app, so it deserves the same review as any other dependency. Linkrunner's glossary entry on what an SDK is covers the basics for teammates who are new to the term.

Questions

Does an MMP SDK collect personal data?

It can. Device identifiers and IP addresses count as personal data under many privacy laws, and any user data you pass in events adds to that. Read the vendor's data processing terms and configure consent controls to match your setup.

Can an MMP SDK work without the IDFA?

Yes. Without ATT consent, attribution on iOS relies on SKAN or AdAttributionKit, deterministic signals such as deep link clicks, and any probabilistic matching the vendor and platform allow.

Does the SDK need location permission?

None of the vendor docs reviewed for this site ask for location permission. If an SDK requests it, ask the vendor why.

How can I see exactly what the SDK sends?

Route a debug build through a proxy such as Charles or mitmproxy and inspect the requests. Most vendors also offer a test or debug mode that logs events in their dashboard.

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.