How to Create Effective KPIs for Any Business

How to create effective KPIs: starting from objectives rather than available data, breaking an outcome into a tree of drivers that shows where to act, balancing leading and lagging indicators, adding counter-metrics, and writing definitions precise enough to compute, with a KPI tree on real retail data.

GloryTecks Team

Training & Placement Faculty

20 May 2026 6 min read

Last updated: 25 September 2026

Share:

A key performance indicator is a measurement used to evaluate how well an organisation, team or process is achieving defined objectives (Wikipedia: performance indicator). The definition contains the most important rule: a KPI exists because of an objective. Most weak KPIs start the other way round, from whatever data happens to be easy to count. This guide builds KPIs from objectives, shows how to break an outcome into drivers you can act on, and works through an example on real data.

Step 1: Start from the objective and the decisions

Write the objective in one sentence, such as "grow repeat revenue from existing customers this year", and then the decisions it depends on: which customers to target, which products to promote, how much to spend on retention. A KPI earns its place if it helps make one of those decisions. If a number could double or halve without anyone changing what they do, it is not a KPI; it may be interesting context, or a vanity metric. Vanity vs actionable metrics covers the difference in depth.

Kaplan and Norton's balanced scorecard started from the same insight: what you measure is what you get, and financial results alone can send misleading signals (Harvard Business Review: the balanced scorecard).

Step 2: Build a KPI tree

An outcome such as revenue is too broad to act on directly. A KPI tree breaks it into drivers that multiply or add up to it. For a shop:

revenue = active customers × orders per customer × average order value

Each branch points to different actions: marketing and retention for customers, engagement for frequency, range and pricing for order value. Computed for two consecutive quarters of a real UK online gift retailer's transactions, using orders with a customer ID (UCI: Online Retail):

python
import io
import urllib.request
import zipfile
import numpy as np
import pandas as pd

url = "https://archive.ics.uci.edu/static/public/352/online+retail.zip"
with zipfile.ZipFile(io.BytesIO(urllib.request.urlopen(url).read())) as archive:
    raw = pd.read_excel(archive.open("Online Retail.xlsx"), dtype={"InvoiceNo": str, "StockCode": str})
services = {"POST", "DOT", "M", "m", "C2", "D", "S", "B", "BANK CHARGES", "AMAZONFEE", "CRUK"}
sales = raw[~raw["InvoiceNo"].str.startswith("C") & ~raw["StockCode"].isin(services)
            & ~raw["StockCode"].str.startswith("gift_") & (raw["Quantity"] > 0) & (raw["UnitPrice"] > 0)
            & raw["CustomerID"].notna()]
sales = sales.assign(revenue=sales["Quantity"] * sales["UnitPrice"], quarter=sales["InvoiceDate"].dt.to_period("Q"))

def tree(q):
    s = sales[sales["quarter"] == q]
    customers, orders, revenue = s["CustomerID"].nunique(), s["InvoiceNo"].nunique(), s["revenue"].sum()
    return pd.Series({"revenue": revenue, "active customers": customers,
                      "orders per customer": orders / customers, "average order value": revenue / orders})

kpis = pd.DataFrame({str(q): tree(pd.Period(q)) for q in ("2011Q2", "2011Q3")})
kpis["change"] = kpis["2011Q3"] / kpis["2011Q2"] - 1
print(kpis.round({"2011Q2": 2, "2011Q3": 2, "change": 3}).to_string())
text
                         2011Q2      2011Q3  change
revenue              1770181.37  2170439.95   0.226
active customers        1988.00     2155.00   0.084
orders per customer        2.05        2.01  -0.020
average order value      434.61      501.60   0.154

Because the drivers multiply, the growth can be split between them:

python
total = np.log(kpis.loc["revenue", "2011Q3"] / kpis.loc["revenue", "2011Q2"])
for driver in ("active customers", "orders per customer", "average order value"):
    share = np.log(kpis.loc[driver, "2011Q3"] / kpis.loc[driver, "2011Q2"]) / total
    print(f"{driver:<22} explains {share:.0%} of the revenue growth")
