Installation guides
Android (Kotlin)
Track screens, goals and signed-in users in native Android apps with the ProductLense Kotlin library, attributed to the Play Store campaign behind each install.
The ProductLense Android library is plain Kotlin with no required dependencies. It sends screen views, goals and identify from your app to ProductLense, needs no device identifiers, and reports app traffic next to your website: the Hostname breakdown shows your application id beside your domain.
1. Add your app ID
In ProductLense, open Settings → General → App IDs and add your application id, for example com.example.app. Events from any other app id are rejected.
2. Install
dependencies {
implementation("app.productlense:productlense-android:0.1.0")
// optional: Play Store install referrer attribution
implementation("com.android.installreferrer:installreferrer:2.2")
}Android 5.0 (API 21) or later. The library declares the INTERNET permission.
3. Start ProductLense and track screens
import app.productlense.analytics.android.ProductLense
class ExampleApp : Application() {
override fun onCreate() {
super.onCreate()
ProductLense.init(this, siteId = "YOUR_SITE_ID")
}
}
// in each screen
ProductLense.screen("Settings")siteId is on Settings → Snippet; the app id defaults to your application id. Call ProductLense.screen in each activity's onResume, or from a Navigation OnDestinationChangedListener (ProductLense.screen(destination.label.toString())). In Compose, call it in a LaunchedEffect keyed on the route.
ProductLense keeps the install id, the opt-out choice and unsent events in SharedPreferences, sends them every 10 seconds on a background thread, and sends what is left when the app goes to the background.
4. Goals and users
ProductLense.track("signup", mapOf("plan" to "pro"))
ProductLense.identify(user.id, name = user.name, email = user.email)Call identify after sign-in with the user id your billing provider stores on the customer, so app visits, web visits and payments join up. See how payments are attributed.
In-app purchases
Connect RevenueCat and pass the install id once after configuring both SDKs:
Purchases.sharedInstance.setAttributes(ProductLense.revenueCatAttributes())Each purchase then lands on the channel that brought the install.
Attribution
- Play Store: with the
installreferrerlibrary on the classpath, ProductLense reads the install referrer once, in the background, on first launch, and puts itsutm_*tags on the first screen. - Deep links: the intent that launches an activity is read automatically. Pass links that arrive later, in
onNewIntent, toProductLense.openURL(intent.dataString). Onlyutm_*,ref,via,sourceand click ids leave the device.
Privacy
- The library creates a random install id on first launch. It is not the advertising id (AAID). ProductLense stores only a hash of it.
ProductLense.optOut()stops collection, deletes unsent events and forgets the install id;ProductLense.optIn()resumes with a new one.- Google Play data safety: App activity → App interactions, collected for Analytics, not shared.
Verify your installation
- Run the app on a device or emulator and open a few screens.
- Open the Live page in the ProductLense dashboard. Your device appears within a few seconds.
- Open Events: each screen is a
pageviewrow with your application id as the hostname andAndroid appas the browser. - Pass
debug = truetoProductLense.initto log dropped events and failed sends (tagProductLense).
If nothing appears, check the app id in Settings and follow Verify your installation.