Journal · taxonomy
Event naming that survives a rebrand
The most expensive event in a Bangkok marketplace we reviewed last year was called new_home_banner_click_v2. It had survived three designers, two agency retainers, and a “homepage refresh” that no longer contained a banner. The warehouse still received it. Nobody trusted it. Growth kept asking engineering to “just add a new one.”
Screen names are seasonal. Objects are not. In-App Event Tracking Analytics that starts from the UI calendar will always look like a graveyard of campaigns. The Event Schema practice we use in clinic starts the other way: name the noun the business would still recognise after a rebrand, then name the action, then allow the screen as an optional property.
Object, then action, then maybe a surface
Order.placed still means something when checkout moves from a full page to a sheet. checkout_page_submit does not. The object is Order. The action is placed. The surface — web, iOS, a mini-app — belongs in a property if you need to split, not in the event name.
Students often want to encode the campaign in the name: songkran_order_placed. That is a filter, not a new verb. Put campaign on the event if it is known at fire time. If it is only known later, join it in the warehouse. Do not mint a new event for every festival.
Bilingual clients without bilingual chaos
Thai and English product copy will diverge. Event names should not. We keep names in a stable English object vocabulary even when the UI is Thai-only. Properties that carry user-visible strings (search query, coupon label) can stay in the language the user typed. The event name itself is infrastructure, not copy.
If two teams argue about whether something is a Ride or a Trip, stop naming events until that argument is written down. Instrumentation Studio week two is mostly that conversation. It feels slow. It is cheaper than a year of duplicated funnels.
Version instead of mutate
When status used to mean payment and now means logistics, do not silently change the enum. Add payment_status and logistics_status, or bump schema_version and document the cutover date. Silent mutation is how week six of Studio usually discovers that “the dashboard has been wrong since March.”
A small ban list
We ask every dictionary to include events that are not allowed: generic click, button_click, page_view as a substitute for an object view, and anything with _v3 in the name because someone was afraid to delete _v2. Deletion, with a documented end date, is a valid instrumentation act.
If you want the worksheets we use for this, they ship with Atlas Reader and with the Studio seat. The method is also sketched on the Event Schema page. Bring a messy list; a clean list teaches less.