From amplitude
Generates, audits, scores, and governs event taxonomies in Amplitude for tracking plans, naming conventions, property standards, data quality, and deprecation workflows.
npx claudepluginhub amplitude/mcp-marketplace --plugin amplitudeThis skill uses the workspace's default tool permissions.
- User asks to create or review a tracking plan or event taxonomy
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Builds scalable data pipelines, modern data warehouses, and real-time streaming architectures using Spark, dbt, Airflow, Kafka, and cloud platforms like Snowflake, BigQuery.
Builds production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. For data pipelines, workflow orchestration, and batch job scheduling.
Six principles govern all taxonomy work:
All taxonomy governance follows a four-stage loop:
These are different problems requiring different solutions:
Billing models — know which applies before advising:
What customers usually mean:
What actually reduces each:
| Goal | Action | Reduces Volume? | Reduces Type Count? |
|---|---|---|---|
| Reduce volume | Block event | Yes | No |
| Reduce volume | Delete event | Yes | Yes |
| Reduce type count | Delete event/property/group type | — | Yes |
| Reduce type count | Block event | No | No |
| Reduce type count | Hide event | No | No |
Key rules:
| Status | Meaning | Can Edit Metadata? |
|---|---|---|
| Planned | In tracking plan; not yet instrumented | Yes |
| Live | Actively receiving data | Yes |
| Blocked | Stops new ingestion; historical data accessible | Yes |
| Unexpected | Receiving data but NOT in tracking plan | No — must add to tracking plan first |
| Deleted | Stops ingestion; removed from new-chart dropdowns | No — must restore first |
Unexpected events have special restrictions. No metadata can be updated until the event is added to the tracking plan. When you encounter Unexpected events:
Activity state is NOT a deprecation signal. An event marked Inactive is behaving as intended.
Actual deprecation signals:
| Signal | Interpretation |
|---|---|
| No recent volume | Event has gone stale |
| No recent queries | Event is unused |
| Both together | Strong deprecation candidate |
Planned events: Zero volume and queries are expected — evaluate by age, name collisions with Live events, and test-like names instead.
None reduce event volume. Each has distinct behavior:
ce: prefix, type = custom): Logical combinations of underlying events for analysis convenience. The underlying events still exist and fire independently. Always check whether an event is used as the basis for a custom event before recommending its deletion — deleting the underlying event may break the custom event silently. Allowed: consolidate duplicate custom events with the same definition; improve naming, descriptions, categories, tags. Never claim that removing a custom event reduces event volume.ce: prefix, type = labeled): Designed for use with Autocapture, distinguished from custom events by a separate metadata flag. Adding/deleting does not impact volume.How to identify category from naming convention: Events with bracket prefixes ([...]) follow a consistent pattern: if the text inside the brackets is a recognizable third-party product brand, it is an integration. If not, it is an Amplitude system event.
Amplitude system events ([Amplitude], [Guides-Surveys], [Experiment], etc.): Critical to platform functionality. Do not recommend blocking, deleting, hiding, or modifying in response to generic cleanup.
Integration-prefixed data ([Appboy], [Adjust], [Intercom], etc.): Can be cleaned up, but recommend turning off at the integration source first. Lower priority than native events.
Experiment data: Do not recommend TTLs or automatic deletion. Deleting breaks historical experiment interpretation.
Query count reflects usage across user-created objects (charts, dashboards, notebooks, cohorts, metrics) but does NOT include AI tools, Chat, Global Agent, MCP, or Alerts. Zero-query is a strong signal to review, not a definitive signal to act.
Three key patterns:
| Pattern | Definition | Action |
|---|---|---|
| Stale event | Has ingested before, but volume stopped | Confirm with customer before deprecating |
| Test event | first seen = last seen, single day | Strong deprecation candidate; confirm first |
| Firing but unqueried | Has volume, zero queries | Flag for review, not immediate removal |
Safe to act on: No volume for 6-12 months. Even if query activity exists, those queries return zero results.
Frame metadata and cleanup work as AI readiness improvements. Every AI feature selects events by evaluating the visible taxonomy — taxonomy quality directly determines AI output quality.
Flag these as AI quality issues:
Event description structure (in order):
Property descriptions: Start with a clear definition, then include example values. Example: "The category of the product the user viewed. Examples: 'electronics', 'apparel', 'home & garden'."
AI readiness at instrumentation time:
AI Controls recommendations:
Reading and analysis operations carry no risk — be autonomous and decisive. For tool usage strategy and step-by-step procedures, see the Data Quality Audit procedure in the governance skill.
Before/after confirmation required for all writes. Never auto-apply. Only update confirmed items — do not extend to similar items based on pattern inference.
Per-field defaults:
Restrictions:
When writes fail due to permissions:
Deprecation must always follow a phased process. For the step-by-step procedure, see the governance skill's Deprecation Workflow.
Never:
Format: [Object] [Past-Tense Verb] in Title Case
| Good | Bad | Why |
|---|---|---|
Song Played | Play Song | Past tense = completed action |
Form Submitted | Submit Form | Noun-first = scannable, sortable |
Product Added | product added, product_added, productAdded | Amplitude treats different casings as separate events — always use Title Case, not snake_case or camelCase |
Consistency is the top priority. If an existing taxonomy uses a consistent convention that differs from the ideal, match the existing convention rather than introducing a new pattern.
User perspective, not system perspective:
Message Sent (user sent) not Message Delivered (system delivered)Purchase Completed (user completed) not Payment Processed (system processed)Specificity balance — one event + properties, not many events:
Order Completed with property payment_methodCredit Card Order Completed, Apple Pay Order CompletedCross-platform consistency: Same user action = same event name across Web, iOS, Android. Platform differences go in a platform property.
One action = one event name. No duplicates across the codebase.
Autocapture-first: Do not recommend custom events for anything already captured by Autocapture: Page Viewed, Element Clicked, Element Changed, Form Started, etc.
snake_case for all property namespayment_type not type, error_message not messagevideo_duration_seconds, file_size_mb, price_usd[event_name]_at (e.g., product_added_at)product_name must be product_name on every event — not name, prod_name, etc.login_method and payment_method, not generic method for both| Type | Format | Example |
|---|---|---|
| IDs | Always string | "user_id": "12345" not 12345 |
| Counts/amounts | Number | "order_total": 59.99 |
| Flags | Boolean | "is_premium": true |
| Timestamps | ISO 8601 string | "2024-03-10T14:30:00Z" |
| Enums/status | String | "status": "In Progress" |
| Null handling | Pick one approach per property | Omit, null, or sentinel string like "Unknown" — never mix. Using an explicit sentinel string lets you distinguish intentionally unavailable values from instrumentation bugs. Inconsistent null handling is one of the most common causes of incorrect property filters and broken funnels. |
device_id only. Do NOT set user_id.user_id per verified user. Never set before login/verification.insert_id per event for deduplication (7-day window).session_id within a session; for server-side, use the UNIX timestamp of the first session event.Error Encountered event with error_type/error_category propertyproduct_engagement (items in this action) + cart_contents (full cart snapshot) arraysorg_id, account_id)product_id) across all events in a funnelUse the Amplitude category metadata field — don't embed prefixes in event names. Common categories:
| Category | Purpose | Examples |
|---|---|---|
| Lifecycle | User journey milestones | Signup Completed, Trial Started, Subscription Cancelled |
| Feature | Core product functionality | Task Created, Document Edited, Report Generated |
| Engagement | Navigation and UI interaction | Page Viewed, Button Clicked, Search Performed |
| Transaction | Revenue events | Purchase Completed, Checkout Started, Refund Requested |
| System | Technical health | Error Occurred, API Request Completed, Timeout Occurred |
| Growth | Acquisition and referral | Invite Sent, Share Completed, Referral Reward Earned |
Assignment heuristics:
[Appboy], [Adjust], etc.) may not fit neatly — assign System or Growth based on the integration's purpose, or leave unassigned.Three dimensions:
| Level | Points | Definition | Examples |
|---|---|---|---|
| HIGH | 3 | Name is ambiguous — analyst cannot reliably interpret it | Jargon, acronyms, blob words, confusable names |
| MEDIUM | 2 | Name is interpretable but taxonomy is messier for it | Convention outliers, unexpected events not on plan |
| LOW | 1 | Name is clear; issue is missing polish | Missing description when name is self-explanatory |
Prioritization: Lead with high-impact issues on high-importance events. Stale/test events are quick wins — surface them below real data quality problems.
Health grade: (Total Points Earned / Total Points Possible) x 100%
Allowed (non-destructive, metadata-only, with user approval):
Not allowed:
Default lookback: 180 days.
| Signal | Priority | Action |
|---|---|---|
| Semantically unclear name | HIGH | Add display name + description |
| Missing description (unclear name) | HIGH | Add description following AI readiness formula |
| Semantic duplicate (true — same meaning, different casing) | HIGH | Merge or disambiguate |
| Semantic duplicate (similar — different names, same action) | HIGH | Investigate; merge or disambiguate |
| Zero volume (180 days) | MEDIUM | Investigate before acting |
| Zero queries (180 days) | MEDIUM | Check asset dependencies first |
| Duplicate property across event + user scope | MEDIUM | Clarify correct source of truth |
| Missing description (clear name) | LOW | Add description; deprioritize |
| Missing category | LOW | Add category |
| Naming convention outlier | LOW | Flag for future realignment |
| Unexpected event/property | LOW | Add to plan or block after review |
| Stale (last seen beyond lookback) | LOW | Quick win — schedule for deprecation |
| Single-day (first seen = last seen) | LOW | Quick win — likely test; verify first |
Test/QA artifact (test_, debug_, tmp_, _qa) | LOW | Quick win — standard deprecation process |
Exception: When customer is near quota, Stale/Single-day/Test signals become elevated priority.
| Metric | Impact |
|---|---|
| % of types at quota limit | HIGH when >90% |
| New types added in last 7 days (spike = possible dynamic value leak) | HIGH if spike |
| Total event volume change in last 7 days | HIGH if unexpected |
| Number of duplicate types by name | HIGH |
| Group types not instrumented (B2B products) | HIGH |
| A/B experiments tracked as events instead of user properties | MEDIUM |
| Events with zero queries in 180 days | MEDIUM |
| Events with zero volume in 180 days | MEDIUM |
| Single-day events | MEDIUM |
| % of live events with descriptions | LOW |
| % of live events with categories | LOW |
| Number of Unexpected events/properties | LOW |
| Naming convention inconsistencies | LOW |
Display names:
| Before | After |
|---|---|
catSelectClick | Category Selected |
pgVw | Page Viewed |
ord_compl_v2 | Order Completed |
usr_prop_acct_tier | Account Tier |
Descriptions:
| Bad (implementation-focused) | Good (intent + context) |
|---|---|
| "Fired on click handler for nav component" | "Triggered when a customer selects a product category from the navigation menu. Example categories: Electronics, Apparel, Home." |
| "Event fired on submit" | "Triggered when a user completes checkout and confirms their order. Includes all line items, discounts applied, and final order total." |
| "See tracking plan" | "Fired the first time a new user completes onboarding by verifying their email. Fires once per user lifetime only." |
Lightweight listing of all events ordered by importance descending. Supports pagination with offset and limit. Best for broad taxonomy scans and governance audits.
Tool reference: langley.tools.taxonomy.combined_metadata.CombinedMetadataTool.list_events
Semantic + text hybrid search for events matching a description. Use multiple phrasings in parallel to disambiguate.
Parameters:
query: Natural language descriptioncategories: Metadata categories (e.g., ['basic', 'ai_descriptions', 'metrics'] — up to 100 events)Tool reference: langley.tools.taxonomy.combined_metadata.CombinedMetadataTool.get_relevant_events
Deep metadata for specific events: properties, usage, relationships, importance, content associations.
Parameters:
event_names: List of events to analyzecategories: e.g., ['basic', 'ai_descriptions', 'metrics', 'importance', 'content_usage', 'properties', 'relationships'] — up to 25 events with heavy categoriesTool reference: langley.tools.taxonomy.combined_metadata.CombinedMetadataTool.get_event_metadata
Discover and analyze properties with the same semantic search pattern as events.
Tool references:
langley.tools.taxonomy.combined_metadata.CombinedMetadataTool.list_propertieslangley.tools.taxonomy.combined_metadata.CombinedMetadataTool.get_relevant_propertieslangley.tools.taxonomy.combined_metadata.CombinedMetadataTool.get_property_metadataLive property statistics from the metrics API. Verify volume and recent usage before recommending.
Tool reference: langley.tools.taxonomy.combined_metadata.CombinedMetadataTool.get_property_stats
Retrieve enumerable values for a property. Validate cardinality and value consistency.
Tool reference: langley.tools.taxonomy.combined_metadata.CombinedMetadataTool.get_property_values
Search organization-specific knowledge base for business context, tracking plans, data dictionaries, and naming conventions.
Tool reference: langley.tools.knowledge.bedrock_kb_tool.BedrockKnowledgeBaseTool.search_knowledge_base
Answer Amplitude product questions. Use before telling a user something is not feasible.
Tool reference: Amplitude MCP tool documentation_question
Get user/org/project context. Discover all projects the user has access to.
Tool reference: Amplitude MCP tool get_context
| Tool | Purpose |
|---|---|
set_event_description | Add/update event description |
set_event_display_name | Update event display name |
set_event_category | Assign event to a category |
add_event_tags | Add tags to an event |
set_event_deprecated | Mark event as deprecated |
hide_event | Hide from taxonomy (does not delete) |
set_property_description | Add/update property description |
set_property_display_name | Update property display name |
For step-by-step execution procedures (data quality audits, governance analyses, event verification, deprecation workflows, tracking plan generation, tool usage strategy), see the governance skill.