Naming events
Good names make every chart readable a year later. A few rules cover most of it.
Name what the person did, in the past or present tense, in snake_case
Section titled “Name what the person did, in the past or present tense, in snake_case”| Do | Don’t |
|---|---|
signup_completed |
Signup, signupCompleted, click_button_3 |
paywall_view |
PaywallViewController_viewDidAppear |
export_started |
export (started? finished? failed?) |
Use one style everywhere. Names are case-sensitive, so Purchase and purchase are two events.
Put the variable part in a property, not the name
Section titled “Put the variable part in a property, not the name”Track screen_view with screen: "settings", not settings_screen_view, profile_screen_view, and so on. One event with a property can be broken down, filtered and used in a funnel step. Twenty events cannot.
Millimetry.track("screen_view", ["screen": "settings"])Millimetry.track("purchase", ["plan": "pro", "period": "yearly", "price": 39.99])The dashboard’s screen breakdown reads the screen property, so use that exact key for screens.
Keep properties low-cardinality
Section titled “Keep properties low-cardinality”A property is useful when it has a handful to a few hundred values: a plan, a screen, a theme, a step number. A value that is different every time (a timestamp, a free-text search, an order number) makes a breakdown with one row per event, and it may identify someone. Use numbers for amounts and counts. The dashboard shows sums, averages and percentiles for number properties.
Never send personal data
Section titled “Never send personal data”No names, email addresses, phone numbers, account or customer IDs, device IDs, precise locations or free text typed by a person. Millimetry drops properties named like personal data (email, phone, user_id, name and others) and values that look like an email, a phone number or a UUID. That is a safety net. Your terms make you responsible for what you send.
Plan the funnel before the event
Section titled “Plan the funnel before the event”Write down the funnel first, then name its steps: onboarding_started → permissions_granted → first_project_created. Funnels in Millimetry count sessions that do the steps in order within a time window, so each step should be one event.
Limits
Section titled “Limits”| What | Limit |
|---|---|
| Event name | 1–64 characters, no control characters; $… and, on websites, pageview are reserved |
| Properties per event | 25 (extra ones are dropped) |
| Property key | 1–64 characters |
| String value | 256 characters (longer values are cut) |
| Number value | any finite number |
| Event time | up to 7 days in the past; up to 10 minutes in the future is treated as now |