Events vs Properties vs User Traits
The most common mistake in product instrumentation is conflating three distinct data constructs. Getting this right at setup prevents months of schema cleanup later.
Events are actions a user takes at a specific moment in time. They are verbs: signup_completed, report_exported, payment_initiated. Every event should answer: what happened, when, and who did it.
Properties are metadata attached to a specific event. When a user exports a report, properties might include: report_type: "revenue", format: "PDF", filters_applied: true. Properties transform raw events into analysable data points.
User Traits are persistent attributes of a user that change over time but describe who they are, not what they just did: plan: "Growth", company_size: "51-200", industry: "fintech", country: "India". Traits allow segmentation of any funnel or cohort.
Naming Conventions That Scale
Adopt the Object-Action naming pattern from day 1 — it is the industry standard used by Amplitude, Segment, and Mixpanel internally:
- Format:
object_action— e.g.dashboard_viewed,invoice_created,team_member_invited - Always snake_case, always lowercase — avoid camelCase and spaces
- Be specific about the object —
report_exportednotexport_clicked - Use past tense for completed actions —
payment_completednotpayment_complete - Never embed user IDs, timestamps, or amounts in event names — those belong in properties
What to Instrument on Day 1
Do not try to track everything. Instrument the 10 events that map your core user journey first:
- Acquisition:
signup_started,signup_completed,email_verified - Activation:
onboarding_step_completed(with step name as property),aha_moment_reached(your product-specific activation event) - Core Value Loop: The 2–3 events that represent the primary action users take when they get value from your product
- Engagement:
session_started,feature_used(with feature name property) - Revenue:
plan_upgraded,payment_completed,subscription_cancelled