Naming events you can still read
Two years is the test. If a new hire cannot read an event name and guess the user action, the name has become folklore. Folklore is expensive: it is explained in Slack, then explained again, then quietly avoided.
In the Event Schema Atelier we treat names as copy. Past-tense verbs. Objects that exist in the product, not in the codebase. checkout_completed is a claim. btn_cta_2 is a dare.
The day a schema became folklore
A studio cohort brought a property called plan that meant tariff, then recipe plan, then a flag for enterprise. Three teams, one key. The chart still rendered. The argument in the room did not.
We do not ban overloaded words because we are precious. We ban them because a join on plan will eventually ship a lie into a board pack, and nobody will remember which meaning won.
Version in the dictionary, not in the event soup
When a meaning shifts, write an obituary: old name, last date, what replaced it. Do not append _v2 forever as a personality. A short change log next to the taxonomy does more for app analytics quality than another auto-capture SDK.
If engineering insists on screen-level names during a redesign, keep them in a private debug stream. The public dictionary stays in user language. That split is a political act inside the company, and it is worth the meeting.