Every analytics failure you'll debug next quarter was a tracking spec nobody wrote this quarter. This playbook turns a feature spec into a complete event tracking plan — names, properties, triggers — drafted inside your org's existing taxonomy, with an AI naming-drift check before data engineering ever sees it.
Workflow area: Analytics & Experimentation · Tier: Foundation · Hands-on time: ~30 minutes
Instrumentation is specified at the worst possible moment: end of the build, in a hurry, by pattern-matching against whatever events already exist. The result is approvalSubmitted living next to expense_approved and Submit_Approval_v2, and a funnel analysis six months later that silently misses a third of the traffic. AI is genuinely good at both halves of the fix: enumerating what a feature needs tracked, and holding fifty existing event names in mind while naming the new ones consistently.
Export the current taxonomy. Pull the event and property list from Amplitude, Mixpanel, Avo, or your Segment tracking plan — names, properties, and (if available) descriptions. This is the model's style guide; without it you'll get generically sensible names that match nothing you have.
Draft the spec against the taxonomy. In Claude or ChatGPT:
Draft an event tracking spec for this feature, strictly following
our existing taxonomy's conventions.
Feature spec: [PASTE PRD SECTION / STORIES]
Questions we need to answer: [e.g. "adoption of bulk approval;
where the flow drops off; effect on time-to-approve"]
Existing taxonomy: [PASTE EVENT + PROPERTY EXPORT]
For each proposed event:
- name (matching our convention EXACTLY — infer the convention
from the export and state what you inferred)
- trigger: precise user/system action, including NON-triggers
(e.g. "fires on server confirm, not button click")
- properties: name, type, allowed values, example
- which question above it serves
Rules: reuse an existing event with a new property over creating a
near-duplicate event — flag every such reuse for review. Do not
propose events that serve no listed question. List open decisions
(identity, consent gating, sampling) separately for humans.
Check the convention the model inferred. Good output leads with:
Inferred convention: object_action, snake_case, past tense
(expense_submitted, report_exported); properties camelCase.
EVENTS
expense_bulk_approved
- Trigger: server confirms batch approval (NOT on click; partial
failures fire expense_bulk_approve_failed instead)
- Properties: batchSize (int, 2-50), queueAgeDays (float),
approverRole (enum: admin|manager)
- Serves: adoption, time-to-approve
REUSE FLAG: consider expense_approved + isBulk property instead —
pro: funnel continuity; con: batchSize semantics. Decision needed.
If the inferred convention is wrong, your export has drift worth fixing — which is its own finding. Decide every REUSE FLAG yourself: reuse-vs-new-event determines whether historical funnels keep working, and that's a product-analytics judgment, not a naming one.
Run the drift check as a separate pass. "Compare my proposed events against the existing taxonomy: list any naming inconsistencies, near-duplicates of existing events, or property-name collisions where the same concept has different names (userRole vs approverRole)." Fix what it finds; this two-minute pass is the difference between a taxonomy and a pile.
Walk the triggers against the actual UX flow. For each event, point at the exact moment in the design where it fires, and confirm the edge cases: does the event fire on retry? on partial failure? on back-button? Trigger ambiguity — not naming — is the number-one source of wrong dashboards, and only someone who knows the flow can resolve it.
Hand to data engineering as a draft. They own identity resolution, consent gating, delivery guarantees, and the final word on the plan. Your spec arriving consistent and question-driven is what makes that review fast.
Never spec properties that capture emails, names, free-text user input, or government IDs into product analytics — that's PII entering a system with different retention and access rules than your database, and in most privacy regimes it's a violation, not a shortcut. Review every property list with that lens before implementation.
Consistent instrumentation is a compounding asset and drift is a compounding tax — AI makes convention-compliance nearly free at spec time, which is the only time it's cheap. Specify events when you specify behavior, and next quarter's funnel analysis will just work.