The most expensive event in a consumer app is rarely the one that fails to fire. It is the one that fires under two names for three years. Growth called it purchase_ok. Core called it checkout_complete. Finance invented a warehouse view that preferred the first and silently dropped the second during a schema migration. Nobody was lying. The language had drifted.
In the Event Taxonomy Atelier we ask seats to print last month’s unique event names and sort them into three piles: load-bearing, decorative, and haunted. Haunted names still fire, still appear in someone’s dashboard, and no longer have an owner who will defend them in a meeting. They are not harmless. They teach new joiners that the schema is a rumour.
Past tense, object first
We prefer names that describe a completed fact about the product, not a mood about the tool. article_read finishes more cleanly than MixpanelContentView. If you change vendors, you should not have to rename history. If a designer changes a screen title, the event should still parse.
A good event name is a sentence a successor can finish without Slack.
Properties carry the variation: surface, source, plan_tier. The event stays boring on purpose. Boring names are kind to warehouse costs and kinder to people who arrive after you leave.
Retire in public
Deprecation is a dated note in the dictionary, a dual-write window if you must, and a date after which the old name is treated as a bug. Quiet aliases feel polite and become a second haunted pile. Studio Bench marks the deprecation log as a first-class artefact, equal to the readout. If you only have time for one document this quarter, write the log. Charts can wait.