Use PageTracker Instead for Most CasesFor most tracking scenarios, PageTracker is the recommended approach as it integrates better with Permutive’s standard events and provides richer insights. Use EventTracker only for specific use cases where PageTracker doesn’t fit.
Default to PageTracker for most tracking needs. Most customer implementations should primarily use PageTracker with EventTracker reserved for specific cases.
class MyApplication : Application() { override fun onCreate() { super.onCreate() val eventTracker = permutive.eventTracker() eventTracker.track( "AppLaunched", EventProperties.from( "app_version" to BuildConfig.VERSION_NAME, "is_first_launch" to isFirstLaunch() ) ) }}
Background Events
class SyncWorker : Worker(context, params) { override fun doWork(): Result { val eventTracker = permutive.eventTracker() eventTracker.track( "DataSynced", EventProperties.from( "items_synced" to 42, "sync_duration_ms" to 1250 ) ) return Result.success() }}
Button Clicks (Not on a Page)
// In a dialog or overlay that's not a full pageclass RatingDialog : DialogFragment() { fun onRatingSubmitted(rating: Int) { val eventTracker = permutive.eventTracker() eventTracker.track( "AppRated", EventProperties.from( "rating" to rating, "prompt_location" to "after_checkout" ) ) }}
// ❌ WRONG - This should use PageTracker!class ArticleActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val eventTracker = permutive.eventTracker() eventTracker.track("ArticleViewed") // Use PageTracker instead! }}
eventTracker.track( "PurchaseCompleted", EventProperties.from( "order_id" to "ORD-12345", "total_amount" to 99.99, "currency" to "USD", "item_count" to 3, "payment_method" to "credit_card", "shipping_method" to "express" ))