Growth Marketing skill 12 of 13
Tracking Plan and Event Taxonomy SKILL.md
The Tracking Plan skill makes Claude, Codex or another AI agent design trustworthy analytics for Amplitude, Mixpanel, PostHog, GA4, Segment, RudderStack or warehouse-first setups. It ties every event to a metric, sets object_action naming, defines event, user and group properties, identity and consent rules, decides client versus server tracking, audits messy events and sets QA and governance.
tracking-plan/SKILL.md, version 1.0.0, 1,416 words.
By Afeez Adebayo, Marketing, SEO & Growth Expert with 10+ years of experience.
Created 10 October 2026. Updated 10 October 2026. Free to use under CC BY 4.0.
Every growth decision depends on data, and most data problems start with tracking: events named differently on web and app, properties missing on half the events, activation defined three ways in three dashboards, and nobody sure what "signed_up" actually means. A tracking plan fixes this. It is a living document that defines which events and properties are tracked, why, where and how they're named, and who owns them.
This skill designs tracking plans and event taxonomies for product analytics (Amplitude, Mixpanel, PostHog, GA4, Segment, RudderStack or warehouse-first setups), audits existing tracking and sets governance so data stays trustworthy.
Operating principles
- Track decisions, not everything. Each event exists because a metric or question needs it.
- Consistent naming. One convention (for example object_action in lower snake case) across platforms.
- Properties carry context. Fewer events with rich properties beat many near-duplicate events.
- One definition per metric. Activation, active user and conversion are defined once and reused.
- Governance keeps it clean. Owners, reviews and QA before releases.
Event design
| Element | Guidance | Example |
|---|---|---|
| Event name | object_action, past tense, lower snake case | project_created, invoice_sent |
| Event properties | Context about the action | template_used, item_count, source |
| User properties | Who the user is | plan, role, signup_channel, country |
| Group properties (B2B) | Account or workspace context | company_size, account_plan |
| Identity | Anonymous ID before sign-up, user ID after, merged | Consistent across web and app |
| Consent | Respect consent for analytics and advertising | Consent state recorded |
When to use, and when not to
Use it when starting analytics, when numbers disagree between tools, before a redesign or new app, when adding a CDP, and when growth analyses keep hitting data gaps.
Don't use it for ad platform conversion tracking (the Performance Marketing conversion-tracking-capi skill) or for analysis itself (funnel-analysis, cohort-retention-analysis).
Inputs to ask for, in one message
- Product surfaces: web, iOS, Android, backend, marketing site.
- Analytics and data tools in use.
- Current event list and properties, with volumes.
- Key metrics: north star, activation, retention, conversion definitions.
- Engineering ownership and release process.
- Consent requirements by market.
Raw SKILL.md file
This is the exact file agents read, including the credit header and licence notice. Save it as tracking-plan/SKILL.md.
--- name: tracking-plan description: "Design tracking plans and event taxonomies for product analytics in Amplitude, Mixpanel, PostHog, GA4, Segment, RudderStack or the warehouse: events tied to metrics, object_action naming, event, user and group properties, identity and consent rules, client versus server decisions, audits of messy tracking, QA before release and governance with owners. Use whenever someone asks for a tracking plan, event taxonomy, analytics instrumentation, naming conventions for events, why analytics numbers disagree, cleaning up events or preparing analytics for a new app." license: CC-BY-4.0 metadata: author: Afeez Adebayo author_url: https://afeezadebayo.com author_linkedin: https://www.linkedin.com/in/afeez-adebayo/ author_x: https://x.com/za_icon source: https://afeezadebayo.com/skills-md/marketing/growth-marketing/tracking-plan/ category: marketing subcategory: growth-marketing version: "1.0.0" created: "2026-10-10" updated: "2026-10-10" --- # Tracking Plan and Event Taxonomy Every growth decision depends on data, and most data problems start with tracking: events named differently on web and app, properties missing on half the events, activation defined three ways in three dashboards, and nobody sure what "signed_up" actually means. A tracking plan fixes this. It is a living document that defines which events and properties are tracked, why, where and how they're named, and who owns them. This skill designs tracking plans and event taxonomies for product analytics (Amplitude, Mixpanel, PostHog, GA4, Segment, RudderStack or warehouse-first setups), audits existing tracking and sets governance so data stays trustworthy. ## Operating principles 1. **Track decisions, not everything.** Each event exists because a metric or question needs it. 2. **Consistent naming.** One convention (for example object_action in lower snake case) across platforms. 3. **Properties carry context.** Fewer events with rich properties beat many near-duplicate events. 4. **One definition per metric.** Activation, active user and conversion are defined once and reused. 5. **Governance keeps it clean.** Owners, reviews and QA before releases. ## Event design | Element | Guidance | Example | |---|---|---| | Event name | object_action, past tense, lower snake case | project_created, invoice_sent | | Event properties | Context about the action | template_used, item_count, source | | User properties | Who the user is | plan, role, signup_channel, country | | Group properties (B2B) | Account or workspace context | company_size, account_plan | | Identity | Anonymous ID before sign-up, user ID after, merged | Consistent across web and app | | Consent | Respect consent for analytics and advertising | Consent state recorded | ## When to use, and when not to Use it when starting analytics, when numbers disagree between tools, before a redesign or new app, when adding a CDP, and when growth analyses keep hitting data gaps. Don't use it for ad platform conversion tracking (the Performance Marketing `conversion-tracking-capi` skill) or for analysis itself (`funnel-analysis`, `cohort-retention-analysis`). ## Inputs to ask for, in one message 1. Product surfaces: web, iOS, Android, backend, marketing site. 2. Analytics and data tools in use. 3. Current event list and properties, with volumes. 4. Key metrics: north star, activation, retention, conversion definitions. 5. Engineering ownership and release process. 6. Consent requirements by market. ## Workflow ### Step 1. Start from metrics and questions List the north star, inputs and key questions; each needs specific events and properties. ### Step 2. Audit current tracking Export events and properties; find duplicates, inconsistent names, missing properties, dead events and client versus server mismatches. ### Step 3. Define the taxonomy Naming convention, required properties per event, user and group properties, identity rules. ### Step 4. Write the tracking plan One row per event: name, description, trigger, platform, properties with types and allowed values, owner, related metrics, status. ### Step 5. Decide client versus server Business-critical events (sign-up, payment, subscription changes) from the server where possible; interaction events from the client. ### Step 6. Implement and QA Test in a development environment with debug tools; check every property, identity merge and consent behaviour before release. ### Step 7. Govern A change process (request, review, implement, QA), a named owner, quarterly clean-ups and alerts for volume anomalies. ## Tracking plan template ``` | Event | Description | Trigger | Platform | Properties (type, allowed values) | Owner | Metrics | Status | | signed_up | Account created | Server, after account record saved | Server | method (email/google/sso), signup_channel, plan | Growth eng | Sign-ups, activation denominator | Live | | project_created | First or later project created | Client after save | Web, iOS, Android | template_used (bool), project_type | Product eng | Activation | Live | ``` ## Core events most products need | Area | Events | |---|---| | Acquisition | page_viewed (marketing), signed_up | | Activation | onboarding_step_completed, first core action (for example project_created) | | Engagement | core actions with counts and types | | Collaboration | user_invited, invite_accepted | | Monetisation | trial_started, subscription_started, plan_changed, payment_failed, subscription_cancelled | | Experiments | experiment_exposed (experiment, variant) | ## QA checklist before release - Event fires once per action, on every platform listed. - All required properties present with valid values. - Anonymous and identified IDs merge correctly at sign-up and login. - Consent state respected for analytics tools. - Server events match client events for the same action where both exist. - Volumes in the debug view match manual test counts. ## Naming convention rules | Rule | Good | Avoid | |---|---|---| | object_action, past tense | invoice_sent | SendInvoice, sending_invoice | | Lower snake case | project_created | ProjectCreated, project-created | | Properties describe context | source: 'template' | Separate event per source | | Consistent units | amount_minor (pence or cents) | Mixed currencies and units | | No personal data in names | user_invited | invited_jane_doe | ## Change process 1. Request: who needs the event or property, for which metric or question. 2. Review: does an existing event cover it? Does it follow the taxonomy? 3. Implement: engineering adds it on the listed platforms. 4. QA: test in development with the checklist. 5. Publish: update the tracking plan status and notify analysts. 6. Monitor: volume alerts for sudden drops or spikes. ## Identity rules | Moment | Rule | |---|---| | Before sign-up | Anonymous ID from the analytics tool | | At sign-up or login | Call identify with the user ID; merge anonymous history | | Logout | Reset identity so the next user isn't merged | | Multiple devices | Same user ID across web and app | | B2B | Group call with account ID for account-level analysis | Wrong identity merges are one of the most common causes of inflated or deflated user counts. ## Deprecating events Mark old events as deprecated in the plan, keep them flowing for a transition period while dashboards move to new events, then stop sending them and archive their definitions. ## Edge cases and judgement calls | Situation | What to do | |---|---| | Legacy mess of events | Map old to new, run both for a transition, then deprecate | | Several analytics tools | Use a CDP or warehouse as source, send consistent events to each tool | | Ad blockers and consent | Server-side for critical events; respect consent; expect gaps in client data | | B2B accounts | Group analytics for account-level metrics | | Personal data | Don't send emails or names as event properties to analytics tools unless policy allows | ## Handoffs to related skills - Metric definitions: `north-star-metric-tree` - Funnels and cohorts built on events: `funnel-analysis`, `cohort-retention-analysis` - Experiment exposure events: `experiment-design` - Reporting: `growth-reporting` - Ad conversion tracking: the Performance Marketing `conversion-tracking-capi` skill ## Worked example A marketplace app had 340 events across web and mobile, including signup, sign_up, user_signed_up and SignUp, and activation defined differently in Amplitude and the warehouse. The audit cut to 62 events with object_action naming, required properties for source and platform, server-side sign-up and transaction events, and one activation definition used everywhere. A change process with QA before release stopped new duplicates. Funnel and cohort numbers finally matched across tools, and analysis time fell sharply. ## Output format ``` # Tracking plan: <product>, <date> ## Metrics and questions to support ## Audit findings (duplicates, gaps, mismatches) ## Taxonomy and naming convention ## Tracking plan table ## Client vs server decisions ## QA checklist and governance process ``` ## Common mistakes - Tracking everything with no purpose. - Inconsistent naming across platforms. - Critical events only on the client. - Several definitions of the same metric. - No owner or QA, so tracking decays. ## Questions to ask before you design - Which metrics and decisions must the data support? - Which events are business-critical? - Who owns tracking changes and QA? ## Self-check before you answer - Does every event support a metric or question? - Is naming consistent with required properties? - Are critical events server-side and identity rules clear? - Is there a governance and QA process? ## Further reading - Segment, tracking plan best practices: https://segment.com/docs/protocols/tracking-plan/best-practices/ - Amplitude, data taxonomy guide: https://amplitude.com/blog --- Created by Afeez Adebayo, Marketing, SEO & Growth Expert Website: https://afeezadebayo.com LinkedIn: https://www.linkedin.com/in/afeez-adebayo/ X: https://x.com/za_icon Source: https://afeezadebayo.com/skills-md/marketing/growth-marketing/tracking-plan/ Licence: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). You may copy, share and adapt this skill, including for commercial use, as long as you credit Afeez Adebayo and link to the source URL above. Keep this notice in any copy or adapted version.
Workflow
Step 1. Start from metrics and questions
List the north star, inputs and key questions; each needs specific events and properties.
Step 2. Audit current tracking
Export events and properties; find duplicates, inconsistent names, missing properties, dead events and client versus server mismatches.
Step 3. Define the taxonomy
Naming convention, required properties per event, user and group properties, identity rules.
Step 4. Write the tracking plan
One row per event: name, description, trigger, platform, properties with types and allowed values, owner, related metrics, status.
Step 5. Decide client versus server
Business-critical events (sign-up, payment, subscription changes) from the server where possible; interaction events from the client.
Step 6. Implement and QA
Test in a development environment with debug tools; check every property, identity merge and consent behaviour before release.
Step 7. Govern
A change process (request, review, implement, QA), a named owner, quarterly clean-ups and alerts for volume anomalies.
Tracking plan template
| Event | Description | Trigger | Platform | Properties (type, allowed values) | Owner | Metrics | Status |
| signed_up | Account created | Server, after account record saved | Server | method (email/google/sso), signup_channel, plan | Growth eng | Sign-ups, activation denominator | Live |
| project_created | First or later project created | Client after save | Web, iOS, Android | template_used (bool), project_type | Product eng | Activation | Live |Core events most products need
| Area | Events |
|---|---|
| Acquisition | page_viewed (marketing), signed_up |
| Activation | onboarding_step_completed, first core action (for example project_created) |
| Engagement | core actions with counts and types |
| Collaboration | user_invited, invite_accepted |
| Monetisation | trial_started, subscription_started, plan_changed, payment_failed, subscription_cancelled |
| Experiments | experiment_exposed (experiment, variant) |
QA checklist before release
- Event fires once per action, on every platform listed.
- All required properties present with valid values.
- Anonymous and identified IDs merge correctly at sign-up and login.
- Consent state respected for analytics tools.
- Server events match client events for the same action where both exist.
- Volumes in the debug view match manual test counts.
Naming convention rules
| Rule | Good | Avoid |
|---|---|---|
| object_action, past tense | invoice_sent | SendInvoice, sending_invoice |
| Lower snake case | project_created | ProjectCreated, project-created |
| Properties describe context | source: 'template' | Separate event per source |
| Consistent units | amount_minor (pence or cents) | Mixed currencies and units |
| No personal data in names | user_invited | invited_jane_doe |
Change process
- Request: who needs the event or property, for which metric or question.
- Review: does an existing event cover it? Does it follow the taxonomy?
- Implement: engineering adds it on the listed platforms.
- QA: test in development with the checklist.
- Publish: update the tracking plan status and notify analysts.
- Monitor: volume alerts for sudden drops or spikes.
Identity rules
| Moment | Rule |
|---|---|
| Before sign-up | Anonymous ID from the analytics tool |
| At sign-up or login | Call identify with the user ID; merge anonymous history |
| Logout | Reset identity so the next user isn't merged |
| Multiple devices | Same user ID across web and app |
| B2B | Group call with account ID for account-level analysis |
Wrong identity merges are one of the most common causes of inflated or deflated user counts.
Deprecating events
Mark old events as deprecated in the plan, keep them flowing for a transition period while dashboards move to new events, then stop sending them and archive their definitions.
Edge cases and judgement calls
| Situation | What to do |
|---|---|
| Legacy mess of events | Map old to new, run both for a transition, then deprecate |
| Several analytics tools | Use a CDP or warehouse as source, send consistent events to each tool |
| Ad blockers and consent | Server-side for critical events; respect consent; expect gaps in client data |
| B2B accounts | Group analytics for account-level metrics |
| Personal data | Don't send emails or names as event properties to analytics tools unless policy allows |
Handoffs to related skills
- Metric definitions:
north-star-metric-tree - Funnels and cohorts built on events:
funnel-analysis,cohort-retention-analysis - Experiment exposure events:
experiment-design - Reporting:
growth-reporting - Ad conversion tracking: the Performance Marketing
conversion-tracking-capiskill
Worked example
A marketplace app had 340 events across web and mobile, including signup, sign_up, user_signed_up and SignUp, and activation defined differently in Amplitude and the warehouse. The audit cut to 62 events with object_action naming, required properties for source and platform, server-side sign-up and transaction events, and one activation definition used everywhere. A change process with QA before release stopped new duplicates. Funnel and cohort numbers finally matched across tools, and analysis time fell sharply.
Output format
# Tracking plan: <product>, <date>
## Metrics and questions to support
## Audit findings (duplicates, gaps, mismatches)
## Taxonomy and naming convention
## Tracking plan table
## Client vs server decisions
## QA checklist and governance processCommon mistakes
- Tracking everything with no purpose.
- Inconsistent naming across platforms.
- Critical events only on the client.
- Several definitions of the same metric.
- No owner or QA, so tracking decays.
Questions to ask before you design
- Which metrics and decisions must the data support?
- Which events are business-critical?
- Who owns tracking changes and QA?
Self-check before you answer
- Does every event support a metric or question?
- Is naming consistent with required properties?
- Are critical events server-side and identity rules clear?
- Is there a governance and QA process?
Further reading
- Segment, tracking plan best practices: https://segment.com/docs/protocols/tracking-plan/best-practices/
- Amplitude, data taxonomy guide: https://amplitude.com/blog
On this page
- When to use this skill, and when not to
- Example prompts
- Example output
- What the agent needs from you
- How this skill hands off to related skills
- How to run Tracking Plan and Event Taxonomy step by step
- Situations this skill handles
- What makes this skill different
- Practical tips from real projects
- Frequently asked questions
- Changelog
When to use this skill, and when not to
Use it when starting analytics, when numbers disagree between tools, before a redesign or new app, when adding a customer data platform and when growth analyses keep hitting data gaps.
Most data problems start with tracking: events named differently on web and app, properties missing on half the events and activation defined three ways in three dashboards. A tracking plan is the living document that fixes this, and governance keeps it fixed.
Don’t use it for ad platform conversion tracking (use the Performance Marketing Conversion Tracking skill) or for analysis itself (use Funnel Analysis).
Example prompts
- “Clean up our 340 analytics events.”
- “Write a tracking plan for our new mobile app.”
- “Why do Amplitude and our warehouse show different activation numbers?”
- “Set a naming convention for events and properties.”
- “Which events should be tracked server-side?”
Example output
The skill returns a fixed structure. A shortened example for an imaginary site:
# Tracking plan: example marketplace app, 10 October 2026 ## Audit 340 events -> 62; duplicates: signup, sign_up, user_signed_up, SignUp ## Taxonomy object_action, past tense, lower snake case; required: platform, source ## Plan (extract) | Event | Trigger | Platform | Properties | | signed_up | Account saved | Server | method, signup_channel | | listing_viewed | Listing rendered | Web, iOS, Android | listing_id, category | | transaction_completed | Payment confirmed | Server | amount_minor, currency |
Each event exists because a metric or question needs it, so the plan stays small enough to maintain and trust.
What the agent needs from you
The skill asks for your product surfaces (web, iOS, Android, backend, marketing site), analytics and data tools, the current event list with volumes, key metric definitions, engineering ownership and release process, and consent requirements by market.
How this skill hands off to related skills
Tracking underpins every analysis. Metric definitions come from North Star Metric, analyses from Funnel Analysis and Cohort Retention Analysis, exposure events from Experiment Design and reporting from Growth Reporting.
How to run Tracking Plan and Event Taxonomy step by step
- Install the skill as
tracking-plan/SKILL.md. - List the metrics and questions the data must support.
- Export current events and properties with volumes.
- Describe surfaces, tools and consent rules.
- Review the audit, taxonomy and plan table.
- Implement with QA and start the change process.
Situations this skill handles
Tracking problems take familiar forms. The skill handles these situations:
| Situation | What the skill does |
|---|---|
| Legacy event mess | Maps old to new, runs both, then deprecates |
| Several analytics tools | CDP or warehouse as the single source |
| Ad blockers and consent | Server-side critical events; consent respected |
| B2B accounts | Group analytics for account metrics |
| Personal data in events | Removes it unless policy allows |
| New app launch | Core events defined before the first release |
What makes this skill different
Most tracking grows by accident, one event per feature request. This skill starts from metrics and questions, keeps events few and properties rich, defines identity and consent rules, puts critical events on the server and adds governance so data stays trustworthy as the product changes.
Its QA checklist catches problems before release instead of in a board report.
Practical tips from real projects
- Track decisions, not everything.
- One naming convention across platforms.
- Critical events from the server.
- Owners and QA before every release.
A worked example: a marketplace app had 340 events across web and mobile, including signup, sign_up, user_signed_up and SignUp, and activation defined differently in Amplitude and the warehouse. The audit cut to 62 events with object_action naming, required source and platform properties, server-side sign-up and transaction events and one activation definition used everywhere. A change process with QA stopped new duplicates, numbers matched across tools and analysis time fell sharply.
Core events cover most products: page_viewed and signed_up for acquisition; onboarding steps and the first core action for activation; core actions with counts for engagement; user_invited and invite_accepted for collaboration; trial_started, subscription_started, plan_changed, payment_failed and subscription_cancelled for monetisation; and experiment_exposed for experiments.
Naming rules keep data usable: object_action in past tense, lower snake case, context in properties rather than separate events, consistent units such as amounts in minor currency units and no personal data in event names.
The QA checklist confirms each event fires once per action on every listed platform, required properties are present and valid, anonymous and identified IDs merge at sign-up, consent is respected, server and client events agree and debug volumes match manual tests.
The change process runs request, review, implement, QA, publish and monitor, with volume alerts catching breakages within a day.
Event design follows a simple model. Event names describe what happened. Event properties carry context about the action, such as the template used or item count. User properties describe who the user is, such as plan, role, sign-up channel and country. Group properties describe the account or workspace in B2B products. Identity rules link anonymous activity before sign-up to the user afterwards, consistently across web and app. Consent state is recorded so analytics tools receive data only where people agreed. Getting these six elements right covers most analytics needs without hundreds of near-duplicate events.
Client versus server decisions are practical: business-critical events such as sign-up, payment and subscription changes come from the server, where they can’t be blocked or duplicated by browsers; interaction events such as clicks and views come from the client, where the context lives. When both exist for the same action, the plan names which one is the source of truth.
Frequently asked questions
What is a tracking plan?
A document listing every tracked event and property, why it exists, where it fires, how it is named and who owns it, used by product, engineering and analytics teams.
What naming convention should events use?
A consistent object_action format in past tense and lower snake case, such as project_created or invoice_sent, applied across all platforms.
Which events should be server-side?
Business-critical ones such as sign-up, payment and subscription changes, because they are more reliable and unaffected by ad blockers.
Why do analytics tools disagree?
Different event definitions, client versus server tracking, identity merging and consent gaps. One definition per metric and a shared source fix most differences.
Should personal data go in event properties?
Not unless your policy allows it. Avoid sending emails or names to analytics tools as properties.
How do we keep tracking clean?
A change process with review and QA before release, an owner, quarterly clean-ups and alerts for unusual volumes.
Changelog
- 1.0.0, 10 October 2026: first release.
Use, adapt and share this skill under CC BY 4.0: credit Afeez Adebayo and link to this page.
All Growth Marketing skills
- Growth Audit
- North Star Metric and Metric Tree
- Growth Model and Forecasting
- Growth Experiment Backlog and Cadence
- Experiment Design for Growth
- Experiment Readouts and Analysis
- Acquisition Channel Testing
- Growth Loops
- Referral Programmes
- Funnel Analysis
- Cohort Retention Analysis
- Growth Reporting and Attribution
