The retail value tree
Retail value turns on availability and mix. The shelf either has the product when the shopper is there, or the sale moves to someone else and never appears in any system you own.
01 The same tree, this industry
Where the money is made and lost here
The structure does not change: value is profit plus how well that profit becomes cash, profit is revenue minus cost, and revenue is price times quantity. What changes is which drivers sit underneath each branch, and which system holds them. If you have not read the general version, start with the Enterprise Value Tree and come back.
The defining feature of this tree is that the largest single loss — the sale that did not happen because the shelf was empty — leaves no record anywhere. Everything else is measured to two decimal places, which is why availability is chronically under-managed.
Every driver below names the metric it lands on. Follow one and you get its formula, the system the number lives in, and the ways it is commonly misread.
02 Price
What decides the price you actually get
Everyday price against promotion
The split between base price and promotional volume decides realised margin far more than the headline price file does.
Price realisation net_revenue ÷ list_revenuePricePromotional depth and funding
Who paid for the promotion: you or the supplier. Booked centrally, decided locally, and rarely evaluated per event.
Contribution margin (net_revenue − variable_cost) ÷ net_revenuePriceMarkdown timing
The same stock cleared four weeks earlier is worth several margin points. Late markdown is the most expensive form of optimism.
Gross margin % (net_revenue − cogs) ÷ net_revenuePriceOwn brand mix
Higher margin, and a different working capital and quality profile that the mix decision usually ignores.
Contribution margin (net_revenue − variable_cost) ÷ net_revenuePriceBasket and attachment
What else goes in the basket, which is a merchandising and adjacency decision rather than a pricing one.
Attach rate orders_containing_the_attached_item ÷ eligible_ordersPriceChannel price parity
Online, marketplace and store prices that diverge by intent or by accident, and the margin consequence of each order routing.
Average order value net_revenue ÷ orders03 Quantity
What decides how much you sell
Footfall and conversion
Traffic is bought; conversion is earned. Reporting one without the other explains nothing.
Active customers count(distinct customers with at least one purchase in the window)VolumeOn-shelf availability
Not warehouse stock — the shelf. The gap between the two is the most under-measured number in the sector.
On-shelf availability store_days_product_available ÷ store_days_expectedVolumeRange and assortment
What is listed where, and whether the local range matches the local shopper.
Fill rate units_shipped ÷ units_orderedVolumeLoyalty frequency
How often a known customer returns, which is the only volume driver you can influence without discounting.
Purchase frequency orders_in_period ÷ active_customersVolumeDigital conversion
Sessions to orders, by device. Mobile conversion gaps are usually worth more than any acquisition campaign running.
Average order value net_revenue ÷ ordersVolumeSpace productivity
Sales per square metre by category, which is the retail version of the constrained resource question.
Market share your_units (or value) ÷ total_market_units04 Cost
What it takes to operate
Cost of goods and supplier terms
The largest line, and the one where supplier funding blurs the true product margin.
Gross margin % (net_revenue − cogs) ÷ net_revenueCostShrink and waste
Theft, damage, date expiry and process error — four different problems reported as one number.
Scrap and yield scrapped_quantity ÷ total_produced (yield is the inverse)CostStore labour
Scheduled against forecast footfall, paid against actual. The variance is a service and a cost problem at once.
Cost to serve (delivery + service + returns + order_handling) ÷ customers or ordersCostFulfilment and last mile
The cost of the promise made at checkout, which varies by basket, lane and delivery slot.
Freight cost per unit total_freight_cost ÷ units_shippedCostReturns
A sale reversed and a cost added twice, with a reason code that is usually the cheapest quality signal in the business.
Returns rate units_returned ÷ units_soldCostMarkdown and clearance
The cost of buying wrong, recognised late, and rarely attributed back to the buying decision.
Contribution margin (net_revenue − variable_cost) ÷ net_revenue05 Cash
Where the cash actually sits
Stock cover
Weeks of cover by category, which is the sector's working capital in its native units.
Stock cover current_stock ÷ average_daily_demandCashInventory turns
How hard the same capital works. A season's difference in turn is a balance sheet difference.
Inventory turns cogs ÷ average_inventory_valueCashSupplier terms
Often the largest source of funding in the business, and the one most exposed to supplier distress.
Days payables outstanding (accounts_payable ÷ cogs) × days_in_periodCashSeasonal build
Cash committed months before the season, on a forecast that is wrong in a knowable direction.
Forecast accuracy 1 − ( Σ|actual − forecast| ÷ Σactual )CashSpace and refit capex
Committed years ahead against a catchment that moves faster than the lease.
Capex intensity capital_expenditure ÷ net_revenueCashThe cycle as one number
Retail can run a negative cycle. Whether it does is a matter of terms and turn, not of trading.
Cash conversion cycle dso + dio − dpo06 Where the numbers live
The systems behind the branches
A value tree is only usable once each box maps to a system and a record. These are the six that matter most in retail: what each one is actually for, the records inside it the tree depends on, and which branch it feeds.
| System | What it holds | Key records | Feeds |
|---|---|---|---|
| POS | Every transaction line, by store, hour and operator — the only record of what the shopper actually bought. | Transaction, Line item, Store, Operator, Payment | Price, quantity |
| ERP / merchandising | The commercial master: cost prices, supplier terms, margin plans and the article master everything else joins to. | Article, Supplier, Cost price, Purchase order, Margin plan | Price, cost, cash |
| WMS and store replenishment | Stock by location and the replenishment logic between depot and shelf, which is where availability is actually decided. | Stock item, Location, Replenishment order, Delivery | Quantity, cash |
| E-commerce platform | Sessions, baskets and the fulfilment promise made at checkout, with the routing that decides its cost. | Session, Basket, Order, Fulfilment node | Price, quantity, cost |
| Loyalty / CRM | The identity layer: which transactions belong to the same shopper across channels and over time. | Customer, Card, Segment, Offer redemption | Quantity, price |
| Planning and allocation | Forecast, buy and allocation by store — the decisions that commit the cash and set the markdown risk. | Forecast, Buy plan, Allocation, Option | Cash, cost |
Almost every hard question in retail needs two of these joined. That join — not the calculation — is the work.
07 Where it leaks
Value lost between two systems
These are the losses that no single system can see, because the evidence is split across two of them. Each one is a real number that stays invisible until the join exists — which is why the tree is an integration exercise before it is an analysis one.
| Where value leaks | Why it happens | The join that finds it |
|---|---|---|
| Availability measured at the depot, lost at the shelf | WMS reports stock on hand at the distribution centre while the shopper stands in front of an empty facing. The two are different questions and only one of them loses sales. | Join POS sell-through to store-level stock and replenishment events |
| The online return that kills store margin | Bought online, returned in store, restocked at a different location. Three systems, one transaction, and margin attributed to none of them correctly. | Join the return to the original order line, the fulfilment node and the restock event |
| Supplier funding booked centrally, margin judged locally | Promotional income lands as a central credit while category margin is judged on gross product margin. Both numbers are right and the promotion is never evaluated. | Join supplier funding agreements to the promotional event and its sell-through |
| Shrink as one number | Theft, damage, expiry and process error have completely different fixes, and a single shrink percentage prevents any of them being made. | Join stock adjustments to reason code, location and shift |
| The shopper who is three customers | A loyalty card, an online account and a guest checkout are the same person. Frequency and lifetime value are computed on a base that does not exist. | Resolve loyalty, e-commerce and guest identities to one customer record |
08 Worked example
A strong season with a weak margin
Sales grew 6% and gross margin fell 1.4 points. The tree separates it: promotional mix took more volume than planned, markdown ran four weeks late on two ranges, and online growth carried a fulfilment cost that store sales did not. None of the three is visible on a sales report, and all three are decisions rather than accidents.
| Component | Effect | What sits behind it |
|---|---|---|
| Volume | +€3.4m | 6% growth, weighted to promotional lines |
| Promotional mix | −€1.9m | Deeper participation than planned |
| Late markdown | −€1.2m | Two ranges cleared four weeks late |
| Fulfilment cost | −€0.8m | Online growth at a higher cost to serve |
| Returns | −€0.5m | 6% of units, concentrated in two ranges |
| Net | −€1.0m | Growth that cost more than it earned |
Illustrative figures, shown to demonstrate the split. The point is the shape of the walk, not the numbers — on your own data the same bridge is built from your ledger.
09 Diagnostics
Six questions to ask in retail
Ask them of your own team before anyone asks them of you. In most organisations at least two of these cannot be answered without a manual exercise, and those two are the plan.
- Do you measure availability at the shelf, or stock at the depot?
- What was the margin on your last major promotion, after supplier funding and after the sales it cannibalised?
- Can you attribute an online return to the store that restocked it and the order that created it?
- How many customers do you have — and would loyalty, e-commerce and finance give the same answer?
- Which categories are funding the others, once shrink, markdown and fulfilment are allocated properly?
- When did you last change a buy decision because of a returns reason code?
10 The metrics behind it
Definitions for every box
11 Questions
Frequently asked
Why is on-shelf availability so hard to measure?
Because the loss leaves no record. A sale that did not happen has no transaction, so availability has to be inferred from expected sell-through against actual — which needs POS and stock data joined at store and article level, daily.
How should returns be treated in the tree?
As a cost on the cost branch and a signal on the price branch. The cost is handling, grading and markdown; the signal is the reason code, which usually points at product data rather than logistics.
Does this tree work for pure e-commerce?
Yes, with the availability branch replaced by conversion and the store labour line replaced by fulfilment. The structure holds; the drivers under quantity change.
What is the fastest domain to start with?
Availability, because it joins two systems you already have and produces a number the commercial team will argue with immediately. Arguments are engagement; indifference is the thing to fear.
See this tree on your own data
Connect the systems above, define each box once, and the tree stops being a slide.