TL;DR
ABC XYZ analysis segments your products (or customers) into 9 groups using two dimensions: how much revenue they generate and how stable that demand is. It takes a few hours in a spreadsheet and changes how you prioritize everything.
I knew the Pareto principle - 80% of revenue comes from 20% of products. But that only answers half the question.
Some products bring in a lot of money but sell unpredictably. Others bring in less but you can count on them every single month. Treating both the same way is a mistake - different inventory strategy, different ad spend, different attention from sales.
ABC XYZ analysis separates these two dimensions. Here's how it works.
What is ABC XYZ analysis
It combines two independent analyses into one segmentation matrix.
ABC analysis ranks items by revenue contribution, based on the Pareto principle:
Group A: ~20% of items generating ~80% of total revenue
Group B: next ~30% of items, generating ~15%
Group C: remaining ~50%, generating ~5%
*XYZ analysis ranks items by demand stability, using coefficient of variation (CoV = standard deviation / mean):
*
Group X: CoV under 10% - stable, predictable demand
Group Y: CoV 10-25% - moderate fluctuations
Group Z: CoV over 25% - unpredictable, random demand
Combine them and you get a 3x3 matrix with 9 segments: AX, AY, AZ, BX, BY, BZ, CX, CY, CZ.
Step 1 - Run the ABC analysis
You need: revenue data per product for a period (minimum 6 months, ideally 12).
In Google Sheets:
- List all products with their total revenue
- Sort by revenue descending
- Calculate each product's share: =B2/SUM($B$2:$B$100)
- Calculate cumulative share: =C2 for first row, =D2+C3 for subsequent rows
- Assign groups: A = cumulative share up to 80% B = cumulative share 80-95% C = cumulative share above 95% Example from a furniture store with 7 product categories:
Product | Revenue | Share | Cumulative | Group
Wardrobe | 9,500,000 | 33.9% | 33.9% | A
Kitchen table | 8,500,000 | 30.4% | 64.3% | A
Sofa | 4,000,000 | 14.3% | 78.6% | A
Chairs | 3,000,000 | 10.7% | 89.3% | B
Beds | 1,500,000 | 5.4% | 94.7% | B
Armchair | 1,000,000 | 3.6% | 98.3% | C
Shelf | 500,000 | 1.7% | 100% | C
Three product categories - wardrobe, kitchen table, sofa - account for 78.6% of all revenue.
Step 2 - Run the XYZ analysis
You need: monthly sales data for each product over the same period.
In Google Sheets:
=STDEV(B2:M2)/AVERAGE(B2:M2)
Apply to each product row. Then assign groups based on the result:
Product | Jan | Feb | Mar | CoV | Group
Wardrobe | 1,500k | 1,600k | 1,400k | 5.4% | X
Kitchen table | 1,800k | 1,200k | 1,300k | 18.3% | Y
Sofa | 500k | 600k | 150k | 46.3% | Z
The wardrobe sells consistently every month (X). The kitchen table fluctuates moderately - probably seasonal (Y). The sofa has big swings - high in winter, almost nothing in summer (Z).
Step 3 - Combine into the matrix
Map each product to its final segment using both letters. Then interpret:
AX - High revenue, stable demand. Your core. Keep in stock, prioritize marketing, don't let these run out.
AY - High revenue, moderate fluctuations. Plan inventory around seasonal patterns. Worth investigating what drives the swings.
AZ - High revenue, unpredictable demand. This is the interesting one. You're making money but can't plan for it. Find the cause - seasonality, competition, marketing? The potential is there, the predictability isn't.
BZ / CZ - Low revenue, unstable demand. These consume time and shelf space without proportional return. Consider switching to pre-order model or cutting entirely.
In the furniture example: wardrobes and kitchen tables (AX, AY) got increased ad budget and guaranteed stock levels. The sofa (AZ) got investigated - turned out to be winter seasonality, not a problem. Armchairs and shelves (CZ) were moved to pre-order, freeing up warehouse space with almost no revenue impact.
What didn't work for me
Three months of data isn't enough. You'll see too many false Z results from normal variation. Use at least 6 months, preferably 12 to capture seasonal patterns properly.
The analysis shows what, not why. A product lands in AZ - high revenue, unstable demand. That's a fact. Whether it's seasonality, a competitor, or a one-off campaign from last year - the spreadsheet won't tell you. You have to dig into that separately.
Acting too fast on C-group products. First instinct is to cut everything in C. But some CX products are essential for the catalog even if they don't drive revenue. Check before you cut.
When to use this
Good fit:
Large product catalog where you've lost track of what's actually performing
Planning inventory or procurement for the next period
Deciding where to focus sales team effort
Justifying which products to cut or de-prioritize
Not useful:
If you have fewer than 20 products (you probably already know the answer)
If your data is less than 6 months old
As the only input for major decisions - it's one lens, not the full picture
What's next
Doing this manually every quarter takes a few hours. In the next post I'll show how I built a Claude Code subagent that runs the full analysis automatically from a CSV file.
Tags: #productivity #tutorial #beginners #analytics #business

Top comments (0)