Skip to main content
Fill in each section below. Every section has a “Concept review” dropdown explaining what the section is for and why it exists; you can complete the whole page without opening one, or expand any of them for the reasoning first. Examples throughout use Doughnut Labs, an invented company that sells Doughnut Technology, so you can see one filled-in dictionary rather than scattered fragments. Replace the greyed E.g. lines with your own answers.
Fill in Setup, North star metric, and KPI tiers first, ideally with the people who tend to argue about numbers in the same room for 90 minutes. Attribution, source of truth, and ownership come next. Metric formulas can be added gradually, starting with your north star and tier 1 metrics. Everything is a living document: expect to update it as questions come up, and review it on a schedule rather than only when something breaks.
1

Settle what you measure

Fill in Setup, the north star metric, and the KPI tiers. This is the part worth doing live, with whoever ends up arguing about numbers later, rather than as individual homework.
2

Settle how you measure it

Attribution, source of truth, and ownership. These sections are what keep two people from getting two different answers to the same question.
3

Write the formulas

One block per metric, starting with the north star and tier 1. The worked example with real numbers is where a broken definition reveals itself, so don’t skip it.
4

Register where things live

Link your flat file, dashboards, and reports so this page becomes the one place anyone can find any of them.
5

Keep it current

Log decisions and changes as they happen, and review the whole dictionary on a set schedule.

Setup

The basics that identify this dictionary and who’s accountable for it: What this business gets paid for, in one sentence: E.g. Doughnut Labs sells a direct-to-consumer subscription box of small-batch doughnut kits.
These fields exist so anyone opening the dictionary can place it in seconds: whose numbers these are, what kind of business they run, and when the definitions were last checked. The one-sentence business description matters more than it looks. A metric like “conversion” or “customer” means something different for a business selling one-time purchases than one selling subscriptions, and writing the model down up front keeps that distinction visible everywhere else in the document.

North star metric

The tiebreaker metric: the one you optimize for when two reasonable options conflict. Common starting points, if you want a reference rather than a blank page:
The north star is the tiebreaker, not the most important KPI on the list. A team can have several well-defined KPIs and still disagree constantly, because KPIs conflict with each other in ordinary ways: volume up and margin down, lead count up and lead quality down. The north star is the one number that settles which side wins. There can be many KPIs. There’s exactly one north star.A counter-metric belongs beside it always, in the same report, because any single metric can be improved by doing something that quietly damages the business elsewhere. The counter-metric doesn’t need its own target; it needs to be visible every time the north star is, so the tradeoff shows up in the routine report rather than in a postmortem months later. See reporting framework concepts for the four tests a good north star has to pass.

KPI tiers

Keep the total list under 15. A metric earns a place here only if a 20% move, in either direction, would change what you do.

Tier 1, outcomes

Three to five metrics the business is directly accountable for. Floor is the level that triggers an actual phone call rather than a note in a report.

Tier 2, drivers

Five to ten metrics: the levers that move tier 1.

Tier 3, diagnostics

Listed, not tabled. These explain why a tier 2 driver moved: cost per click by channel, add-to-cart rate, checkout abandonment, whatever your team checks first when something looks off. E.g. Cost per click by channel, add-to-cart rate, checkout abandonment rate [add diagnostic]

Deliberately not tracking

Write these down. It saves the same conversation from repeating every quarter.
A KPI is a metric that changes what you do. If it moved 20% and nobody would act differently, it’s context, not a KPI, and it belongs in tier 3 or off the list. Starting from decisions rather than from whatever a dashboard happens to surface is what keeps this list short and useful rather than long and decorative.The three tiers exist so a report can explain, not just state. When a tier 1 outcome moves, tier 2 says why; when a tier 2 driver moves, tier 3 says why that happened. A report built on this chain reads as cause and effect instead of a list of unrelated facts. See reporting framework concepts for how this plays out differently in a business with a long sales cycle, where tier 1 outcomes lag the activity that produced them.

Attribution

The rule for deciding which touch gets credit for a result. Every model is wrong differently; pick one, write down where it’s wrong, and apply it consistently. Where the model is known to be wrong, written down honestly: How the model gets checked:
Add up what every ad platform reports and the total will exceed actual orders, because each platform claims every conversion it touched under its own window. This is normal, not a tracking bug, and it’s exactly why platform numbers can’t be summed and why the business needs one model of its own, applied the same way every time.Which model fits depends on how long the path to purchase runs, how much spend goes to channels that can’t be clicked (audio, connected TV, sponsorships), and how fast the team needs to act on the answer. See reporting framework concepts for how those three questions point toward different models, and why validating the model at least once a year, rather than just trusting it, is what keeps an attribution setup from quietly drifting out of line with reality.

