Journal
An activation tree without drowning in events
The first time a team shows us their “activation board,” it usually has thirty-something events, half of them aliased, three of them named user_engaged with different properties. Nobody can say which one is the KPI. That board is not a tree. It is a junk drawer with a label.
Proxy Nodecore’s rule in Activation KPI Design is deliberately tight: three layers, twelve events or fewer feeding the activation number. Quality metrics, feature adoption, and upsell live elsewhere. If an event cannot change what you do on Friday, it does not belong on the tree.
Layer A is one number
Layer A is the activation KPI: new users in the cohort who completed the first-value verb inside the window. One number. Not a stack of variants for iOS, Android, and web unless those products truly activate differently — in which case you have two trees, not one chart with a filter.
Layer B is precursors, not a funnel cosplay
Layer B holds the two or three things that must happen before first value: account created, KYC passed, first search with results, first listing with a photo. These are not “funnel steps” to be optimised independently until they forget the verb at the top. If a precursor rises while Layer A is flat, you found a vanity gate.
We keep B small on purpose. Five precursors means five meetings. Two or three means a conversation.
Layer C is only the blockers
Layer C is quality and permission gates that stop first value: camera denied, empty search, crash before checkout, KYC selfie failure. Crash-free sessions as a company metric can live on an engineering dashboard. On the activation tree we only keep the crash that occurs on the activation path.
How events get onto the tree
Each event needs a name engineering will type without improvising, a trigger sentence (“fires once when…”), and an exclusion (“does not fire when…”). If the trigger sentence takes a paragraph, the event is doing two jobs. Split it or delete it.
Aliases are treated as bugs. In Event Taxonomy for Activation we spend a half-day just retiring duplicate names. The activation tree cannot be honest while first_order and order_completed_v2 both claim to be first value.
Twelve is not a mystical number. It is a shipping number. Beyond that, the 30-day backlog in the flagship studio stops being believable, and engineering quietly ignores it. A smaller tree that ships beats a beautiful forest that never leaves Figma.