How to run Shopify ABC product analysis with margin weighting, automation, and templates

Shopify ABC product analysis ranks SKUs by impact so you invest in winners, right-size stock, and improve profit. This guide shows exactly how to do it in Shopify using real data, Google Sheets, and automation.

What is ABC product analysis for Shopify stores?

Definition and when to use it

ABC analysis segments your catalog into three classes based on contribution to results (typically margin or revenue):

  • A: small set of SKUs driving the majority of value

  • B: mid performers worth optimizing

  • C: long tail that requires control and selective investment

Use ABC to prioritize buying, replenishment, merchandising, and cycle counting. Recalculate on a cadence (monthly or quarterly) and whenever you change assortment or pricing.

ABC vs Pareto vs XYZ

  • Pareto describes the 80/20 pattern. ABC turns that idea into explicit classes with thresholds.

  • XYZ classifies demand variability:

    • X: stable demand (low variability)

    • Y: moderate variability

    • Z: highly variable or intermittent

  • Combine them (e.g., AX, BY, CZ) to choose different forecasting and safety stock strategies.

Which metric to classify: revenue, units, or margin

  • If you have cost per item, use contribution margin dollars per SKU. It aligns priority with profit.

  • If cost is missing, use net sales revenue as a proxy.

  • Units sold can help if pricing varies widely or for operational workloads.

  • Advanced: multi-criteria scoring (e.g., margin dollars + units + GMROI) for nuanced catalogs.

Benefits and use cases

Inventory investment and cash flow impact

  • Focus working capital on A-class to raise availability where it matters.

  • Reduce excess on C-class to free cash and lower holding costs.

  • Improve GMROI by rebalancing buys toward high-margin, high-velocity SKUs.

Merchandising and marketing prioritization

  • Feature A-class in ads, email, and site placements; protect them from stockouts.

  • Use B-class for testing new creatives and pricing.

  • Bundle or promote C-class thoughtfully to clear space without cannibalizing A-class.

Cycle counting and operational focus

  • Count A-class weekly, B-class monthly, C-class quarterly to maintain high inventory accuracy where risk is highest.

  • Prioritize QA, product setup, and PDP improvements for A-class.

Get your data from Shopify

Reports/exports to use (Sales by product, product export)

You’ll need two datasets for the same time window:

  • Sales by product/variant (Shopify Analytics > Reports):

    • Use Sales by product variant (or Sales by product) and include columns:

    • Product title, Variant title, Variant ID, SKU, Units sold, Gross sales, Discounts, Returns, Net sales

  • Product catalog export (Products > Export):

    • Include: Variant ID, SKU, Title, Option values, Vendor, Product type, Cost per item, Status

    • Optional: inventory quantities by location via Inventory reports if doing location-level ABC

Join on Variant ID (most reliable) or SKU if consistent.

Time window and seasonality choices

  • Standard: last 90 days for fast-moving catalogs; last 180–365 days for slower movers.

  • Exclude partial current weeks to avoid incomplete data.

  • For seasonal businesses, analyze season-to-date and the same season last year to set context.

Cleaning SKUs, variants, and mappings

  • Remove gift cards, shipping lines, and non-merchandise items.

  • Exclude zero-price test orders and internal transfers.

  • Normalize SKUs and fix duplicates. Use Variant ID to avoid ambiguity.

  • Aggregate at the variant level unless you truly stock and replenish at the parent product level.

Step-by-step: build an ABC in Google Sheets

Calculate value per SKU and cumulative percentages

Create a sheet with these columns:

  • Variant ID, SKU, Title

  • Units sold (period)

  • Net sales (period)

  • Cost per item

  • COGS = Units sold × Cost per item

  • Contribution margin = Net sales − COGS

  • Share of total margin = Contribution margin ÷ SUM of all contribution margin

  • Cumulative share = running total of Share of total margin after sorting by Contribution margin descending

If cost per item is unavailable, substitute Net sales for Contribution margin and proceed.

Example:

  • SKU A1: Units 1,200, Net sales $36,000, Cost $20, COGS $24,000, Margin $12,000

  • SKU B2: Units 400, Net sales $10,000, Cost $12, COGS $4,800, Margin $5,200

  • SKU C3: Units 150, Net sales $3,600, Cost $15, COGS $2,250, Margin $1,350

Sort by Margin, compute each SKU’s share and cumulative share of total margin.

Set thresholds and assign A/B/C classes

Common thresholds by cumulative share of margin:

  • A: top 70–80% of total margin

  • B: next 15–25%

  • C: remaining 5–10%

Assign class based on where each SKU’s cumulative share falls. If you prefer SKU-count constraints (e.g., A ≈ 10–20% of SKUs), fine-tune cutoffs to fit both share and count.