Source of truth

One approved system per metric. When two systems disagree, the approved one wins. Name the exact field, not just the system. “Revenue from the ecommerce platform” is ambiguous; gross sales, net sales, and total sales are three different numbers in the same admin panel.

Expected discrepancies

Systems will disagree. Recording the normal gap turns a change in that gap into a signal instead of a monthly crisis.

Data lag

When two systems produce different numbers for the same metric, the useful question is “which one is approved,” not “which one seems more trustworthy right now.” Naming the source ahead of time turns that moment from a debate into a lookup.The most common mistake is treating an analytics platform as the source for revenue. Analytics tools miss sales lost to ad blockers or consent rejection and don’t know about refunds after the fact; revenue belongs to whichever system actually took the money. See reporting framework concepts for how to assign a source by which system owns the underlying event, and how a metric that spans several systems, like contribution margin, needs a join rule recorded alongside its source.

Ownership

No role can be blank. One person can hold several roles.
Every metric needs one name attached, not a team. A metric with shared ownership tends to drift silently, since someone adjusts a filter, someone else changes a date range, and eventually two views of the same number disagree with no record of why. One owner doesn’t mean one person does all the work; it means there’s one person to ask when the definition needs a decision.A definition should only change when its owner approves the change, and the change gets logged with an effective date below in Part 4, so old reports don’t quietly stop matching new ones. See reporting framework concepts for what breaks when a definition changes silently instead.

Metric formulas

One block per tier 1 and tier 2 metric. Copy the block as many times as you need. Start with your north star and tier 1 metrics; you don’t need every metric defined before you start reporting.
A block filled in, for reference:
Calls worth making explicit, since this is where two people’s numbers usually diverge:
The worked example is the part most templates skip and the part that matters most. Calculate it with real numbers before adopting a metric; if the answer doesn’t roughly match what people already expect, the definition has a problem, and it’s far cheaper to find that now than in a meeting where two people are holding different numbers.This block is also where the ambiguity in a metric name actually gets resolved. “Revenue” sounds like one number until you write down whether it includes tax, whether a refund gets deducted the day it happens or the day the original order shipped, and which time zone a date belongs to. None of those calls has a universally right answer; what matters is making the call once and writing it down, so it doesn’t get made differently by whoever happens to be pulling the number that week.

Where everything lives

Update this whenever you build something. This section is what makes the dictionary a portal instead of just a form.

The flat file

Metric names in the flat file must match the metric formulas above. Channel and source names must match Source of truth. See the flat file template for the schema.

Dashboards

Reports

Leave a row’s fields blank for a cadence you don’t yet produce. Most brands start with a dashboard plus a monthly report and add weekly once spend justifies it.

Report archive

Every sent report gets logged, by cadence, in the weekly, monthly, quarterly, and annual report archives.
A dictionary that only defines metrics, without saying where the flat file, dashboards, and reports actually live, leaves a reader with the definitions but not the destination. This section is what turns the dictionary into the front door for the whole reporting system: anyone with a question about a number can start here and reach the actual file, dashboard, or report without asking around for a link.Metric and channel names have to match exactly between this section, the formulas above, and the flat file itself. A metric that’s spelled one way in the dictionary and another way in the flat file is the same ambiguity the dictionary exists to prevent, just moved one level down.

Decisions and changes

Why we decided what we decided

One entry per significant choice. The “rejected because” field is what stops the same debate from reopening every few months.
Filled in, for reference:
Effective date matters. When a definition changes, every report before that date used the old one; without the date, old numbers look wrong instead of just different.

What changed and when

Anything that could change how a number should be read. Log it the day it happens, not at report time. Log campaign launches, promotions, price changes, site deploys, outages, stockouts, tracking changes, definition changes, and competitor moves. Skip routine bid adjustments and normal creative rotation; log what would actually break a comparison, not everyday tuning.

Open questions

Anything unresolved. Each needs a name and a date, or it becomes permanent.
The decision log exists because the same debate tends to resurface every few months if the reasoning behind a choice isn’t written down anywhere. Recording what was considered and why it was rejected is what lets a future conversation start from “we already looked at that” instead of relitigating it from zero.The change log answers a different, more immediate question: why did this number move on that date. Without it, an unusual spike or dip in a report becomes a small investigation every time, even when the cause was a known promotion or a tracking change logged weeks earlier and simply forgotten.

Sign-off

Everyone agrees these are the numbers, calculated this way, from these systems, until the decisions and changes section says otherwise.
Last modified on July 24, 2026