Blog · Board and management reporting · Distribution
Product RFM compares how recently each SKU sold, how often it appeared on orders, and how much sales value it generated. Work through a distributor's order lines, set explicit score bands, and understand why a strong RFM code is only one input to a product decision.
RFM analysis for products compares each SKU's recency, order frequency, and sales value over a stated period. It turns order history into a compact commercial review list, with separate scores for recent activity, repeated orders, and revenue. The scores help decide what to investigate; inventory and profitability decisions need additional evidence.
The three measures answer different questions. Recency asks when the product last sold. Frequency asks how often distinct orders included it. Monetary value asks how much net sales those lines generated during the review window.
Product recency = Review date − Latest eligible sale date
Product frequency = Distinct eligible order IDs containing the SKU
Product monetary value = Sum of eligible net sales for the SKU
Lower recency is more recent; higher frequency and monetary value indicate more recorded activity. The direction matters when assigning scores. A product sold yesterday should receive a stronger recency score than one last sold months ago under the same rules.
The established customer RFM method uses customers as its grouping unit. Here the grouping unit is the SKU. Confirm that identity first: product taxonomy for analytics explains why product families, lines, and individual SKUs should not be mixed in one comparison.
A US distributor reviews eligible sales from July 1 through September 30, 2026, using September 30 as the review date. The table contains posted sales after line discounts, with no tax or freight included. This example has no returns or cancellations; those require an explicit treatment in a real export.
| SKU | Order ID | Sale date | Net sales (USD) |
|---|---|---|---|
| A | A01 | September 3, 2026 | 400 |
| A | A02 | September 15, 2026 | 500 |
| A | A03 | September 29, 2026 | 250 |
| A | A03 | September 29, 2026 | 350 |
| B | B01 | July 15, 2026 | 1,000 |
| B | B02 | August 15, 2026 | 1,000 |
| C | C01 | September 20, 2026 | 150 |
| C | C02 | September 27, 2026 | 200 |
| D | D01 | July 1, 2026 | 300 |
| D | D02 | July 10, 2026 | 200 |
| Total | 4,350 |
SKU A appears on four lines but only three distinct orders. Both lines on A03 belong in sales value; that order contributes once to frequency. Deduplicating the sales table by order and SKU would discard valid revenue, so keep a separate distinct-order calculation.
In Google Sheets, place SKU in column A, order ID in B, sale date in C, and net sales in D, with the detail rows in 2:11. Create a summary with SKU codes A through D in H2:H5. Dates must be actual date values.
Find the latest sale date in I2 and fill down:
=MAXIFS($C$2:$C$11,$A$2:$A$11,H2)
Google's MAXIFS documentation describes taking a maximum after applying criteria. With the source already restricted to the review window, the criterion selects the SKU's sale dates.
Calculate recency in J2:
=DATE(2026,9,30)-I2
Calculate frequency in K2 and net sales in L2:
=COUNTUNIQUE(FILTER($B$2:$B$11,$A$2:$A$11=H2))
=SUMIFS($D$2:$D$11,$A$2:$A$11,H2)
The SUMIFS documentation explains summing a range according to criteria. Fill these formulas down for the summary SKUs. Covirage is not affiliated with Google.
| SKU | Last sale | Recency (days) | Distinct orders | Net sales (USD) |
|---|---|---|---|---|
| A | September 29, 2026 | 1 | 3 | 1,500 |
| B | August 15, 2026 | 46 | 2 | 2,000 |
| C | September 27, 2026 | 3 | 2 | 350 |
| D | July 10, 2026 | 82 | 2 | 500 |
| Total | 9 | 4,350 |
The sales proof is 1,500 + 2,000 + 350 + 500 = 4,350, matching the source lines. Frequency totals nine distinct SKU/order combinations. In this small example every order contains one SKU; with mixed-SKU orders, that total would exceed the company-wide distinct order count. Do not sum recency days across products.
The distributor chooses these illustrative bands for this review. They are business rules for the example, not industry benchmarks or a recommendation for every catalog.
| Score | Recency | Frequency | Monetary value (USD) |
|---|---|---|---|
| 3 | 0–7 days | At least 3 orders | At least 1,500 |
| 2 | 8–30 days | 2 orders | At least 500 but below 1,500 |
| 1 | More than 30 days | 1 order | Below 500 |
Apply the bands to the measured table:
| SKU | R score | F score | M score | RFM code |
|---|---|---|---|---|
| A | 3 | 3 | 3 | 333 |
| B | 1 | 2 | 3 | 123 |
| C | 3 | 2 | 1 | 321 |
| D | 1 | 2 | 2 | 122 |
Keep the code as a label rather than adding or multiplying its digits. A is active across all three measures. B generated the most sales but has not sold recently. C has recent orders at a smaller value, while D has older sales and a middle monetary score.
Now add one eligible C order dated September 30 for $1,200. C's recency becomes zero days, frequency becomes three orders, and sales become 350 + 1,200 = $1,550. Its code changes from 321 to 333, and total sales become 4,350 + 1,200 = $5,550. A and C now share a code despite different histories; the underlying measures must remain visible.
Sales operations owns the order definitions, product keys, and reconciliation. The product manager approves score thresholds and review questions. Finance confirms net sales treatment, while purchasing brings stock availability, supplier lead times, minimum orders, and service obligations to any stocking discussion.
B's score warrants a conversation about timing, customer concentration, and availability. It does not prove fading demand: the product may have been unavailable or bought on a planned cycle. Compare the results with product-tail revenue concentration, and use RFM alternatives when scoring hides the business question.
Upload your order-line file or Google Sheet; Covirage maps the columns, and its tools compute and check last-sale dates, distinct-order counts, and sales totals. The external AI model explains the results with every figure traced to its rows. Create a free Covirage account, then set up your business and bring a sample of your own data.
See Covirage for distributors for the supporting approach to product and sales analysis from business files.
Product RFM groups transactions by SKU; customer RFM groups them by customer. A product's frequency counts distinct orders containing that product, while its monetary measure totals product sales. Customer retention labels do not automatically translate into stocking, discontinuation, or replenishment decisions.
Define it before scoring. This method counts distinct orders containing a SKU, so split lines on the same order count once. Units measure physical demand and are useful alongside RFM, but substituting them changes the meaning of the frequency score.
Yes. Monetary value here is net sales, which does not deduct product cost, fulfillment, returns handling, or inventory carrying cost. A frequently sold, high-revenue SKU can earn little contribution. Review cost and service requirements separately before assigning commercial priorities.