Quality checks, edge cases, and validation

  • Negative or near-zero margin: flag for price/cost review; treat as C or “X” (exception).

  • Outliers: a single promo may inflate a SKU; review price changes, stockouts, or one-off events.

  • Refund-heavy SKUs: consider net units after returns; products with high return rates might be downgraded.

  • Compare revenue-based vs margin-based ABC; large differences indicate pricing or cost opportunities.

  • Sanity check with teams: do A-class SKUs match what merchandising and ops see as core?

Margin-weighted and multi-criteria ABC

Compute contribution margin per SKU

Use margin dollars, not percentages, to drive ABC:

  • Contribution margin = Net sales − (Units sold × Cost per item)

  • Optional: subtract variable selling fees (payment processing, marketplace commissions) if you track them per SKU. If you only know an average rate, apply a uniform percentage.

Margin-based ABC aligns priority with profit impact, especially when prices and costs vary.

Weighted scoring approach

If you want a balanced view:

  • Normalize each metric to a 0–100 score (e.g., percentile rank):

    • Margin dollars (weight 60%)

    • Units sold (weight 20–30%)

    • GMROI or sell-through (weight 10–20%)

  • Composite score = SUM(weight × metric score)

  • Rank by composite score and assign A/B/C with similar cumulative thresholds.

This reduces bias toward high-priced items and highlights consistently productive SKUs.

When and how to adjust thresholds

  • High-SKU catalogs: tighten A to 60–70% share to keep A-class operationally manageable.

  • Luxury/high-ASP: use margin-based ABC with a stricter A threshold; one SKU can dominate.

  • Launch-heavy or seasonal: loosen B band to keep more items under observation during validation periods.

Automate ABC inside Shopify

Tag products by class with Shopify Flow

On plans that support Shopify Flow:

  • Trigger options:

    • Scheduled trigger (e.g., weekly) if available

    • Order created or inventory quantity changed for rolling updates

  • Data source:

    • Store A/B/C in a Google Sheet, export a CSV with Variant ID and Class

    • Import to Shopify via a routine (e.g., admin import or app) to update a product metafield with the class

  • Flow actions:

    • If product metafield abc_class = A, add tag “class:A”; else if B, tag “class:B”; else “class:C”

    • Remove outdated class tags before adding the new one

If Flow scheduling is not available, run a manual update on a regular cadence and let Flow maintain tags on create/update events.

Build smart collections and admin views

  • Smart collections:

    • “A-Class Bestsellers”: Product tag equals class:A

    • “C-Class Long Tail”: Product tag equals class:C

  • Saved admin views:

    • Inventory view filtered by class tags and low stock thresholds

    • Orders view highlighting A-class items for expedited handling

Alerts and tasks for restock and exceptions

  • Low-stock alerts:

    • Trigger when Inventory quantity < Reorder point (store ROP per SKU in a metafield)

    • Notify via email or Slack, include vendor and lead time

  • Exceptions:

    • Flag A-class with stockout days > 0

    • Flag C-class with >120 days of supply or zero sales last 90 days

    • Flag negative-margin SKUs for immediate pricing/cost review

More time, More Sales

AI Forecasting For E-Commerce Merchants

AI Forecasting For E-Commerce Merchants

Action playbooks by class

A-class: protect availability, scale winners

  • Forecast and buy with high service levels; expedite POs when needed.

  • Maintain rich PDPs, fast images, and reviews; prioritize site search and nav placement.

  • Allocate ad budget; exclude A-class from discount-heavy promos unless strategic.

  • Build variants and bundles around A-class to extend the line without risking stockouts.

B-class: test, improve, and monitor

  • Run A/B tests on pricing and positioning; promote selectively.

  • Improve content and cross-sells; trial small replenishment increments.

  • Watch conversion and returns; graduate consistent B+ performers into A with tighter buys.

C-class: reduce, bundle, or liquidate

  • Lower safety stock and extend reorder cadence or switch to make-to-order if viable.

  • Bundle with A/B items, run clearance promos, or exit low-potential SKUs.

  • Keep critical assortment fillers but cap exposure; renegotiate MOQs with suppliers.

Replenishment policies and math

Forecast horizon and lead-time inputs

  • Compute average daily demand from recent periods aligned to seasonality.

  • Capture supplier lead time (calendar days) and variability if known.

  • Include review period (time between reorder checks) if you do periodic review.

Safety stock by class

Choose service levels and compute safety stock based on demand variability:

  • Suggested service levels:

    • A: 95–99% (z ≈ 1.64–2.33)

    • B: 90–95% (z ≈ 1.28–1.64)

    • C: 80–90% (z ≈ 0.84–1.28)

  • Safety stock (demand variability): z × (Std dev of daily demand) × √(Lead time in days)

If lead time varies, incorporate its variability or add a buffer.

Reorder point examples and templates

