Event Tracking
Track in-app events and revenue to measure campaign effectiveness.
Track Simple Events
kotlin
// Using coroutines
lifecycleScope.launch {
Clippr.track("signup_completed")
}
// Using callback
Clippr.track("signup_completed") { error ->
if (error != null) {
Log.e("Clippr", "Failed to track", error)
}
}
Track Events with Parameters
kotlin
lifecycleScope.launch {
Clippr.track("add_to_cart", mapOf(
"product_id" to "12345",
"product_name" to "Premium Headphones",
"price" to 149.99,
"quantity" to 1
))
}
Track Revenue
kotlin
// Track purchase
lifecycleScope.launch {
Clippr.trackRevenue(
eventName = "purchase",
revenue = 99.99,
currency = "USD",
params = mapOf(
"order_id" to "ORDER-12345",
"items_count" to 3
)
)
}
// Track subscription
lifecycleScope.launch {
Clippr.trackRevenue(
eventName = "subscription_started",
revenue = 9.99,
currency = "USD",
params = mapOf(
"plan" to "premium_monthly"
)
)
}
// Using callback
Clippr.trackRevenue("in_app_purchase", 4.99, "USD", mapOf("item" to "coins")) { error ->
if (error != null) Log.e("Clippr", "Failed", error)
}
Common Events
E-commerce
kotlin
// Product viewed
Clippr.track("view_product", mapOf(
"product_id" to product.id,
"name" to product.name,
"price" to product.price,
"category" to product.category
))
// Add to cart
Clippr.track("add_to_cart", mapOf(
"product_id" to product.id,
"quantity" to 1,
"price" to product.price
))
// Purchase
Clippr.trackRevenue("purchase", order.total, "USD", mapOf(
"order_id" to order.id,
"items_count" to order.items.size
))
User Lifecycle
kotlin
// Sign up
Clippr.track("sign_up", mapOf("method" to "email"))
// Complete profile
Clippr.track("complete_profile", mapOf(
"fields" to listOf("name", "avatar", "bio")
))
// Subscribe
Clippr.trackRevenue("subscribe", 9.99, "USD", mapOf(
"plan" to "premium",
"billing" to "monthly"
))
Java Usage
java
// Track event
Clippr.track("signup_completed", null, error -> {
if (error != null) {
Log.e("Clippr", "Failed", error);
}
});
// Track with params
Map<String, Object> params = new HashMap<>();
params.put("product_id", "123");
params.put("price", 29.99);
Clippr.track("add_to_cart", params, null);
// Track revenue
Clippr.trackRevenue("purchase", 99.99, "USD", params, null);
Best Practices
Track After Success
kotlin
suspend fun completePurchase() {
val order = orderService.createOrder(cart)
// Only track after success
Clippr.trackRevenue("purchase", order.total, "USD", mapOf(
"order_id" to order.id
))
}
Consistent Naming
kotlin
// Good
"sign_up"
"add_to_cart"
"purchase_completed"
// Avoid
"SignUp"
"addToCart"
Include Context
kotlin
Clippr.track("add_to_cart", mapOf(
"product_id" to product.id,
"category" to product.category,
"price" to product.price,
"source" to "product_page" // Where the action happened
))
Error Handling
kotlin
fun trackSafely(event: String, params: Map<String, Any>? = null) {
lifecycleScope.launch {
try {
Clippr.track(event, params)
} catch (e: Exception) {
Log.e("Clippr", "Track failed: $event", e)
}
}
}
Next Steps
- API Reference - Complete API documentation
- Attribution Guide - Understanding attribution