← InsightsArchitecture

What an Event Tracking Schema Is, and Why Undocumented Events Cost You Later

Every tracking setup has a schema, whether or not anyone wrote it down. The only question is whether it lives in a document your team can check, or only in the memory of whoever built it.

Quick answer

An event tracking schema is a documented specification of every event your systems collect - its exact name, the properties it carries, each property's data type, and who owns approving changes to it. Without one, the same real-world action (a purchase, a signup) tends to get tracked under slightly different names and property shapes across a codebase's history, which quietly breaks reports and joins that assume consistency.

What belongs in a schema entry

A complete schema entry for a single event specifies: the event name (exact string, case-sensitive, following one naming convention across the whole plan), its properties (each with a name, a type - string, number, boolean, timestamp - and whether it's required or optional), the trigger condition that should cause it to fire, and an owner responsible for approving any change to the definition. This is deliberately more than "what we're tracking" - it's specific enough that two different engineers implementing the same event, months apart, would produce identical results.

What actually goes wrong without one

  • Naming drift. "purchase," "Purchase," "order_completed," and "checkout_success" can all describe the exact same action across different parts of a codebase or different platforms, splitting what should be one metric into several partial ones.
  • Type drift. A revenue field sent as a string in one implementation and a number in another silently breaks any downstream math or aggregation that assumes a consistent type.
  • Property drift. The same event firing from two different pages might carry different optional properties, making "does this event have a category field" an unreliable question to ask in a report - it depends which implementation fired it.
  • Undiscoverable duplication. Without a central list, a new event is easy to accidentally re-implement under a slightly different name because nobody could find that an equivalent one already existed.

The mechanical reason "under the hood" content connects here

Every event a tracker sends follows the same four-step mechanism - detect, assemble a payload, attach identity, transmit (see our explainer on how a web analytics tracker actually works). A schema is what constrains step two - payload assembly - to a consistent, documented shape across every place an event can fire, instead of leaving each implementation to improvise its own version of "close enough."

Getting from no schema to a working one

Start by auditing what's already firing - export your actual event list from GA4, your CDP, or your tag manager rather than starting from what you assume is tracked - then reconcile it into one document with one name and one property shape per real-world action, resolving any duplicates you find along the way. This is closer to a governance exercise than a technical one; see our companion note on what data governance actually means for a tracking stack for the ownership side of keeping it current.

Field Questions

Event schemas - common questions

Is a tracking plan the same thing as an event schema?

They usually refer to the same underlying artifact from two angles: a "tracking plan" is the planning document (what to track and why), and a "schema" is its enforced, structured form (exact event names, property names, and types). A mature setup has one document that serves as both.

How detailed does a schema need to be for a small team?

Even a simple spreadsheet listing every event name, its properties, and one owner per event is a real schema and is dramatically better than none. Detail should scale with team size and event volume, not be skipped entirely because the team is small.

Who should own the event schema - engineering or marketing?

Ownership works best as shared but explicit: engineering typically owns how events are implemented and enforced, marketing or product typically owns what should be tracked and why. The failure mode isn't picking the wrong owner, it's having no named owner at all.

Not sure how many versions of "purchase" your own stack is actually sending?

A data audit reconciles your real, currently-firing events against one documented schema.