KPI Tree

dbt Cloud logodbt Cloud Integration

Your semantic layer defines the metrics. KPI Tree shows how they drive each other, who owns them, and what to do when they move.

You have already invested in dbt Cloud to govern your metric definitions in one place. That solves metric consistency. It was never designed to answer the next set of questions: which metrics cause which, who is accountable when one moves, and what is being done about it. KPI Tree reads your entire metric catalogue through the dbt Cloud Semantic Layer API, with no dbt CLI to install and no manifest uploads, and never re-implements a single calculation, so the numbers always match dbt. On top of that governed foundation it adds a causal metric tree, RACI ownership, and a closed action loop. Your dbt project stays untouched, your definitions stay governed, and you get far more from the work you have already done.

Live in under two minutes

Provide a read-only service token and your Environment ID. KPI Tree imports every metric, dimension, time grain, and aggregation type from your semantic layer automatically.

1

Create a read-only service token

In dbt Cloud, generate a service token scoped to "Semantic Layer Only" and "Metadata Only". Both are read-only. KPI Tree never writes to your dbt project, models, or deployment configuration.

2

Connect and import your metric catalogue

Enter the service token and your Environment ID. KPI Tree runs a background sync that reads every metric with its dimensions, time grains, and aggregation type, then returns a summary of what was created. The sync runs as a job rather than a single blocking request, so large metric catalogues complete reliably. Single-tenant dbt Cloud instances are supported by pointing the Semantic Layer host at your endpoint.

3

Build metric trees and assign ownership

Arrange imported metrics into a causal metric tree that models how your business actually works. KPI Tree scores each driver link statistically, then you assign RACI ownership, set up notifications, and create action plans. When your dbt project evolves, re-sync to pull the latest definitions. Existing trees, ownership, and action history are preserved.

Everything your semantic layer defines, with context it was never designed to carry

KPI Tree starts with the metric catalogue you have already built in dbt Cloud and extends it into territory the semantic layer does not cover. Your semantic layer tells AI how metrics are calculated. KPI Tree adds the layer above: how they drive each other, who owns them, and what is being done about it.

Your full metric catalogue, imported exactly as defined

Every metric name, label, description, dimension, time dimension, and queryable granularity imports through the dbt Cloud Semantic Layer API, with no dbt CLI to install. KPI Tree even reads the aggregation type, sum, average, first, or last, straight from each dbt definition, so time rollups are correct with no manual setup. No re-mapping, no translation layer, no drift between what dbt defines and what KPI Tree shows.

One query per metric, all analytics off-warehouse

Each metric syncs with a single query on a schedule you set. Every rollup, comparison period, correlation, and outlier test runs in KPI Tree's own compute engine, so your dbt Cloud Semantic Layer and warehouse bills stay flat as you add metrics. For very large or frequently refreshed catalogues, an optional warehouse-direct path issues those queries against your own infrastructure while definitions still come from the semantic layer.

Automatic dimension breakdowns

Enable "Create Dimension Metrics" and KPI Tree reads each metric's dimensions, queries their distinct values, and generates a child metric per value. "Revenue" becomes "Revenue (Region: EMEA)", "Revenue (Region: APAC)", and so on. High-cardinality dimensions are detected and skipped automatically to keep trees navigable.

See which metrics drive which, with a confidence level on every link.

Your semantic layer tells you what each metric is. KPI Tree shows how they relate. Arrange imported metrics into a causal metric tree that models how pipeline generation drives revenue, how activation drives retention, or however your business actually works. Every driver link is scored by proprietary ML models and statistical tests, including Pearson correlation, lagged cross-correlation, partial correlation, and Granger causality with a Benjamini-Hochberg correction, so you get statistical driver signals with confidence levels rather than lines someone drew by hand. When a metric moves, stakeholders trace the cause through the tree instead of filing a request with your data team. RACI ownership assigns accountability to named people, not teams.

  • Full metric catalogue imported straight from your semantic layer
  • Every driver link carries a statistical confidence level, refreshed nightly
  • Drag-and-drop the tree to match how your business actually works
  • RACI ownership, notifications, and action tracking per metric
