ABC/XYZ Analysis & Product Grading
Synplex classifies every variant with two independent grades: an ABC grade based on
revenue contribution, and an XYZ grade based on demand predictability. Together they
form a combined score like A/X or C/Z that tells you both how important a product is
and how reliably you can forecast it.
ABC grading
What it measures
ABC grades rank every variant in your shop by its share of total net revenue over the configured lookback period. The ranking is relative — every variant is compared against every other variant in the same shop in a single pass.
How it is calculated
- Each variant's total net revenue is summed over the lookback period
- All variants are sorted by revenue, highest first
- Cumulative revenue percentage is calculated as each variant is added to the running total
- Grades are assigned by where each variant falls in the cumulative distribution:
| Grade | Assigned when cumulative revenue share reaches… | Default threshold |
|---|---|---|
| A | Up to the A threshold | 80% (abcxyzSchema.A = 0.8) |
| B | Between A threshold and A+B threshold | Next 15% (abcxyzSchema.B = 0.15) |
| C | Everything beyond A+B threshold | Bottom 5% |
| Example: If your shop generates £100,000 in total revenue, the variants that together | ||
| account for the first £80,000 (sorted highest to lowest) are Grade A. The variants | ||
| accounting for the next £15,000 are Grade B. The remaining variants are Grade C. |
What ABC grading always uses
Products are ranked A, B, or C based on their share of total net revenue over a configurable lookback period. There is no option to grade by profit or quantity. The thresholds (A and B percentages) are configurable; the grading variable is not.
Excluded variants
Variants are excluded from ABC grading and receive a null grade if any of the following apply:
- The inventory item is not tracked in Shopify
- The product has been marked as excluded in Synplex
- The product has variants that require BOM components (assembly products)
Excluded variants do not affect the cumulative revenue calculation for other variants.
Configuring ABC thresholds
Go to Settings → Insight Settings → Grading to adjust the A and B thresholds. The values must be decimals that sum to less than 1.0 (the remainder becomes the C bucket).
| Setting | Default | Effect |
|---|---|---|
| Grade A threshold | 0.80 | Variants accounting for the top 80% of revenue |
| Grade B threshold | 0.15 | Variants accounting for the next 15% of revenue |
| Grades recalculate on the nightly scheduled run. |
XYZ grading
What it measures
XYZ grades classify how predictable a variant's demand is, by comparing recent sales velocity to the historical average. A product can be Grade A (high revenue) but Grade Z (erratic demand), which means it is important but hard to plan for.
How it is calculated
demandVariability = |1 − (7-day daily sales rate ÷ historical daily sales rate)|- This measures how far recent demand has deviated from the historical baseline as a ratio
- Grades are assigned against configurable thresholds:
| Grade | Meaning | Assigned when demandVariability… | Default threshold |
|---|---|---|---|
| X | Stable, predictable demand | ≤ X threshold | 0.30 |
| Y | Variable demand, some pattern | ≤ Y threshold | 0.50 |
| Z | Erratic or unpredictable demand | > Y threshold | — |
| Example: A variant with a historical rate of 10 units/day and a 7-day rate of 8 | |||
| units/day has `demandVariability = | 1 − 0.8 | = 0.20`. At the default thresholds, this | |
| is Grade X (stable). |
A variant with a historical rate of 10 units/day and a 7-day rate of 16 units/day has
demandVariability = |1 − 1.6| = 0.60. This is Grade Z (erratic).
Configuring XYZ thresholds
Go to Settings → Insight Settings → Grading to adjust the X and Y thresholds.
| Setting | Default | Effect |
|---|---|---|
| X threshold | 0.30 | Demand within 30% of historical average → X |
| Y threshold | 0.50 | Demand within 50% of historical average → Y |
The combined ABC/XYZ score
Every non-excluded variant gets a combined score stored as abcxyzEvaluation, for example
A/X, B/Y, or C/Z. This gives you a two-dimensional view of your catalogue:
| X (stable) | Y (variable) | Z (erratic) | |
|---|---|---|---|
| A (high revenue) | Plan tightly, hold higher safety stock | Plan carefully, monitor closely | Important but unpredictable — hold buffer, review forecasts often |
| B (mid revenue) | Standard management | Standard management with monitoring | Watch for demand shifts |
| C (low revenue) | Low priority, lean stock | Low priority | Candidate for discontinuation review |
How ABC/XYZ grades are used in Synplex
- Inventory table — filter and sort by ABC or XYZ grade
- Saved views — create a view for Grade A variants to monitor daily
- Alerts — configure alerts to fire specifically for Grade A variants
- Demand anomaly signal — the XYZ grade works alongside the per-location demand anomaly score (a sigma-based spike/drop signal) to give you two independent demand stability indicators
When grades update
ABC and XYZ grades recalculate on the nightly scheduled run. They are not updated by Shopify syncs or by Refresh Metrics. Because ABC ranking is shop-wide, a single variant's grade can change when other variants' revenue changes — not just its own.
Related articles
- Understanding Product Statuses — stock assessment values driven by the simulation, separate from ABC/XYZ
- Safety Stock Strategy — how to use ABC grade to set appropriate buffer stock levels
- Data Metrics Reference — ABC grade, XYZ grade, and demand variability field definitions
- Glossary & Terminology — precise definitions