Best Practices
Event Naming Conventions
Use snake_case for consistency.
Good:
"user_signed_up"
"product_added_to_cart"
"video_playback_started"
Avoid:
"UserSignedUp" // camelCase
"product-added-to-cart" // kebab-case
"ProductAdded" // PascalCase
Property Naming Conventions
sdk.logEvent(
name = "purchase_completed",
properties = mapOf(
"product_id" to "SKU-123",
"product_name" to "Sneakers",
"product_price" to 299.90,
"order_id" to "ORD-456",
"order_total" to 299.90
)
)
Privacy & Sensitive Data
Never track personally identifiable information (PII).
Never track: passwords, credit card numbers, social security numbers, health information.
// WRONG
sdk.logEvent(
name = "payment_completed",
properties = mapOf(
"credit_card_number" to "1234-5678-9012-3456" // NEVER!
)
)
// CORRECT
sdk.logEvent(
name = "payment_completed",
properties = mapOf(
"payment_method" to "credit_card",
"card_type" to "visa",
"last_four_digits" to "3456" // Last 4 only
)
)
Use Application Context
Always use applicationContext to avoid memory leaks:
// CORRECT
val sdk = B2MetricSDK.getInstance(applicationContext)
// WRONG — May cause memory leak
val sdk = B2MetricSDK.getInstance(this) // Inside Activity