ABC Analysis: How to Split Products by Revenue and Ad Spend
Find the products that take an A share of your ad budget but bring a C share of revenue, using one Google Ads product export and a spreadsheet.
ABC analysis ranks products by their share of a total and splits them into three classes. A holds the few products that bring most of that total, B the middle, and C the long list that brings little. If your store runs Google Ads, run it twice on one product export: once on revenue, once on ad spend. Protect products that are A on both. Give more room to products that rank higher on revenue than on spend. Question products that spend like an A but earn like a C.
What is ABC analysis?
ABC analysis, also called ABC classification, comes from inventory management. Wikipedia (ABC analysis) describes it as a way to split stock into three classes with different levels of control. Control is tight for A, moderate for B and minimal for C. The classic base is each item’s annual usage value: its yearly requirement multiplied by its cost per unit.
The method works because value is rarely spread evenly. A small share of items usually carries most of it, and Wikipedia compares ABC with the Pareto principle for that reason.
You choose the thresholds. Wikipedia says there are no fixed thresholds and gives an example split: 20% of items for 70% of value, 30% for 25% and 50% for 5%. Shopify’s retail guide (ABC Analysis: Categorize and Optimize Inventory) uses revenue instead: A products bring the top 80% of revenue, B the next 15%, C the last 5%.
For a store that sells through Google Ads, ABC is one way into a wider question: which products make money from your ads, and for how long. This guide runs ABC on the data your ad account already holds.
Stock value, total sales or ad data: which base should you use?
The base decides what the classes mean. Stock value shows where your cash is tied up. Total sales show what the store lives on. Ad data shows where your ad budget goes and what it brings back.
| Base | What it measures | Where the data comes from | What it misses in an advertised store |
|---|---|---|---|
| Stock value | How much cash each item ties up in stock | Purchasing and stock records | Anything about ads: a product can be class A in the warehouse and never appear in an ad |
| Total sales | Each product’s share of the store’s revenue from all channels | Your store’s order data | Which sales the ads brought, and what they cost |
| Ad revenue | Each product’s share of the revenue your ads brought in | Product report in Google Ads | Sales from other channels; profit |
| Ad spend | Each product’s share of what you spent on ads | Product report in Google Ads | Whether that money came back |
The ad version uses two columns from one Google Ads product report: the revenue your ads brought in and what you spent on ads for each product. That revenue is the conversion value Google credits to your ads. It is only part of your store’s sales: orders from organic search, email and direct visits stay outside it. It is also revenue, not profit, because an ad account holds no cost prices.
One option in Shopify’s guide is to spend more on marketing and advertising for A products. In an ad account, check the spend column first: your A products may already take most of the budget.
Where do you get revenue and spend per product?
Google Ads has a product-level report. According to Google Ads Help (Monitor and optimize your Shopping campaigns), the predefined reports in Report editor split performance by item ID:
- Click the Campaigns icon, open the Insights and reports menu and select Report editor.
- Click “View all” in the “Predefined reports (formerly Dimensions)” card.
- In the Shopping section, choose Item ID.
- Add columns for cost (your ad spend), conversions and conversion value. The Add menu groups metrics by type, such as Performance and Conversions.
- Set the date range and download the report as a .csv file.
Two things to settle before you build the sheet:
- Performance Max product totals can differ from campaign totals. The same Help page explains why: item-level reporting covers Shopping inventory, while a Performance Max campaign also serves on other channels. Item-level metrics may be higher or lower as a result. Classify products against the export’s own totals.
- Pick the date range you will act on. We suggest the last 90 days for the classes. Before you cut a product’s budget, check its last 12 months: a seasonal product may be in its off-season. A product your ads never showed in that date range has no revenue and no spend to rank, so the sheet can’t classify it.
How to run ABC analysis in Excel or Google Sheets
These formulas work the same in Excel and Google Sheets. They assume ten products in rows 2 to 11, so extend the ranges to your last row.
- Paste the export. Column A is Item ID, B the product title, C cost, D conversion value. Delete any total rows.
- Cumulative revenue share in E2:
=SUMIF($D$2:$D$11,">="&D2)/SUM($D$2:$D$11). It adds this product’s revenue to the revenue of every product that earned at least as much, so you don’t need to sort. - Revenue class in F2:
=IF(E2<=0.8,"A",IF(E2<=0.95,"B","C")). This is the 80/15/5 split. To use other thresholds, change 0.8 and 0.95. - Spend share and class in G2 and H2:
=SUMIF($C$2:$C$11,">="&C2)/SUM($C$2:$C$11)and=IF(G2<=0.8,"A",IF(G2<=0.95,"B","C")). - ROAS and the pair in I2 and J2. ROAS is revenue divided by spend:
=IF(C2>0,D2/C2,""). The pair joins the two classes:=F2&H2, so “CA” means revenue class C, spend class A. - Fill down and filter by column J.
Products with equal values get the same share and the same class. Every product with zero revenue lands in revenue class C, whether it spent almost nothing or a large share of the budget. The spend class in column H tells those products apart.
ABC analysis example: ten products, two classes each
Example store, not client data.
A tableware store exports 90 days of product data. The example has ten products to keep the arithmetic visible. A real export has hundreds or thousands of rows, and the formulas stay the same. The store spent 4,000 on ads, and the ads brought in 10,000 of revenue, so its ROAS is 2.5.
| Product | Spend | Revenue | ROAS | Cumulative revenue share | Revenue class | Cumulative spend share | Spend class |
|---|---|---|---|---|---|---|---|
| Casserole dish set | 1,200 | 3,600 | 3.0 | 36% | A | 30% | A |
| Chef’s knife | 600 | 2,200 | 3.7 | 58% | A | 67.5% | A |
| Dinner plate set | 450 | 1,400 | 3.1 | 72% | A | 78.75% | A |
| Frying pan | 300 | 900 | 3.0 | 81% | B | 86.25% | B |
| Teapot | 140 | 700 | 5.0 | 88% | B | 94.75% | B |
| Salad bowl | 110 | 450 | 4.1 | 92.5% | B | 97.5% | C |
| Mug set | 200 | 300 | 1.5 | 95.5% | C | 91.25% | B |
| Cutlery tray | 50 | 250 | 5.0 | 98% | C | 100% | C |
| Egg cups | 50 | 200 | 4.0 | 100% | C | 100% | C |
| Wine glasses | 900 | 0 | 0 | 100% | C | 52.5% | A |
By revenue class, the store looks like this:
| Revenue class | Products | Revenue | Share of revenue | Spend | Share of spend | ROAS |
|---|---|---|---|---|---|---|
| A | 3 | 7,200 | 72% | 2,250 | 56% | 3.2 |
| B | 3 | 2,050 | 20.5% | 550 | 14% | 3.7 |
| C | 4 | 750 | 7.5% | 1,200 | 30% | 0.6 |
Class C brings 7.5% of revenue and takes 30% of spend. Three quarters of that spend is one product: the wine glasses took 900, or 22.5% of all spend, and sold nothing.
By revenue class, the wine glasses look like every other C product. Only their spend class shows they are the biggest leak in the store. The salad bowl is the opposite case: B on revenue, C on spend, with a ROAS of 4.1.
How to read the revenue and spend classes together
Put the two classes in one grid. The diagonal is where a product’s spend class matches its revenue class, and everything off it needs a decision. Here is the grid for the ten products of the tableware example:
| Revenue class | Spend class A | Spend class B | Spend class C |
|---|---|---|---|
| A | Casserole dish set, chef’s knife, dinner plate set | — | — |
| B | — | Frying pan, teapot | Salad bowl |
| C | Wine glasses | Mug set | Cutlery tray, egg cups |
Each pair names the revenue class first and the spend class second, so CA means revenue class C, spend class A.
| Pair | What it usually means | First move |
|---|---|---|
| AA | Top sellers that already get the budget | Protect: keep them in stock and in the feed, and check every month that they still sell |
| AB, AC, BC | Takes a bigger share of revenue than of spend | Give it room: its own listing group or campaign with more budget, then watch whether ROAS holds |
| BA, CA, CB | Takes a bigger share of spend than of revenue | Check its product-level ROAS, price and product page; cut its share of budget and keep it live |
| BB | The middle of the catalogue | Leave it and review with the next export |
| CC | The tail of the catalogue: little revenue, little spend | Keep it in a shared campaign; little money is at stake |
| Not in the data | No spend and no revenue in the date range | Untested, not class C: give it a short test before you judge it |
Ad spend is more concentrated than the textbook ABC example
In our study of 1.4 million products (1,404,808 products in 130+ stores, over 13 months), ad spend was far more concentrated than the inventory textbook suggests:
| Share of products | Share of ad spend in the median store |
|---|---|
| Top 1% | 27.7% |
| Top 5% | 54.0% |
| Top 10% | 68.1% |
Wikipedia’s example puts 70% of value in 20% of items. In the median store, the top 10% of products, half that share, already took 68.1% of ad spend. The study reads this as a sharper split than the familiar 80/20 rule.
Revenue was concentrated too. On average, the single top product brought in 9.3% of all revenue, the top 5 products 22.7% and the top 10 products 31.3%.
Across the whole sample, 7.9% of products sold at least once and took 78.1% of spend. Another 37.1% got budget but never sold and took 21.9% of spend. The remaining 55.0% got no budget at all.
So in that sample, a revenue-only ABC over the 13 months could rank only the 7.9% of products that sold. The 37.1% that got budget without a sale would all land in class C with zero revenue, next to small but real sellers. Their spend class tells them apart. The 55.0% with no budget have no spend and no revenue to rank: they are untested, not class C.
These figures are observations across stores, not an experiment. ROAS in the study is based on revenue, not profit.
What to do with each class in Google Ads
- Write each product’s pair into your feed. According to Merchant Center Help (Custom label 0–4 [custom_label_0–4]), you get five custom labels with definitions you choose, and each product takes one value per label. They stay hidden from shoppers. Google’s own example uses one label for “selling rate”, with values like “best seller” and “low seller”. Store the pair, “AA” to “CC”, in one unused custom label.
- Load the pairs without touching your main feed. According to Merchant Center Help (Create a product data source), a supplemental data source adds attributes to products already in your primary data source. It matches them by ID. Go to Settings → Data sources → Supplemental sources → Add supplemental product data, and choose a Google Sheets template. The Supplemental sources tab appears only after you turn on the Advanced data source management add-on.
- Group products by the custom label. In Performance Max, subdivide listing groups by custom label; in Shopping campaigns, do the same with product groups. According to Google Ads Help (Manage a Performance Max campaign with listing groups), an asset group can have up to 1,000 listing groups. Google recommends grouping products with custom labels rather than building more groups. New or edited labels can take 24–48 hours to appear in Google Ads, according to Google Ads Help (Use custom labels for Shopping ads).
- Split campaigns only where volume allows. The portal’s rule of thumb: split a campaign only if it gets more than 100 conversions a month, or if its parts differ in ROAS by more than 50%. Even then, each part should still get at least 30 conversions a month. Below that, keep the classes as listing groups inside one campaign and compare their results there.
- Cut the budget share and keep the product. For BA, CA and CB products, lower their share of the budget and leave them live. In our study, 35.4% of products that spent at least the cost of one conversion without a sale converted later, after a median of 2 months.
- Re-run every month. In our study, 64.7% of winners were one-offs: one conversion in one month. A steady winner held its status for a median of 3 months, and 71% of bestsellers stayed at the top for no more than 3 of the 13 months. A product that reached class A on one order is not a bestseller yet, and last quarter’s A list is already out of date.
- Add demand stability once the classes settle. A revenue share shows how much a product sells, but not how steadily. Classifying products by that as well gives ABC-XYZ analysis, which separates steady A products from A products carried by one good month.
To skip rebuilding the sheet every month, use the portal’s product labels: every product gets a label based on how it behaves in ads over 12 months. The portal recomputes the labels with every data refresh. These labels are a separate scheme from ABC classes and range from Bestsellers and Long tail to Dormant and To remove.
ABC analysis vs performance labels compares the two approaches. You can export any label group to CSV and set it next to your own sheet.
See which of your products sell and which only spend. Every product gets a label based on how it behaves in ads. The portal changes nothing without your consent.
Sources
- ABC analysis (Wikipedia) — ABC as an inventory categorisation with three levels of control; annual usage value as the base; no fixed thresholds; the 20%/70%, 30%/25%, 50%/5% example; comparison with the Pareto principle. Checked 2 October 2026.
- ABC Analysis: Categorize and Optimize Inventory (Shopify) — the 80/15/5 split by revenue; more marketing and advertising spend on A products as one option. Checked 2 October 2026.
- Monitor and optimize your Shopping campaigns (Google Ads Help) — Report editor predefined reports by item ID, adding columns and downloading as .csv; item-level Performance Max reporting covers Shopping inventory only. Checked 2 October 2026.
- Custom label 0–4 [custom_label_0–4] (Google Merchant Center Help) — five custom labels with your own definitions; one value per product per label; not shown to customers; the “selling rate” example. Checked 2 October 2026.
- Create a product data source (Google Merchant Center Help) — what a supplemental data source does; matching by ID; the Google Sheets template; the Supplemental sources tab needs the Advanced data source management add-on. Checked 2 October 2026.
- Manage a Performance Max campaign with listing groups (Google Ads Help) — listing groups by custom label; up to 1,000 listing groups per asset group; the recommendation to group items with custom labels. Checked 2 October 2026.
- Use custom labels for Shopping ads (Google Ads Help) — custom labels for product groups in Shopping and Performance Max; 24–48 hours for new or edited labels to appear. Checked 2 October 2026.
- GetProfit study: 1,404,808 products, 130+ stores, 13 months — share of spend in the top 1%, 5% and 10% of products; top products’ share of revenue; catalogue layers and their share of spend; later conversions; how long bestsellers last.
- GetProfit portal methodology — the rule of thumb for splitting a campaign by conversion volume and ROAS difference.
Product Performance in Google Ads: What Sells, How Long
See which products earn their ad spend and what to do with each group. In our study of 1.4 million products, a steady bestseller lasted a median 3 months.
Product Life Cycle Marketing in Google Ads, Stage by Stage
See how bids, budgets and campaign placement should change from launch to decline. In our study, a steady bestseller lasted a median of three months.
What Is Dead Stock? The Warehouse View vs Your Ad Account
Calculate dead stock from stock and sales data, and see why your ad account flags other dead products: ones never shown or spending without a sale.
How we increased an online store's sales 3-5x thanks to GetProfit
Product segmentation for Google Ads: how assortment analysis turned into five product groups by sales volume and a daily budget reallocation between them.
Assortment Planning for Online Stores: What to Add and Keep
Decide what your store carries using Google Ads data. In our data, growing stores earned a bigger share of revenue from new products than declining stores.
How the right taxonomy improves ad performance
Google Taxonomie: why product visibility, CTR and conversion rate all depend on getting the categories and attributes of your product feed right.