# Mobile Install Attribution: Complete Guide > A complete guide to mobile install attribution covering attribution models, Google Play Referrer, iOS SKAN, and key privacy considerations. - Canonical: https://redirectly.app/blog/mobile-install-attribution-guide - Site: [Redirectly](https://redirectly.app) — deferred deep linking for Flutter & React Native - Published: 2024-12-10 - Author: Dmytro Vyrych - Category: Attribution · 14 min read Learn how to properly track and attribute mobile app installs. Covers attribution models, platform-specific APIs, privacy considerations, and best practices. ## What is Mobile Install Attribution? **Definition:** Mobile install attribution is the process of determining which marketing channel, campaign, or user action led to an app installation. It tracks the source of installs and attributes them to specific marketing efforts. **Why It Matters:** - Measure marketing ROI - Identify best channels - Optimize spend allocation - Track campaign performance - Understand user sources **Key Metrics:** - Install source - Campaign name - Ad network - Attribution window - Cost per install **Challenges:** - Privacy regulations - Device fingerprinting - Cross-device tracking - Attribution windows - Data accuracy ## Attribution Models Explained Different attribution models assign credit to marketing touchpoints in different ways. Here are the most common: ### 1. First-Touch Attribution Credits the first marketing touchpoint a user encounters. All install credit goes to the first interaction. **Example:** User sees Facebook ad → clicks → waits 3 days → sees Google ad → installs app. **Attribution:** Facebook gets 100% credit. - **Best for:** Awareness and top-of-funnel campaigns - **Limitation:** Ignores later touchpoints that may have driven conversion ### 2. Last-Touch Attribution Credits the last marketing touchpoint before the install. Most common model in mobile marketing. **Example:** User sees Facebook ad → clicks → waits 3 days → sees Google ad → installs app. **Attribution:** Google gets 100% credit. - **Best for:** Conversion and performance marketing - **Limitation:** Ignores earlier touchpoints that may have influenced decision ### 3. Multi-Touch Attribution Distributes credit across multiple touchpoints. Can use various weights (linear, time-decay, algorithmic). **Example (Linear):** User sees Facebook ad → clicks → waits 3 days → sees Google ad → installs app. **Attribution:** Facebook 50%, Google 50%. - **Best for:** Holistic ROI analysis and comprehensive reporting - **Limitation:** More complex, requires data infrastructure ### 4. Time-Decay Attribution Gives more credit to touchpoints closer to the install. Earlier interactions receive less credit. **Example:** User sees Facebook ad → clicks → waits 3 days → sees Google ad → installs app. **Attribution:** Facebook 30%, Google 70%. - **Best for:** Short conversion windows and retargeting - **Limitation:** May undervalue awareness efforts ## Google Play Referrer API The Google Play Referrer API is Google's official method for tracking installs on Android. It captures referral information when a user installs your app from the Google Play Store. ### How It Works When a user clicks an ad and installs your app, Google Play captures referral information: ```json { "referrer": "utm_source=google_play&utm_medium=cpc&utm_campaign=spring_sale", "referrer_click_timestamp_seconds": 1702000000, "install_begin_timestamp_seconds": 1702000060, "install_timestamp_seconds": 1702000120, "google_play_instant": false } ``` ### Implementation Example ```kotlin import com.android.installreferrer.api.InstallReferrerClient import com.android.installreferrer.api.InstallReferrerStateListener class AttributionHelper : InstallReferrerStateListener { private lateinit var referrerClient: InstallReferrerClient fun getInstallReferrer(context: Context) { referrerClient = InstallReferrerClient.newBuilder(context).build() referrerClient.startConnection(this) } override fun onInstallReferrerSetupFinished(responseCode: Int) { when (responseCode) { InstallReferrerClient.InstallReferrerResponse.OK -> { val response = referrerClient.installReferrer val referrerUrl = response.installReferrer val clickTime = response.referrerClickTimestampSeconds val installTime = response.installBeginTimestampSeconds logAttribution(referrerUrl, clickTime, installTime) } InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> { // API not available } InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE -> { // Service not available } } referrerClient.endConnection() } override fun onInstallReferrerServiceDisconnected() { // Try again later } private fun logAttribution(referrer: String, clickTime: Long, installTime: Long) { // Send to your backend or attribution service } } ``` ### Limitations - **Attribution window:** Limited to 90 days from install - **Organic installs:** No referral data for users who directly visit Play Store - **Side-loaded installs:** Does not work for apps installed outside Play Store - **Device ID access:** Restricted by Play Services policies ## iOS SKAN Attribution SKAdNetwork (SKAN) is Apple's privacy-focused attribution framework introduced with iOS 14.5. It replaces IDFA-based tracking with aggregated, privacy-preserving measurement. ### Key Differences from Traditional Attribution - **No user-level data:** Only aggregated conversion data across users - **Short attribution window:** 0-7 days for iOS 16+, 24 hours for iOS 14-15 - **Limited conversion data:** Only 6 bits of conversion value (64 possible values) - **Delayed reporting:** 24-48 hour delay before data is available ### Implementing SKAN ```swift import StoreKit // Configure conversion values func configureConversionTracking() { // Update conversion value as user engages with app if #available(iOS 15.4, *) { try? updatePostbackConversionValue( conversionValue: 25, // 0-63 value coarseValue: .medium, // low, medium, high lockWindow: false ) } else if #available(iOS 14.5, *) { SKAdNetwork.updateConversionValue(25) } } // Report SKAN postback func reportSKANEvent() { if #available(iOS 15.1, *) { Task { do { try await requestPostbackOverride() } catch { print("SKAN postback override failed: \(error)") } } } } ``` ## Privacy & Tracking Changes ### iOS: App Tracking Transparency (ATT) iOS 14.5+ requires explicit user consent to track activity across apps and websites using IDFA (Identifier for Advertisers). - **Low consent rates:** Industry average is 25-30% users opt-in to tracking - **SKAN requirement:** Advertisers must use SKAN for privacy-compliant attribution - **Contextual alternatives:** Consider contextual attribution and on-device measurement ### Android: Privacy Sandbox Google is phasing out third-party cookies and moving toward privacy-preserving measurement: - **Topics API:** Advertising categories based on user behavior (not individual browsing) - **Aggregation API:** Aggregated reporting instead of individual-level data - **Google Play Referrer:** Still available but limited data in future ### Best Practices for Privacy-Compliant Attribution - Implement transparent privacy policies - Obtain explicit user consent before tracking - Use aggregated data for analytics and reporting - Comply with GDPR, CCPA, and regional privacy laws - Minimize personal data collection ## Implementation Best Practices ### 1. Multi-Platform Strategy Different platforms require different attribution approaches. Implement a comprehensive strategy that works across iOS and Android. ### 2. Server-Side Tracking Send attribution data to your backend for processing and storage, reducing dependency on client-side tracking. ### 3. Use Attribution Services Consider using services like Redirectly that handle platform-specific APIs and provide unified attribution across iOS and Android. ### 4. Monitor Attribution Quality Regularly audit attribution data for accuracy. Check for discrepancies between app-level and platform-level attribution. ## Start Tracking Attribution Today Redirectly makes mobile install attribution simple and privacy-compliant across iOS and Android platforms. Get started at [Redirectly](https://redirectly.app/index.md) or learn about [deferred deep linking](https://redirectly.app/deferred-deep-linking.md). ## Related - [UTM Parameters for Mobile Apps: Complete Guide](https://redirectly.app/blog/utm-parameters-mobile-apps.md) — Learn how to structure and use UTM parameters in mobile deep links for better campaign tracking. - [Deferred Deep Linking Guide](https://redirectly.app/deferred-deep-linking.md) — Complete guide to implementing deferred deep linking for post-install user routing. --- Full site index for AI agents: https://redirectly.app/llms.txt