0:00

One query per metric, so your dbt Cloud and warehouse bills stay flat.

KPI Tree fetches each metric with a single query on a schedule you set, then does the heavy lifting elsewhere. Time rollups, period comparisons, correlation scoring, and outlier detection all execute in KPI Tree's own compute, which means the cost of adding a metric stays constant instead of compounding across your dbt Cloud Semantic Layer and your warehouse. If your catalogue is very large or refreshes often, link a warehouse connection and route those sync queries through your own infrastructure instead. Either way, definitions still come from the semantic layer on every sync, so governance is unchanged and only the data path moves.

  • One query per metric; comparisons, rollups, and correlations run off-warehouse
  • Metric definitions always sourced from the semantic layer
  • Optional warehouse-direct queries against Snowflake, BigQuery, Databricks, Redshift, or PostgreSQL
  • Governance unchanged, only the data path changes
Compute savings comparison loading

The aggregation and dimensions you already defined, read straight from dbt.

KPI Tree reads the aggregation type from each dbt metric definition, whether that is a sum, an average, a minimum, a maximum, or a point-in-time First Value, so weekly, monthly, and quarterly rollups are correct without any manual configuration. It also reads each metric's dimensions and, with dimension metrics enabled, expands them into a child metric per distinct value, so a revenue metric with a Region dimension gains a node for each region. Each child appears as its own node on the tree, receives its own RACI owners, and tracks independently. Dimensions with too many distinct values are skipped so trees stay navigable.

  • Aggregation type (sum, average, first, last) auto-detected from the dbt model
  • First Value aggregation handles point-in-time metrics correctly
  • Auto-generates child metrics for each dimension value, labelled by value
  • High-cardinality dimensions detected and skipped automatically
Semantic layer sync loading

Governed definitions in dbt, the accountability layer in KPI Tree.

Your dbt Cloud Semantic Layer stays the single source of truth for how every metric is calculated, and KPI Tree never re-implements that logic. It adds the layer dbt was never designed to carry. When a metric breaks its expected range, KPI Tree pushes the anomaly to the Accountable owner over Slack, Email, WhatsApp, or SMS, escalating up the org chart if it goes unactioned. Every task and workflow is tracked against the specific metric it targets, and impact is verified after the fact so you can see whether the action actually moved the number. KPI Tree's MCP server exposes that enriched context, the RACI owner, the significance-tested drivers, and the verified impact, to any AI assistant, not just the raw definitions your semantic layer already publishes.

  • dbt Cloud remains the sole source of truth for metric calculations
  • Anomalies pushed to the Accountable owner via Slack, Email, WhatsApp, or SMS
  • Actions tracked against their target metric, with impact verified after the fact
  • MCP server exposes RACI, significance-tested drivers, and verified impact to AI assistants
RACI accountability matrix loading

What makes this different from other tools that read the semantic layer

Plenty of products consume the dbt Cloud Semantic Layer and portable, standardised definitions. Shared definitions are the input to KPI Tree's accountability layer, not a substitute for it. The difference is the three things KPI Tree builds on top of your governed metrics.

causal · q < 0.05lag 3dq < 0.01Revenue-15%Conversion-23%Traffic+2%AOV-4%Checkout-31%PricingPaidOrganicBasket sizeDiscountsPayment errorsPage speed

Every source resolves onto one causal tree.

Statistical driver signals, not a flat catalogue

Most semantic layer consumers render your metrics as charts and tables. KPI Tree arranges them into a causal metric tree where every driver link carries a confidence level from proprietary ML models and statistical tests. That answers a different question: not what happened, but what is moving it and how sure we are.

Ownership, routing, and proof, not just definitions

Shared metric definitions are the starting point. KPI Tree adds the owner who is accountable as a first-class RACI primitive, the anomaly routed to their channel, and the proof the metric actually moved. Diagnosis is now table stakes everywhere. Closing that loop is not.

