Metric Contract Example | SignalLake

Example contract

A metric contract keeps the business definition, source, owner, and approval state together. Use this shape for numbers that appear in operating reviews or board reporting.

Start with the metric key and owner, then add the smallest amount of policy needed to make the number durable: source, grain, freshness, approval, and change rules. More detail can be added later, but those fields should be present before a dashboard depends on the metric.

{
  "key": "net_revenue_retention",
  "label": "Net revenue retention",
  "description": "Recurring revenue retained from existing accounts after expansion, contraction, and churn.",
  "owner": "Revenue Operations",
  "source": "warehouse.finance.account_revenue",
  "grain": "account_month",
  "freshness": "24h",
  "format": "percent",
  "direction": "higher_is_better",
  "approval": {
    "state": "approved",
    "by": "Finance",
    "since": "2026-07-01"
  },
  "policy": {
    "change": "finance_approval_required",
    "review": "monthly",
    "publish_to": ["executive-review", "board-packet"]
  }
}

Contract checklist

Field
Why it matters
Owner
source
Tells readers where the number is calculated
Analytics Engineering
grain
Prevents accidental comparison across incompatible levels
Metric Owner
freshness
Shows whether the number is ready for this decision
Data Operations
approval
Separates draft work from finance-approved reporting
Finance
policy
Controls where the metric can be published
Workspace Admin
description
Explains the number without requiring SQL knowledge
Metric Owner
Business documents and charts used to define governed metrics

Review before publishing

Before a contract becomes active, SignalLake checks that the owner, source, grain, and freshness policy are present. The approval state then follows the metric into every dashboard that uses it.

If the contract changes later, readers see the active version beside the metric. That makes definition updates visible without turning every dashboard into a change log.