Android Uninstall Tracking Setup
Track app uninstalls on Android to measure user retention, identify low-quality traffic sources, and optimize campaign performance using Firebase Cloud Messaging integration with Singular SDK.
Firebase Migration Required: Firebase deprecated the legacy HTTP API and shut down on July 22, 2024. All implementations must use HTTP v1 API. See HTTP v1 Setup Instructions below.
Overview
How Uninstall Tracking Works
Singular detects app uninstalls by sending silent push notifications via Firebase Cloud Messaging and monitoring delivery responses to determine if the app remains installed on devices.
Technical Process:
- Token Registration: Singular SDK registers FCM tokens with Singular servers
- Silent Notifications: Singular sends periodic silent push notifications to registered devices
- Delivery Feedback: FCM reports delivery success or failure
- Uninstall Detection: Failed deliveries indicate app uninstall
- Event Recording: Uninstall event attributed to original install source
Requirements
- SDK Version: Android SDK 7.0+ required for uninstall tracking
- Firebase Setup: Active Firebase project with Cloud Messaging enabled
- Google Play Services: Devices must have Google Play Services installed
- App Update: Users must install updated app version with uninstall tracking enabled
- Permissions: Android 13+ requires explicit notification permission for FCM token generation
Important Considerations
Key Points:
- Methodology Differences: Singular's uninstall tracking differs from Google's built-in reporting. Google reports uninstalls directly from the OS, while Singular uses FCM delivery feedback. Numbers may vary between platforms.
- Attribution Preservation: Uninstalls are tracked as events without removing the original attribution link. Users may uninstall and reinstall multiple times, potentially resulting in uninstall rates exceeding 100%.
- Batch Processing: Uninstall detection is batch-based, relying on FCM response feedback. Expect up to 24 hours for uninstall data to appear in Singular dashboard.
- Network Dependency: Silent push notifications require active network connection. Devices offline for extended periods may delay uninstall detection.
Domain Restricted Sharing
If your Google Organization has Domain Restricted Sharing enabled, grant Singular Organization access to enable uninstall tracking functionality.
Required Configuration: Add Singular's Organization ID to your Domain Restricted Sharing policy's Allowed Values list.
Configuration Steps:
- Access Organization Policies: Navigate to Organization Policies page in Google Cloud Console
- Select Resource: Choose the organization where policy is configured
- Find Constraint: Locate "Domain Restricted Sharing" constraint
- Manage Policy: Click "Manage policy" button
- Add Singular Organization: Under Policy Values, select Custom and add the following:
is:principalSet://iam.googleapis.com/organizations/626787461583
This grants Singular's service account access to send FCM notifications for uninstall detection.
HTTP v1 API Setup (Recommended)
Configure uninstall tracking using Firebase Cloud Messaging HTTP v1 API with improved security via OAuth 2.0 access tokens and enhanced cross-platform messaging support.
Why HTTP v1? The v1 API provides better security through short-lived access tokens, more efficient cross-platform customization, and ongoing Firebase support for new features. The legacy HTTP API was shut down on July 22, 2024.
Step 1: Integrate Android SDK 7.x+
Update SDK Version
Upgrade to Android SDK 7.0 or higher to enable uninstall tracking functionality.
Gradle Configuration:
dependencies {
// Singular Android SDK 7.x+
implementation("com.singular.sdk:singular_sdk:12.6.2")
}
Complete integration guide: Android SDK Integration Guide
Step 2: Configure AndroidManifest.xml
Add FCM Receiver
Configure Android manifest to receive FCM notifications for uninstall detection.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.your.package">
<!-- FCM Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application>
<!-- Singular FCM Receiver Service -->
<service
android:name="com.singular.sdk.SingularFcmService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
Detailed manifest configuration: Android SDK Uninstall Tracking Guide
Step 3: Create Firebase Project
Initialize Firebase
Set up a Firebase project and retrieve the Project ID required for Singular configuration.
- Open Firebase Console: Navigate to Firebase Console
- Create Project: Select or create a new Firebase project for your app
- Locate Project Settings: Click gear icon → Project Settings
- Copy Project ID: Copy your Project ID from General tab (you'll enter this in Singular later)
Step 4: Enable Firebase Cloud Messaging API
Activate HTTP v1 API
Enable the Firebase Cloud Messaging API (v1) for your project to use the modern HTTP v1 protocol.
- Navigate to Cloud Messaging: In Firebase Console, go to Project Settings → Cloud Messaging tab
- Enable API: Click "Enable" next to Firebase Cloud Messaging API (V1)
- Verify Activation: Confirm API status shows as "Enabled"
Important: The Firebase Cloud Messaging API (V1) is different from the legacy Cloud Messaging API. Ensure you enable the correct v1 version.
Step 5: Create Custom IAM Role
Configure Service Account Permissions
Create a custom IAM role with specific permissions for Singular to send FCM notifications for uninstall detection.
- Access IAM: In Firebase Project Settings → Service Accounts → Manage service account permissions
- Open Roles: Select "Roles" in left navigation menu
- Create Role: Click "Create Role" button
-
Configure Role Details:
-
Title:
Singular Uninstall Tracking -
ID:
singular_uninstalls -
Role launch stage:
General Availability
-
Title:
Add Required Permission
Grant the custom role permission to send FCM messages.
- Add Permissions: Click "Add Permissions" button
- Filter Permissions: Search for "Firebase Cloud Messaging API Admin"
-
Select Permission: Check
cloudmessaging.messages.create - Add to Role: Click "Add" button
- Create Role: Click "Create" to finish role creation
Step 6: Assign Singular Service Account
Grant Access to Singular
Assign the custom role to Singular's service account to authorize uninstall tracking operations.
- Open IAM Page: Select "IAM" in left navigation menu
- Grant Access: Click "Grant Access" button in Permissions tab
-
Add Principal: Under "New principals" field, enter:
singular-uninstall-tracking@singular-uninstall-tracking.iam.gserviceaccount.com
Assign Custom Role
Select the "Singular Uninstall Tracking" role created in previous steps.
- Select Role: Under "Assign roles", search for and select "Singular Uninstall Tracking"
- Verify Configuration: Confirm setup matches the screenshot below
- Save: Click "Save" button to apply permissions
Final Configuration:
Step 7: Configure Singular App Settings
Add Project ID to Singular
Enter your Firebase Project ID in Singular's app configuration to enable uninstall tracking.
- Open Singular Apps: Navigate to Singular Apps Page
- Select App: Choose your Android app from the list
- Advanced Settings: Scroll to Advanced Settings section
- Uninstall Tracking: Locate Uninstall Tracking configuration
- Enter Project ID: Paste your Firebase Project ID from Step 3
- Save: Click Save to apply configuration
Verification: After saving, Singular will validate the Project ID and IAM permissions. If validation fails, double-check the service account configuration in Firebase.
Testing Uninstall Tracking
Verify uninstall tracking is configured correctly before releasing updated app to production.
Test Procedure
Validation Steps
- Install Test Build: Deploy app with uninstall tracking enabled to test device
- Launch App: Open app to trigger SDK initialization and FCM token registration
- Verify Token Registration: Check SDK logs for successful FCM token registration with Singular
- Wait for Batch Process: Allow 24-48 hours for Singular to send first silent notification
- Uninstall App: Remove app from test device
- Monitor Dashboard: Check Singular dashboard after 24-48 hours for uninstall event
Testing Timeline: Uninstall tracking is batch-based and may take up to 48 hours to detect and report uninstalls. This delay is expected behavior.
SDK Log Verification
Check Android logcat for Singular SDK messages confirming proper configuration.
Expected Log Messages:
D/SingularSDK: FCM token registered successfully
D/SingularSDK: Uninstall tracking enabled
D/SingularSDK: Token sent to Singular servers
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| No FCM token generated | Firebase not configured correctly |
Verify google-services.json is in app/
directory and Firebase plugin applied in build.gradle
|
| Permission denied errors in logs | IAM role not assigned correctly | Double-check Singular service account has "Singular Uninstall Tracking" role in Firebase IAM |
| Token not reaching Singular | Network connectivity or SDK not initialized | Ensure app has internet permission and Singular SDK is initialized before FCM token registration |
| Uninstalls not appearing in dashboard | Batch processing delay or insufficient time elapsed | Wait full 48 hours after app uninstall before investigating further |
| API validation failure in Singular | HTTP v1 API not enabled in Firebase | Verify Firebase Cloud Messaging API (V1) is enabled in Cloud Messaging settings |
Legacy HTTP API (Deprecated)
Legacy HTTP API was shut down on July 22, 2024. All implementations must migrate to HTTP v1 API.
Discontinued: The legacy HTTP API is no longer functional. If you're using legacy Server Key configuration, migrate to HTTP v1 API immediately using the instructions above.
Migration Required
If your app currently uses the legacy HTTP API with Server Key and Sender ID configuration, follow these migration steps:
- Review Current Configuration: Check if Singular app settings show "Server Key" field instead of "Project ID"
- Follow HTTP v1 Setup: Complete all steps in HTTP v1 API Setup section above
- Update App Configuration: Replace Server Key with Firebase Project ID in Singular settings
- Test Implementation: Verify uninstall tracking works with new v1 API configuration
- Release Update: Deploy updated app to production users
Migration guide: Firebase HTTP v1 API Migration
Benefits of HTTP v1 API
- Enhanced Security: Uses short-lived OAuth 2.0 access tokens instead of static server keys
- Better Cross-Platform Support: Unified message structure for Android, iOS, and web
- Platform-Specific Overrides: Customize notification behavior per platform in single request
- Future-Proof: Ongoing Firebase support and new features only available in v1
- Improved Error Handling: More detailed error responses for troubleshooting
Analyzing Uninstall Data
Use uninstall data in Singular reports to optimize campaign performance and identify traffic quality issues.
Available Metrics
Uninstall Tracking Metrics
- Uninstall Count: Total number of app uninstalls detected
- Uninstall Rate: Percentage of installs that resulted in uninstalls
- Days to Uninstall: Average time between install and uninstall events
- Uninstalls by Source: Breakdown of uninstalls by campaign, publisher, creative
- Cohort Analysis: Uninstall patterns across different user cohorts
Use Cases
Campaign Optimization:
- Identify campaigns driving low-quality traffic with high uninstall rates
- Compare uninstall rates across different traffic sources
- Optimize bidding strategies based on predicted user retention
Fraud Detection:
- Detect abnormal uninstall patterns indicating install fraud
- Flag publishers with suspiciously high uninstall rates
- Monitor time-to-uninstall for signs of bot traffic
User Retention Analysis:
- Track app stickiness and engagement over time
- Correlate uninstalls with app updates or feature releases
- Identify factors contributing to user churn
Best Practices
Optimization Strategies
- Set Benchmarks: Establish acceptable uninstall rate thresholds for different campaign types
- Monitor Trends: Track uninstall rates over time to identify seasonal patterns or anomalies
- Segment Analysis: Compare uninstall rates across user demographics, geographies, and devices
- Attribution Windows: Consider uninstall timing when evaluating campaign performance
- Quality Scoring: Incorporate uninstall rates into traffic quality scoring models