Choose your SDK version below:
- Apptrove SDK → Recommended for all projects (Latest: v2.x.x)
- Trackier SDK → Will be deprecated in August 2026 (Latest legacy: v1.x.xx)
Use the tabs below for SDK-specific snippets.
Uninstall Tracking through Firebase Analytics
The Apptrove Cordova SDK supports uninstall tracking through Firebase Analytics, a feature that monitors when users remove your app from their devices, providing valuable insights into user retention, campaign quality, and potential fraud detection. By integrating with Firebase Analytics and a Firebase Cloud Function, this feature tracks uninstall events on Android using the app_remove event, enabling you to analyze churn rates and optimize marketing strategies. This section outlines how to configure uninstall tracking in your Cordova or Ionic Native application.
For Firebase Cloud Messaging-based uninstall tracking, see Through Cloud FCM.
Prerequisites
- Apptrove Cordova SDK installed and initialized in your project (Apptrove recommended)
- Apptrove account with access to the Apptrove Panel
- Firebase project set up with Firebase Analytics enabled for your Android app
- Firebase Cloud Functions configured in your Firebase project
- Cordova 9.0 or later
- For Ionic Native apps:
- Ionic CLI and Capacitor
@awesome-cordova-plugins/coreinstalled (Trackier legacy only:trackierplugin configured)
- Basic knowledge of JavaScript, TypeScript, Angular (for Ionic Native), Firebase Analytics, and Cordova development
Configure Uninstall Tracking
Uninstall tracking requires setting a common identifier (ct_objectId) using the SDK ID (Apptrove: getAppTroveId, Trackier legacy: getTrackierId), configuring Firebase Analytics to track the app_remove event, and setting up a Firebase Cloud Function to send uninstall data to Apptrove.
Steps to Configure Uninstall Tracking
- Initialize the Apptrove SDK with your SDK key and environment.
- Retrieve the SDK ID and set it as a user property (
ct_objectId) in Firebase Analytics (Apptrove:apptroveCordovaPlugin.getAppTroveId, Trackier legacy:trackierCordovaPlugin.getTrackierId). - Configure Firebase Analytics to track the
app_removeevent as a conversion event. - Set up a Firebase Cloud Function to send uninstall data to the Apptrove, following Apptrove support documentation.
TypeScript Example (Ionic Native)
- ✓ Apptrove SDK (Recommended)
- Trackier SDK (Deprecating August 2026)
import { NgModule } from '@angular/core';
import { AppTroveCordovaPlugin, AppTroveConfig, AppTroveEnvironment } from 'com.apptrove.cordova_sdk/ionic-native/apptrove/ngx';
import { FirebaseAnalyticsService } from './services/firebase-analytics.service';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, IonicModule.forRoot()],
providers: [AppTroveCordovaPlugin],
bootstrap: [AppComponent],
})
export class AppModule {
constructor(
private apptroveCordovaPlugin: AppTroveCordovaPlugin,
private firebaseAnalytics: FirebaseAnalyticsService
) {
this.initializeAppTroveSDK();
}
private initializeAppTroveSDK() {
const key = "your-sdk-key-here";
const appTroveConfig = new AppTroveConfig(key, AppTroveEnvironment.Development);
this.apptroveCordovaPlugin.initializeSDK(appTroveConfig).then(() => {
console.log("AppTrove SDK initialized successfully.");
// Set AppTrove ID as Firebase User Property for uninstall tracking
this.apptroveCordovaPlugin.getAppTroveId()
.then(val => this.firebaseAnalytics.setUserProperty("ct_objectId", val))
.catch(e => console.log('error: ', e));
}).catch((error) => {
console.error("Error initializing AppTrove SDK:", error);
});
}
}
import { NgModule } from '@angular/core';
import { TrackierCordovaPlugin, TrackierConfig, TrackierEnvironment } from '@awesome-cordova-plugins/trackier/ngx';
import { FirebaseAnalyticsService } from './services/firebase-analytics.service';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, IonicModule.forRoot()],
providers: [TrackierCordovaPlugin],
bootstrap: [AppComponent],
})
export class AppModule {
constructor(
private trackierCordovaPlugin: TrackierCordovaPlugin,
private firebaseAnalytics: FirebaseAnalyticsService
) {
this.initializeTrackierSDK();
}
private initializeTrackierSDK() {
const key = "your-sdk-key-here";
const trackierConfig = new TrackierConfig(key, TrackierEnvironment.Development);
this.trackierCordovaPlugin.initializeSDK(trackierConfig).then(() => {
console.log("Trackier SDK initialized successfully.");
// Set Trackier ID as Firebase User Property for uninstall tracking
this.trackierCordovaPlugin.getTrackierId()
.then(val => this.firebaseAnalytics.setUserProperty("ct_objectId", val))
.catch(e => console.log('error: ', e));
}).catch((error) => {
console.error("Error initializing Trackier SDK:", error);
});
}
}
Firebase Analytics Service
import { Injectable } from '@angular/core';
declare var window: any;
@Injectable({
providedIn: 'root'
})
export class FirebaseAnalyticsService {
async setUserProperty(name: string, value: string): Promise<void> {
try {
if (window.FirebaseAnalytics) {
await window.FirebaseAnalytics.setUserProperty({ name, value });
console.log(`Firebase Analytics: Set user property ${name} = ${value}`);
} else {
console.warn('Firebase Analytics not available');
}
} catch (error) {
console.error('Error setting Firebase user property:', error);
}
}
}
JavaScript Example (Pure Cordova)
- ✓ Apptrove SDK (Recommended)
- Trackier SDK (Deprecating August 2026)
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
// Initialize SDK
const key = "your-sdk-key-here";
const appTroveConfig = new AppTroveConfig(key, AppTroveEnvironment.Development);
AppTroveCordovaPlugin.initializeSDK(appTroveConfig).then(() => {
console.log("AppTrove SDK initialized successfully.");
// Set AppTrove ID as Firebase User Property for uninstall tracking
AppTroveCordovaPlugin.getAppTroveId()
.then(val => {
if (window.FirebaseAnalytics) {
window.FirebaseAnalytics.setUserProperty({ name: "ct_objectId", value: val });
console.log(`Firebase Analytics: Set user property ct_objectId = ${val}`);
}
})
.catch(e => console.log('error: ', e));
}).catch((error) => {
console.error("Error initializing AppTrove SDK:", error);
});
}
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
// Initialize SDK
const key = "your-sdk-key-here";
const trackierConfig = new TrackierConfig(key, TrackierEnvironment.Development);
TrackierCordovaPlugin.initializeSDK(trackierConfig).then(() => {
console.log("Trackier SDK initialized successfully.");
// Set Trackier ID as Firebase User Property for uninstall tracking
TrackierCordovaPlugin.getTrackierId()
.then(val => {
if (window.FirebaseAnalytics) {
window.FirebaseAnalytics.setUserProperty({ name: "ct_objectId", value: val });
console.log(`Firebase Analytics: Set user property ct_objectId = ${val}`);
}
})
.catch(e => console.log('error: ', e));
}).catch((error) => {
console.error("Error initializing Trackier SDK:", error);
});
}
Step 2: Configure Firebase Analytics
- Log in to your Firebase Console.
- Navigate to Analytics > Events.
- Ensure the
app_removeevent is marked as a conversion event. - Verify that Firebase Analytics is correctly integrated into your Android app.
Step 3: Set Up Firebase Cloud Function
Prerequisites
- Node.js 20.x or 22.x (use nvm for easy version management)
- Firebase CLI (
npm install -g firebase-tools) - Firebase project on Blaze plan (required for analytics triggers)
- Google account with access to Firebase Console
- App with Firebase Analytics SDK integrated
- Apptrove account (for uninstall event tracking)
Set Up Node.js and Firebase CLI
# Install Node Version Manager (nvm) if not already installed
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# Install and use Node.js 22 (recommended)
nvm install 22
nvm use 22
# Install Firebase CLI globally
npm install -g firebase-tools
# Login to Firebase
firebase login