ABC analysis sorts products into three classes by how much of a chosen value they produce, usually revenue or gross profit over a fixed period. A items are the few that bring in about 80% of that value, B items the next 15% and C items the last 5%. It is the Pareto principle applied to a product list, and it shows where tight control and extra effort pay off.
Inventory teams use the classes to set reorder rules, safety stock and cycle counts. For an online store the same ranking also decides where product data work goes first: which listings get complete attributes, extra images and translations now, and which can wait or leave the range. This guide covers the formula, a worked example with 14 products ranked two ways, the XYZ extension for demand swings, and the traps that put a product in the wrong class.
The ABC classification formula, step by step
There is no single official cutoff. Shopify's ABC analysis by product report grades A products at around 80% of revenue, B at about 15% and C at about 5%, while the textbook example on Wikipedia uses 70%, 25% and 5%. Pick your cutoffs once and keep them, so a class means the same thing from one quarter to the next.
- Pick the value and the window. Revenue, gross profit or units sold, over a period long enough to smooth out single large orders: 8 to 13 weeks for a fast-moving range, 12 months for a seasonal one.
- Pull one row per product with that value from your store or order export. Net out returns and refunds where you can, or a product that comes back often looks stronger than it is.
- Sort the rows from highest to lowest value.
- Compute the cumulative share for each row: the running total of the value divided by the grand total.
- Assign the class. A while the cumulative share is at or below 80%, B up to 95%, C for everything after that.
In a spreadsheet that is three columns: share = value / SUM(value), cumulative = previous cumulative + share, and an IF on the cumulative column for the class. The class is only as good as the value column, so most of the effort goes into step 2.
Worked example: 14 outdoor products ranked by revenue and by profit
An illustrative outdoor gear store sold EUR 100,000 worth of 14 products in eight weeks. The table ranks them by revenue, then reruns the ranking on gross profit (revenue times gross margin, EUR 43,780 in total) with the same 80% and 95% cutoffs.
ABC classes for 14 outdoor products, by revenue and by gross profit
| Merino base layer top | 24,000 | 24.0% | A | 55% | 13,200 | A |
|---|---|---|---|---|---|---|
| Waterproof hiking jacket | 19,500 | 43.5% | A | 45% | 8,775 | A |
| Trail running shoes | 15,000 | 58.5% | A | 30% | 4,500 | A |
| 60 L trekking backpack | 12,500 | 71.0% | A | 40% | 5,000 | A |
| Down sleeping bag | 9,000 | 80.0% | A | 25% | 2,250 | B |
| Insulated bottle 1 L | 5,500 | 85.5% | B | 50% | 2,750 | A |
| Trekking poles (pair) | 4,000 | 89.5% | B | 45% | 1,800 | B |
| Headlamp 400 lm | 3,000 | 92.5% | B | 35% | 1,050 | B |
| Merino hiking socks 3-pack | 2,500 | 95.0% | B | 65% | 1,625 | B |
| Titanium camping mug | 1,800 | 96.8% | C | 55% | 990 | C |
| Dry bag 10 L | 1,400 | 98.2% | C | 60% | 840 | C |
| Gaiters | 900 | 99.1% | C | 50% | 450 | C |
| Folding spork | 500 | 99.6% | C | 70% | 350 | C |
| Baseplate compass | 400 | 100.0% | C | 50% | 200 | C |
By revenue, five products make 80% of sales. Ranked by gross profit, the 1 L insulated bottle moves up to A on its 50% margin, and the down sleeping bag drops to B: EUR 9,000 in sales at a 25% margin leaves EUR 2,250 of gross profit, less than the bottle's EUR 2,750. With only 14 products, A is more than a third of the range; in a catalog with a long tail of slow sellers it is a much smaller share of the SKU count.
Choosing the value: revenue, gross profit or units
Revenue is the default because every store has it. Shopify's report calculates it from the retail price of items, excludes discounts and does not look at item cost, according to its Help Center page. A heavily discounted product therefore looks stronger than the cash it brought in, and a low-margin bestseller ranks the same as a high-margin one.
- Revenue fits stock and service decisions: an A item that runs out loses the most sales.
- Gross profit fits decisions about effort and money: content work, ad budget and range reviews. It needs a cost price on every product. To include channel fees and other variable costs, rank on contribution margin instead.
- Units sold fits warehouse work: which products get the closest pick locations and how often a location is counted.
Many teams run two rankings and act on where they disagree. A product that is A by revenue and C by profit is a pricing or sourcing question, not a content one. Ranking within each category, instead of across the whole store, gives assortment planning its shortlist of category winners and laggards.
Adding XYZ analysis for demand variability
ABC says how much a product is worth. XYZ says how predictable its demand is. Take weekly units sold, divide the standard deviation by the mean, and you have the coefficient of variation (CV). A low CV means steady demand; a high CV means spiky or intermittent sales.
There is no standard cutoff for XYZ either, and planning tools set their own. This example uses X below 0.5, Y from 0.5 to 1.0 and Z from 1.0 up. Treat those limits as a starting choice and test them on your own sales history: if almost every product lands in Z, they are too low for your range. Applied to three products from the example over the same eight weeks (population standard deviation, STDEV.P in Excel):
- Merino base layer top: 40, 44, 38, 42, 41, 39, 43 and 41 units. Mean 41, standard deviation 1.9, CV 0.05: AX.
- Headlamp 400 lm: 14, 2, 9, 17, 2, 10, 4 and 14 units. Mean 9, standard deviation 5.5, CV 0.61: BY.
- Down sleeping bag: 2, 9, 0, 0, 14, 3, 0 and 4 units. Mean 4, standard deviation 4.7, CV 1.18: AZ on revenue, BZ on profit.
Take known seasonality out before you compute the CV, or every winter product lands in Z. Comparing each week with the same week last year, or computing the CV within the season only, keeps the class about volatility instead of the calendar.
The nine ABC-XYZ combinations and what each one needs
Crossing the two rankings gives nine cells. The stock rules below are the usual starting points; adjust them to your lead times and how much a stockout costs you.
ABC-XYZ matrix: stock approach per cell
| A | Automated reorders, low safety stock, frequent counts | Forecast with seasonality, review stock weekly | Buffer stock or order against confirmed demand; find out what drives the spikes |
|---|---|---|---|
| B | Standard reorder points, monthly review | Periodic review with a moderate buffer | Order on demand where supplier lead times allow |
| C | Bulk orders, little attention | Minimal stock, bundle candidates | Order to demand, dropship or delist |
Product data follows the same logic. AX products sell every week, so a gap in their listing costs sales every week. AZ products need complete data before the spike, not after it: a sleeping bag that sells 14 in one week and none the next has to be listed, translated and in every feed before the cold weather arrives.
Treating A, B and C items differently in your catalog
Most inventory guides stop at reorder rules. For an online store the ranking is also a work order for product data, because a missing size chart or an empty material field costs the most on the products that sell the most.
A items: complete data on every channel, checked first
A items get the full treatment and a regular check, so nothing breaks unnoticed on the listings that carry the business.
Product data checklist for A items
B items: fill the attributes that filter and compare
B items are the next tier and the likeliest to move up. Fill the attributes your filters and comparison tables use, so the product appears when a shopper narrows a list, and make sure it reaches every channel. This is usually where the gap is largest: in WISEPIM's State of Product Data report, the median catalog that used attributes had them filled on 1.9% of products when it arrived.
C items: templates, bundles or retirement
C items share 5% of the value, so they get the cheapest treatment that is still correct: descriptions built from attributes with a template, one good image, and a place in feeds only if they pass basic checks. Before cutting one, check what it does for other products. A spork bought with half the sleeping bags may protect A sales. The rest are candidates for SKU rationalization.
What the outdoor store changes after ranking its 14 products
Back to the example. The ranking only pays off when it turns into a short list of changes, owned by someone, with a date. For this store, the list after one run looks like this:
- Merino base layer top (AX): the steadiest seller and the biggest profit line. Check its size and fit data, care instructions and translations every month, and set automatic reorders. Nothing new to build, only to protect.
- Insulated bottle (B by revenue, A by profit): promote it. Give it the A checklist, a channel title per marketplace, and consider it as an add-on next to the jacket and backpack.
- Down sleeping bag (AZ by revenue, BZ by profit): list it complete before autumn, order against forecast for the cold months only, and review the 25% margin with the supplier before the next season.
- Headlamp (BY): fill the attributes shoppers compare on, such as lumens, battery type, beam distance and water resistance rating, so it shows up in filters next to the competing models.
- Spork and compass (C): keep the spork if order data shows it is bought with sleeping bags; give both a template description from attributes and one image, and stop spending time on them.
Five changes, each with an owner, is a better outcome of an ABC run than a colored spreadsheet. Next quarter, the same ranking shows whether the bottle stayed in A and whether the sleeping bag's margin improved.
Five ways an ABC ranking misleads
- Stockouts. A product that was out of stock for three of the eight weeks sold less because it could not sell. Check sell-through rate and days in stock before you demote it.
- New products. A launch with four weeks of history lands in C by default. Keep new items in a separate class until they have a full window.
- Seasonality. An eight-week window in spring ranks sleeping bags low. Rank seasonal ranges over the full season or 12 months.
- Parents vs variants. Ranking variants splits a strong style into many C sizes; ranking parents hides a color that does not sell. Rank at the level you decide on: the style for content, the variant for stock.
- Complements. A C accessory that sits in many A orders keeps those orders whole. Look at which products are bought together before delisting it.
Storing ABC classes as product data
Rerun the ranking monthly or quarterly with the same value, window and cutoffs, and keep the previous class next to the new one. A product moving from B to A is a signal; one dropping from A to C is an alarm. A class that lives only in a spreadsheet gets used once. Stored as two product attributes, such as abc_class and xyz_class, it can drive filters, work queues and ad campaigns.
Google Shopping shows why. Custom labels group products for bidding and reporting in Performance Max, Shopping and Demand Gen campaigns: five labels, custom_label_0 to custom_label_4, each value 1 to 100 characters, up to 1,000 unique values per label. Map abc_class to one of them and you can bid harder on A products and cap spend on C. Shoppers never see the labels.
WISEPIM is not an inventory system: it does not hold stock, place purchase orders or calculate ABC classes. It is where the class can live next to the rest of the product data: import the class column from your spreadsheet with a CSV import set to update existing products only, filter the catalog on it to run enrichment and quality fixes on A items first, and map it to a custom label in a Feed Hub Google Shopping feed. For the category view, Category Insights shows sales per category next to the data quality of what was ordered.
On the stock side, the Reorder planning page in WISEPIM analytics reads orders and stock levels from connected stores, lists products by how many days of stock they have left at their recent sales pace, and suggests a reorder quantity from your lead time and safety stock. You still place the order. It ranks by urgency, not by value, so it sits next to an ABC class instead of replacing it: an A item marked to order now is the first call of the week. To turn a turnover figure into days of stock by hand, use the inventory turnover calculator.

