KajoData / Career & business
15 KPIs I want every data analyst to understand
Acquisition gets cheaper, sales go up, and somehow the money does not follow. Here is how I connect 15 business metrics and check the story behind the cheerful green arrows.

When I learn a new tool, I can easily confuse progress with the number of functions I know. Yesterday a pivot table, today a CTE, tomorrow a Python model. Lovely. Then someone asks why the company is selling more but earning less, and my collection of functions suddenly becomes rather quiet.
I need a language for describing the business. That is where key performance indicators help. A metric becomes a KPI in relation to a particular goal, process and decision. Page views may be useful, but their place on the executive dashboard needs a stronger justification than being easy to count.
I have grouped fifteen measures into e-commerce, logistics and finance. That follows the journey from acquiring a customer to understanding what the company keeps. All amounts and numerical scenarios below are teaching examples. They do not describe KajoData or any of my employers. I use PLN consistently across this article and its Polish version, so the calculations stay directly comparable.
Before calculating, I agree on the rules
For every metric I want to know what it measures, for which period and population, where the data comes from, and what someone will do when it changes. If the final answer is “make the cell red,” I still have some work to do.
I also identify the grain of the data. A row might represent a customer, an order, an order line or a parcel. An order containing four products and travelling in two parcels can multiply impressively after a careless join. Unfortunately, the extra business exists only inside the query.
For ratios, the numerator and denominator need compatible scopes. I agree on currency, tax treatment, transaction statuses, time zone and the point at which a reporting period closes. A zero denominator gets an explicit unavailable result. It does not get a friendly zero simply because that makes the chart easier to draw.
These definitions sound like administrative chores until two departments present different answers to the same question. I prefer five boring lines of documentation to a very exciting meeting about whose spreadsheet is correct.
E-commerce: customers, baskets and repeat purchases
1. CAC: the cost of acquiring a new customer
I calculate Customer Acquisition Cost by dividing acquisition costs by the number of new customers. Spending PLN 12,000 to acquire 200 customers gives a CAC of PLN 60. The denominator contains new customers, rather than all orders, clicks or collected email addresses.
The scope of the numerator matters. Advertising spend alone gives a narrower measure than spend plus staff, agency work and tools. Shopify’s explanation of CAC provides a useful introduction to these components. I label the version explicitly. Two figures with identical names can describe quite different economics.
Then I look at acquisition channels. Attribution needs care: one person may watch a video, read an email and click an advert before buying. Adding independently reported customer counts from several platforms can double-count the same person. I also consider the delay between spending and conversion, especially when customers take weeks to decide.
A low CAC is interesting, but its value depends on the customers it brings. Buying a large audience that never comes back can be an expensive way to produce an attractive acquisition report.
2. LTV: the value of a customer relationship
Customer Lifetime Value describes value over time. The abbreviation alone does not specify revenue, margin or the observation horizon. I would rather show “12-month observed revenue LTV” than a mysterious lifetime estimate calculated to two decimal places.
Suppose a customer places four orders worth PLN 150 each. Those purchases produce PLN 600 of revenue. With a 30% contribution margin, they generate PLN 180 before the remaining costs covered by that definition. Comparing a PLN 200 CAC with PLN 600 looks comforting. Comparing it with PLN 180 invites a more useful conversation.
I separate observed results from forecasts. A new cohort has no twelve-month history yet, so its later purchases are assumptions. Shopify outlines common CLV approaches; I attach a time horizon and cost definition to whichever version I use. Predicting years of loyalty from two weeks of trading requires an unusually optimistic calendar.
When the business changes pricing or product mix, I revisit those assumptions. A model built on last year’s behaviour can remain mathematically tidy while becoming commercially irrelevant.
3. AOV: average order value
Average Order Value is revenue from a defined set of orders divided by the number of those orders. PLN 24,000 across 200 orders gives PLN 120. Before comparing periods, I specify how delivery charges, discounts and returns are treated.
An increase in AOV does not establish that a promotion worked. A “buy more, save more” offer can increase basket size while reducing contribution. A few unusually large purchases can also move the mean without changing the typical customer’s behaviour. I inspect the median, item count and distribution of order values as well.
I like separating new and returning customers. If returning customers have larger baskets, an increase in their share can lift the overall average even when neither group improves individually. I want to check that composition effect before crediting the entire result to a redesigned checkout button.
The practical question is what the larger basket leaves behind after the costs required to generate it. That connects AOV to several measures later in this article.
4. Cohort retention: who comes back
A cohort is a group defined by a shared event, such as making a first purchase in January. If 25 of those 100 customers purchase again in March, March purchase retention for that cohort is 25%. The original hundred remain the denominator.
Activity must be defined. I might count a purchase in a shop, use of a feature in an application, or an active subscription. Those are different behaviours. I also distinguish returning during a particular month from having returned at any time before that month ends.
I compare cohorts at the same age. Customers acquired last month have not had six months to demonstrate their behaviour. The product’s natural buying cycle matters too. Refrigerators and pet food create very different expectations. Weak monthly repeat purchasing of refrigerators does not automatically require an emergency retention team.
For small cohorts, I show the underlying customer counts. A percentage moving sharply because two people changed behaviour deserves a different interpretation from the same movement across thousands of customers.
5. Payback period: recovering acquisition cost
Payback measures how long cumulative customer contribution takes to cover acquisition cost. In a simplified model, PLN 120 of CAC and PLN 30 of monthly contribution imply four months. That calculation assumes regular contribution and no other changes.
With irregular purchases, I examine the cohort’s actual cumulative contribution curve. Returns, service costs and seasonality can shift the crossing point. I check that acquisition cost has not already been subtracted from the contribution used in the calculation. Deducting it twice is a surprisingly reliable way to make every campaign look disastrous.
A long payback means growth requires funding over time. It does not settle the business decision by itself. I need retention, uncertainty and available resources. A customer who becomes profitable over a year can still require cash today. A pleasing LTV-to-CAC ratio cannot pay this month’s bills on its own.
Logistics: after the customer clicks buy
6. Return rate: how much comes back
I can measure returns by units, orders or value. Thirty returned units out of a thousand shipped gives a 3% unit return rate. That is different from the proportion of orders containing at least one return, because an order can contain several products.
Timing is the main trap. This month’s returns may originate from last month’s sales. To assess a product, I group returns by order cohort and allow enough time for that cohort to mature. The latest week often looks wonderful when customers have barely opened their parcels.
I break the result down by product, variant, reason and channel. Then I consider handling costs and whether the goods can be resold. An identical return percentage can have different consequences for an untouched product and one that must be written off.
The next useful action might involve a size guide, packaging or product quality. The percentage gives me a starting point; the reason codes and a sample of cases help identify the work.
7. Lead time: how long the customer waits
Here I define lead time as the interval from order placement to delivery. In other processes, the same term can describe replenishment from a supplier. I write down both boundary events because the name alone is insufficient.
Alongside the mean, I examine the median and a high percentile, such as the time within which 90% of delivered orders arrive. A few extreme delays can move the mean considerably. Telling a customer waiting a week that the average looks excellent has limited therapeutic value.
I segment by region, carrier, weekday and service type. Undelivered orders need a separate check: excluding them can make the worst cases disappear from the report. I also specify calendar hours versus working hours. The weekend continues to exist even when the dashboard finds it inconvenient.
Changing the delivery mix can change the overall metric. A fair operational comparison needs similar destinations and services, rather than a single number stripped of context.
8. Order cycle time: where the process slows down
Operational names vary between organisations. In this example I use order cycle time for the interval from order acceptance to a parcel being ready for collection. Separating that stage from transport helps locate the part of the process that needs attention.
I break the total into waiting, picking and packing. A two-hour median can coexist with some orders waiting a day for unavailable stock. Stage timestamps and exception information are more useful than the final dispatch date alone.
I compare similar work. A single-item parcel and an order assembled across several warehouse zones have different requirements. Making one workstation faster does not guarantee that the whole process improves: the queue may simply move a few metres further along.
This is also why I look at the tail of the distribution. The typical experience and the experience of customers affected by exceptions are both relevant, but they ask for different operational responses.
9. Fill rate: what can actually be fulfilled
Fill rate needs a stated unit. It may refer to units, order lines or complete orders fulfilled from available stock. If customers request a thousand units and I can immediately ship 950, the unit fill rate is 95%.
Imagine an order with ten lines, one of which is unavailable. The line-based result looks reasonably good. The complete-order result records an order that could not be fulfilled in full. Both measures can be correct at the same time.
I examine important products, substitutes and the value of missed sales. A strong warehouse-wide percentage can hide shortages of the products people specifically came to buy. Segmentation and actual case counts give the percentage meaning.
I also agree on when fulfilment is assessed. Immediate availability and eventual delivery after a backorder tell different stories about service quality. A metric that quietly changes between those definitions will be difficult to trust.
10. Cost per shipment: the cost of sending a parcel
I divide an agreed set of costs by the number of dispatched parcels. PLN 15,000 of carrier charges across a thousand parcels gives PLN 15 per shipment. Adding packing materials and packing labour creates a broader fulfilment cost, which needs a corresponding label.
I keep parcels separate from orders. One purchase split into three shipments can have a low cost per parcel and an expensive total fulfilment cost. I examine both views, particularly when several warehouses serve the same customer.
Dimensional weight, delivery zones, surcharges and failed deliveries can explain changes. A shift in destination mix can move the average without any change in carrier terms. I want to understand that before announcing that the operation just became 20% more efficient.
Cost also needs to be considered alongside delivery quality. A cheaper service that creates more failed deliveries can transfer costs into another part of the business instead of removing them.
Finance: understanding what remains
11. COGS: cost of goods sold
Cost of Goods Sold relates to products actually sold during the period. Purchasing inventory and selling it can happen in different months. I therefore avoid treating the entire cash payment for new stock as the cost of that month’s sales.
Selling a hundred units with a unit cost of PLN 40 gives PLN 4,000 of COGS in a simple example. In a real report, I use the valuation and classification rules agreed with finance. Production costs, inbound transport and service delivery need treatment appropriate to the business.
For digital products, I distinguish accounting cost from a decision model that values my own time. I can estimate the effort required to create a course when evaluating its economics. That estimate does not automatically become accounting COGS. Keeping the two views clear prevents a useful planning assumption from being presented as an accounting fact.
12. Contribution margin: covering fixed costs
Contribution margin is revenue less variable costs. Revenue of PLN 100,000 and variable costs of PLN 65,000 leave PLN 35,000, or a 35% contribution margin. That amount helps cover fixed costs and contribute to the result.
I investigate what actually varies with volume. Product cost, payment fees and packaging may behave differently from a fixed team salary. Some costs have thresholds, minimum monthly charges or both fixed and variable components. The model needs to match the decision being considered.
This measure is especially useful for promotions. A product sold for PLN 100 with PLN 70 of variable cost contributes PLN 30. Reducing its price to PLN 90 leaves PLN 20. Maintaining total contribution now requires 50% more units, assuming the other conditions remain unchanged.
That calculation is deliberately simple. It gives me a clear question to investigate: can the promotion plausibly generate the additional volume without creating further costs or displacing more profitable purchases?
13. OPEX: keeping the organisation running
Operating Expenses follow the classification used in the income statement. They can include administration, selling costs and software. I agree the scope with finance because the same everyday cost label can receive different accounting treatment depending on its function.
I inspect the amount, its share of revenue and the reason for the change. Higher spending can represent team expansion, a one-off implementation or neglected subscriptions. Without that breakdown, the report compresses several different situations into “everything costs more.”
I do not casually add COGS, OPEX and all variable costs together. These can be overlapping views of the same spending. Each expense needs one place in the result model. Additional analytical classifications belong in clearly identified alternative views.
A useful variance explanation connects a change to something observable, such as headcount or a contract renewal. Merely repeating the percentage movement in a longer sentence adds very little.
14. Net profit margin: the final margin
Net profit margin is net profit divided by revenue. PLN 8,000 of net profit on PLN 100,000 of revenue gives 8%. I use the agreed net result, including the relevant expenses, financing result and taxes, rather than assembling an incomplete version from a few dashboard tiles.
Profit and cash also need separate treatment. Revenue can be recognised before a customer pays, while inventory can consume cash before it is sold. The SEC’s guide to financial statements explains the distinction between the income statement and cash flows.
A falling margin prompts questions about prices, product mix, costs and one-off events. It does not automatically tell me to stop growth. I explain causes and consequences, then relate the decision to the company’s wider plan and constraints.
15. The relationship between fixed and variable costs
I treat this as a measure defined for the model, rather than a universal KPI with one compulsory name. With PLN 30,000 of fixed costs and PLN 60,000 of variable costs, fixed divided by variable equals 0.5. Fixed costs as a share of their combined total equal one third. Those are different measures.
The interesting part is the mechanism. Higher volume can reduce fixed cost per unit until another employee or warehouse is needed. Costs may therefore remain fixed only within a particular range of activity and time.
I consider weaker sales and thresholds where costs jump. Automation might increase a fixed subscription while reducing the work required for another order. I examine both effects together instead of assuming one category of spending is always preferable.
Connecting the measures into one analysis
Imagine AOV rising from PLN 100 to PLN 120. The first slide looks encouraging. Then free shipping and discounts reduce contribution margin from 30% to 20%. Contribution per order falls from PLN 30 to PLN 24, under the simplified assumption of comparable baskets and cost treatment.
I add order volume, acquisition cost, returns and repeat purchases. The promotion may have acquired a valuable cohort whose contribution develops over time. It may also have attracted one-time bargain hunters. The larger basket alone cannot distinguish those explanations. I need observations and explicit assumptions.
I frame a testable question: did the promotion increase total contribution in a comparable segment and period? Seasonality and customer composition matter. Without a suitable comparison, I describe changes that happened together rather than presenting them as proof of causation.
The recommendation should follow the evidence. I might suggest a smaller repeat test in a particular segment, a different discount structure, or further observation before increasing the budget. I would also state which new result could change that recommendation.
The exercise I would start with
I would take a small synthetic order dataset and calculate AOV, customer count and contribution margin. Then I would add a multi-item order, a partial return and a returning customer. If the result breaks, good: I have discovered the problem before anyone uses the report to make a decision.
Next I would write a short metric definition: name, purpose, formula, exclusions, source, refresh frequency and owner. Under it I would put two sentences of interpretation and one limitation. That shows more analytical thinking than fifteen unexplained numbers arranged in attractive rectangles.
For a practical segmentation exercise, try my SQL histogram tutorial. If you are planning your first analytical role, I have also described my approach to changing careers. I would start with one problem and a few well-defined measures. Additional tool features can join the party when the analysis actually needs them.
Key takeaways
Which KPIs would you learn first?
I would start with AOV, CAC and contribution margin in one small retail example. For each metric I would define the numerator, denominator, period, data source and decision it supports. Then I would add retention and logistics.
Does customer lifetime value mean profit?
It depends on the definition. Revenue-based LTV measures revenue; margin-based LTV subtracts specified costs. Before comparing it with CAC, I need an explicit definition and time horizon so that revenue is not treated as money available to spend.
Why can improving a KPI hurt the business?
Metrics interact. Discounts can increase order value while reducing contribution margin, and cheaper shipping can make delivery slower. I examine several measures together, customer segments and the side effects of a proposed change.
