Event Tracking
Track in-app events and revenue to measure the effectiveness of your deep links and campaigns.
Track Simple Events
swift
// Using async/await
try await Clippr.track("signup_completed")
// Using completion handler
Clippr.track("signup_completed") { error in
if let error = error {
print("Failed to track: \(error)")
}
}
Track Events with Parameters
swift
try await Clippr.track("add_to_cart", params: [
"product_id": "12345",
"product_name": "Premium Headphones",
"price": 149.99,
"quantity": 1
])
try await Clippr.track("search", params: [
"query": "wireless headphones",
"results_count": 24
])
Track Revenue
swift
// Track a purchase
try await Clippr.trackRevenue(
"purchase",
revenue: 99.99,
currency: "USD",
params: [
"order_id": "ORDER-12345",
"items_count": 3
]
)
// Track subscription
try await Clippr.trackRevenue(
"subscription_started",
revenue: 9.99,
currency: "USD",
params: [
"plan": "premium_monthly",
"trial": false
]
)
// Using completion handler
Clippr.trackRevenue(
"in_app_purchase",
revenue: 4.99,
currency: "USD",
params: ["item": "coin_pack"]
) { error in
if let error = error {
print("Failed: \(error)")
}
}
Common Event Examples
E-commerce
swift
// Product viewed
try await Clippr.track("view_product", params: [
"product_id": product.id,
"name": product.name,
"price": product.price,
"category": product.category
])
// Add to cart
try await Clippr.track("add_to_cart", params: [
"product_id": product.id,
"quantity": 1,
"price": product.price
])
// Purchase
try await Clippr.trackRevenue("purchase", revenue: order.total, currency: "USD", params: [
"order_id": order.id,
"items_count": order.items.count
])
User Lifecycle
swift
// Sign up
try await Clippr.track("sign_up", params: [
"method": "email" // or "apple", "google"
])
// Complete profile
try await Clippr.track("complete_profile", params: [
"fields": ["name", "avatar", "bio"]
])
// Subscribe
try await Clippr.trackRevenue("subscribe", revenue: 9.99, currency: "USD", params: [
"plan": "premium",
"billing": "monthly"
])
Content Engagement
swift
// Article read
try await Clippr.track("read_article", params: [
"article_id": article.id,
"read_time_seconds": 180,
"scroll_depth": 0.85
])
// Share
try await Clippr.track("share", params: [
"content_type": "product",
"content_id": product.id,
"method": "messages"
])
Best Practices
Track After Success
swift
func completePurchase() async throws {
// Create order first
let order = try await orderService.createOrder(cart)
// Only track after success
try await Clippr.trackRevenue(
"purchase",
revenue: order.total,
currency: "USD",
params: ["order_id": order.id]
)
}
Consistent Naming
swift
// Good - snake_case
"sign_up"
"add_to_cart"
"purchase_completed"
// Avoid - inconsistent
"SignUp"
"addToCart"
Include Context
swift
// Good - actionable context
try await Clippr.track("add_to_cart", params: [
"product_id": product.id,
"category": product.category,
"price": product.price,
"source": "product_page"
])
Error Handling
swift
func trackSafely(_ event: String, params: [String: Any]? = nil) {
Task {
do {
try await Clippr.track(event, params: params)
} catch {
// Log but don't block user flow
print("Track failed: \(error)")
}
}
}
Next Steps
- API Reference - Complete API documentation
- Attribution Guide - Understanding attribution