Skip to content

Specification

OpenTrackPlan is an open standard for describing tracking plans — a structured way to define, validate, and document analytics events.

Analytics implementations often break down in communication:

  • Analysts describe events in Google Docs, Notion, or Confluence
  • Developers implement events “as they understood”
  • QA checks implementation “by eye”
  • Data diverges from expectations

OpenTrackPlan provides a schema-first approach:

  1. Define events in YAML files with structured schemas
  2. Validate events against the specification
  3. Generate code, documentation, or exports
  4. Collaborate using version control
my-tracking-plan/
├── opentp.yaml # Main configuration
├── events/
│ ├── auth/
│ │ ├── login.yaml
│ │ └── signup.yaml
│ └── dashboard/
│ └── view.yaml
└── dictionaries/
├── taxonomy/
│ └── areas.yaml
└── data/
└── platforms.yaml

Taxonomy — event metadata for humans:

  • Folder organization and search
  • Human-readable descriptions
  • Team ownership

Payload — data for analytics platforms:

  • What gets sent to Amplitude, GA, Mixpanel
  • Platform-specific schemas
  • Versioned history

These are independent concepts — there’s no automatic mapping between them.

Current specification version: 2025-06

All OpenTrackPlan files declare their format version:

opentp: 2025-06
FilePurposeSchema
opentp.yamlMain configurationopentp.schema.json
events/*.yamlEvent definitionsevent.schema.json
dictionaries/*.yamlReusable value listsdict.schema.json

All file formats have JSON schemas for validation and IDE autocompletion.

Add this to your YAML files:

# yaml-language-server: $schema=https://opentp.dev/schemas/opentp.schema.json

Schema URLs:

SchemaURL
Main confighttps://opentp.dev/schemas/opentp.schema.json
Eventshttps://opentp.dev/schemas/event.schema.json
Dictionarieshttps://opentp.dev/schemas/dict.schema.json
  1. Create opentp.yaml in your project root
  2. Define your taxonomy and payload structure
  3. Create event files in the events/ directory
  4. Use dictionaries for reusable value lists
  5. Validate with the opentp CLI

Apache 2.0