We read your definitions, we never ask you to redefine them

dbt tells the warehouse what your metrics are. KPI Tree reads them as an upstream source, so there is no competing semantic layer to reconcile, and it pulls metrics from several warehouses onto one tree at the same time. The industry move toward portable, standardised definitions makes that easier, not harder.

Related integrations. More sources that work with KPI Tree.

Common questions

Which dbt Cloud plans support this integration?
Team or Enterprise plans. The Semantic Layer API is not available on Developer plans. If you run dbt Core without dbt Cloud, use the dbt Core integration instead.
What permissions does the service token need?
"Semantic Layer Only" and "Metadata Only". Both are read-only. KPI Tree never writes to your dbt project, models, or deployment configuration.
Do I have to redefine my metrics in KPI Tree?
No. KPI Tree consumes your dbt definitions as an upstream source through the Semantic Layer API and never re-implements a calculation, so the numbers match dbt exactly and there is no second semantic layer to keep in sync. You spend your time modelling how metrics drive each other and who owns them, not re-entering definitions.
How does KPI Tree know whether to sum or take the last value across a week or month?
It reads the aggregation type straight from your dbt metric definition: sum, average, minimum, maximum, or a point-in-time First Value. Flows are summed and stocks take the latest value when metrics roll up to weeks, months, and quarters, all without manual configuration.
Can KPI Tree query our warehouse directly instead of going through dbt Cloud?
Yes. Link a warehouse connection and KPI Tree queries the warehouse directly against Snowflake, BigQuery, Databricks, Redshift, or PostgreSQL. Metric definitions still come from the semantic layer on every sync, so governance is unchanged. This is useful for large catalogues or teams that want the data path to run on their own infrastructure.
How does the sync work, and how often can I run it?
Trigger a manual sync at any time from the connection settings page. Each sync runs as a background job that queries the Semantic Layer API for your full metric catalogue, then compares the result against your existing catalogue and reports what was created, updated, or deleted. Because it runs as a job rather than one blocking request, large catalogues complete reliably. Existing tree structures and ownership are preserved on every re-sync.
What does "driver" mean statistically?
KPI Tree tests each candidate relationship with proprietary ML models and statistical tests, including Pearson correlation, lagged cross-correlation, partial correlation, and Granger causality, with a Benjamini-Hochberg correction to control false positives. Each surviving link carries a confidence level and is refreshed nightly. For technical audiences we describe these as statistical driver signals with confidence levels rather than proven causation.
What are dimension metrics?
When enabled, KPI Tree reads each metric's dimensions from the semantic layer, queries their distinct values, and creates a child metric for each one. A "Signups" metric with a Plan dimension gains "Signups (Plan: Free)", "Signups (Plan: Pro)", and so on, each labelled by its dimension value with its own ownership and tracking. Dimensions with too many distinct values are left out automatically.
Does KPI Tree modify my dbt project?
No. KPI Tree is a read-only consumer. It never writes to your project, models, or deployment configuration.
Does it work with single-tenant dbt Cloud instances?
Yes. The Semantic Layer host is configurable during setup. The default is the standard multi-tenant endpoint, but you can point it at any custom or single-tenant instance.
Should I use this or the dbt Core integration?
If you have a dbt Cloud Team or Enterprise plan, use this integration. It connects directly to the Semantic Layer API and requires no manifest uploads. The dbt Core integration is for teams running dbt Core without dbt Cloud.

You built the semantic layer. Now build on it.

Connect your dbt Cloud Semantic Layer to KPI Tree. Keep your governed definitions exactly where they are and add the causal structure, ownership, and accountability your organisation needs to act on what the metrics are telling you.

Experience That Matters

Built by a team that's been in your shoes

Our team brings deep experience from leading Data, Growth and People teams at some of the fastest growing scaleups in Europe through to IPO and beyond. We've faced the same challenges you're facing now.

Checkout.com
Planet
UK Government
Travelex
BT
Sainsbury's
Goldman Sachs
Dojo
Redpin
Farfetch
Just Eat for Business