text
active customers       explains 40% of the revenue growth
orders per customer    explains -10% of the revenue growth
average order value    explains 70% of the revenue growth

Revenue grew 22.6%. The tree shows how: larger orders contributed most, more active customers contributed a large share, and slightly fewer orders per customer held growth back. A single revenue KPI would have shown only "up 23%". The tree tells each team what happened in its own lever, and it prompts the next question: what drove the larger orders, such as seasonal products or price changes?

Step 3: Balance leading and lagging indicators

Lagging indicators measure results after the fact, such as revenue or annual churn; they are easy to measure but hard to influence directly. Leading indicators are drivers that predict future outcomes, such as proposals sent or trial activations; they are more actionable but harder to link to results (Wikipedia: performance indicator). A good set pairs them: revenue with active customers and order frequency, churn with product usage or support contacts. Leading indicators give time to react; lagging ones confirm whether reacting worked.

Step 4: Add counter-metrics

Any KPI pursued hard can be gamed or can damage something else. Average order value can be raised with aggressive bundling that increases returns; call-centre handling time can be cut by rushing customers. Pair each KPI with a counter-metric that would reveal the damage, such as return rate alongside order value, or repeat contacts alongside handling time.

Step 5: Define each KPI precisely

Targets and ownership come later; first the definition must be computable and unambiguous. For each KPI write down:

  • Name and purpose: what decision it supports.
  • Formula, with exact inclusions and exclusions: whether revenue includes returns, postage or tax, and which orders count.
  • Data source and grain.
  • Owner: the person accountable for it.
  • Target and time frame. The SMART criteria are a useful test for the target: specific, measurable, assignable, realistic and time-bound (Wikipedia: SMART criteria).
  • Review frequency and where it is reported.

In the example above, "revenue" meant product sales from orders with a customer ID, excluding cancellations, postage and fees. Another team using a different definition would report a different number, and that is exactly how conflicting reports start.

How many KPIs?

A handful per objective: typically one outcome and two to four drivers, plus counter-metrics. Leadership scorecards usually carry five to eight in total; KPI scorecards for executives covers how to report them with targets and status.

Common mistakes

  • Measuring what is easy instead of what matters.
  • Too many KPIs, so none gets attention.
  • No owner, so nobody acts when a KPI moves.
  • Targets without a basis, especially ones that ignore seasonality.
  • Changing definitions silently, which breaks comparisons over time.
  • Only lagging measures, which report problems when they are too late to fix.

What is the difference between a KPI and a metric?

Every KPI is a metric, but only the few metrics tied directly to an objective and used to judge progress towards it are KPIs.

How often should KPIs be reviewed?

As often as the decisions they support are made: weekly or monthly for operational KPIs, quarterly for strategic ones. Review the KPI set itself once or twice a year.

Can a small business use KPIs?

Yes, and a simple tree such as customers, frequency and order value works for almost any shop or service business. Start with three to five measures in a spreadsheet.

What should I do when a KPI moves and nobody knows why?

Walk down the KPI tree: find which driver moved, then break that driver down by segment, such as region, product or customer type, until the change is located. That is usually faster than debating causes at the top level.

Should KPIs be the same across teams?

The top-level outcomes should be shared, while each team owns the driver KPIs it can influence. That is what a KPI tree provides.

Analysts who build KPIs well are the ones who help decisions most; how data analysts add real business value covers that wider role. KPI analysis and sales and revenue analysis are part of the business analytics concepts module of the Data Analytics course.

Sources

GloryTecks Team

Training & Placement Faculty

The GloryTecks faculty team mentors learners across Data Science, AI and Data Engineering, with a focus on real-time projects and placement readiness in Hyderabad.

Want to master Data Analytics?

Join GloryTecks’ expert-led Data Analytics training in Hyderabad with real-time projects and 100% placement support.

Explore course