Reorder point (ROP) = Average daily demand × Lead time + Safety stock.

Example (A-class):

  • Avg daily demand: 10 units

  • Lead time: 15 days

  • Std dev daily demand: 3 units

  • Service level: 97.5% (z = 1.96)

  • Safety stock = 1.96 × 3 × √15 ≈ 22.7 ≈ 23 units

  • Demand during lead time = 10 × 15 = 150

  • ROP = 150 + 23 = 173 units

For periodic review (order weekly):

  • ROP = Demand during lead time + Demand during review period + Safety stock

Store ROP, safety stock, and lead time in product metafields to drive alerts and purchasing worksheets.

Advanced topics: multi-location and seasonality

Location-level ABC and transfers

  • Compute ABC per location using location-specific sales and inventory if available.

  • A SKU may be A in one region and B/C elsewhere; buy and transfer accordingly.

  • Use transfers to rebalance excess C-class from low-demand locations to high-demand ones.

ABC-XYZ matrix for demand variability

  • Compute weekly demand variability per SKU:

    • Coefficient of variation (CV) = Std dev of weekly demand ÷ Mean weekly demand

  • Define:

    • X: CV < 0.5 (stable)

    • Y: 0.5 ≤ CV ≤ 1.0 (moderate)

    • Z: CV > 1.0 or intermittent

  • Combine:

    • AX: highest priority and tightest control

    • AZ or CZ: use cautious buys, higher safety stock, or alternate fulfillment

Handling new or short-history products

  • Assign temporary “N” class for items with <6–8 weeks of data.

  • Proxy using parent category/vendor analogs or pre-launch forecasts.

  • Use conservative buys and fast feedback loops; graduate to ABC after enough history.

Limitations and governance

Data quality and channel effects

  • Ensure costs are populated and current; stale costs distort margin-based ABC.

  • Separate DTC vs POS vs marketplace where pricing and fees differ substantially.

  • Attribute promo effects; one-time campaigns shouldn’t permanently skew classes.

Avoiding short-window bias

  • Use windows that match the sales cycle of your category.

  • Overlay last 90 days with last 365 days to catch emerging winners and durable staples.

  • Smooth with moving averages to avoid overreacting to spikes.

Review cadence and ownership

  • Recalculate ABC monthly for fast movers; quarterly for stable assortments.

  • Assign ownership: ops for data, merchandising for actions, finance for thresholds.

  • Maintain a changelog of threshold tweaks and class shifts to ensure continuity.

FAQs

How often should I recalculate ABC classes?

  • Fast-moving catalogs: monthly.

  • Most stores: quarterly.

  • Also recalc after major assortment changes, price events, or supply disruptions.

Should I classify by revenue, units sold, or margin?

  • Use contribution margin dollars if you have accurate costs.

  • If not, start with net sales and move to margin as soon as costs are reliable.

  • Units can be a helpful secondary metric to balance views.

What thresholds define A, B, and C classes?

  • Common: A = top 70–80% of margin, B = next 15–25%, C = remaining 5–10%.

  • Adjust based on SKU count and operational capacity so A remains manageable.

How do I handle seasonal and new products with little history?

  • Seasonal: analyze season-to-date and prior-year same season; don’t rely on off-season data.

  • New items: use a temporary “N” class with conservative buys and rapid review.

  • Graduate items into ABC once 6–12 weeks of sales accrue.

Can ABC hurt my long-tail strategy and how do I mitigate it?

  • ABC doesn’t eliminate long tail; it right-sizes it.

  • Keep essential C-class items with controlled inventory, bundle where possible, and buy to demand.

How do I run ABC for bundles and product variants?

  • Classify at the level you stock and replenish. If bundles decompose into components, track component sales driven by bundles and classify components.

  • For variants, classify per variant if demand differs meaningfully.

What is the difference between ABC, Pareto, and XYZ analysis?

  • Pareto observes concentration (often 80/20).

  • ABC turns it into A/B/C classes using thresholds.

  • XYZ classifies demand variability; use ABC-XYZ together for stocking strategy.

Which Shopify automations or apps can help maintain ABC tags?

  • Shopify Flow (on eligible plans) can add/remove tags based on a product metafield storing the class.

  • Smart collections and saved admin views keep teams focused.

  • Low-stock alerts can trigger when inventory drops below the ROP stored in a metafield.

Looking to improve your Inventory Management?

If you’re managing inventory manually, forecasting demand, or juggling purchase orders, Verve AI helps automate the process across both platforms.

Install Verve AI for Shopify to forecast demand and manage purchase orders inside your store

Use Verve AI for WooCommerce to replace spreadsheets with automated inventory planning

Ditch CSV Exports and Excel Formulas

Ditch CSV Exports and Excel Formulas

AI Forecasting For Shopify Merchants

AI Forecasting For Shopify Merchants