Skip to main content

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