An ERP export lists what sold. Operations needs to know whether demand is speeding up or fading. That slope is sales velocity, and it is the earliest signal you have for a coming stockout, a growing overstock, or a line that deserves a decision this week rather than next quarter.
Key takeaways
- Sales velocity is units per period. Its trend is the comparison of a short window against a longer one.
- Comparing four-week velocity with twelve-week velocity catches most shifts early without reacting to noise.
- Revenue can rise while units fall. Velocity in units is what drives reorder timing and cover.
- Velocity cannot be computed from a stock snapshot. You need dated transaction lines with SKU and quantity.
- Tag every SKU as rising, stable, or falling and attach a default action to each bucket.
Velocity versus volume
Volume is how much a product sold in a period. Velocity is the rate, and the trend is how the rate is changing. A monthly sales report shows volume. It cannot show that a product sold 480 units in the first half of the month and 190 in the second, which is the fact a buyer needs.
The confusion costs money in both directions. A SKU can show healthy revenue because a price increase went through while unit velocity is falling, so the next reorder lands on a shrinking demand. Another SKU shows modest revenue but accelerating units because a new account came online, and the stockout arrives before finance has noticed the line.
Always compute velocity in units, per SKU, per location. Layer revenue and margin on top for prioritisation, never as a substitute.
Which windows to compare
A velocity trend is always a comparison between two windows. Too short and every promotion or weather event looks like a structural change. Too long and the signal arrives after the decision window closed.
| Window | What it detects | Use it for | Weakness |
|---|---|---|---|
| Short: 2 – 4 weeks | Sudden shifts: promotions, a new account, a project ending, weather | Expedite or hold decisions this week | Noisy on low-volume lines |
| Medium: 8 – 12 weeks | Sustained run rate | Core replenishment, cover calculations | Lags a genuine change by several weeks |
| Long: 6 – 12 months | Seasonal shape, year-on-year comparison | Preseason buys, cover targets by season | Useless for this week's reorder |
The most useful single number is the ratio of short-window velocity to medium-window velocity. Flowra uses four weeks against twelve weeks: a ratio of 1.3 means recent demand runs 30% above the quarterly pace; a ratio of 0.6 means it has fallen by 40%. Cap the ratio at around 2× so one exceptional week cannot dominate the ranking, and treat lines with fewer than a handful of sales in the long window as "insufficient data" rather than as a trend.
What to export from the ERP
Velocity needs transactions, not snapshots. A stock-on-hand report taken every Monday cannot tell you whether 200 units left as 40 per day or as one order on Thursday. At minimum, export dated sales lines with the columns below. This is also the structure Flowra's CSV template expects, so the same export works for a first analysis.
| Column | Why it matters |
|---|---|
| transaction_id | Groups lines into orders; separates one big order from many small ones |
| product_id | The SKU. Use the same identifier across sales, purchases, and returns |
| invoice_date | Without a date per line, velocity cannot be computed at all |
| quantity_sold | Units, not cases, unless every SKU uses the same case size |
| unit_price | Lets revenue and margin be layered on top of unit velocity |
| client_id | Optional but valuable: separates one account's spike from broad demand |
| warehouse / location | Optional: velocity per site drives transfer decisions |
Add purchase lines and returns with the same date and product columns. That lets stock be reconstructed from net flow, which means you can compute cover without a clean opening balance. Details on accepted file formats are on the integrations page.
From trend to action
A velocity trend is only worth computing if a bucket triggers a default action. Three buckets are enough to start.
Rising
Short-window velocity well above the medium window. Check cover against lead time immediately; the reorder rule in days of cover versus lead time will fire earlier than the twelve-week average suggests. Confirm whether the rise is one account or broad before committing to larger quantities.
Stable
Ratio close to 1.0. Leave the standard reorder rule alone. This is most of the catalog, and the point of the bucket is to keep it out of the meeting.
Falling
Short-window velocity well below the medium window. Reduce the next order, check forward cover, and if the line is also high on the stock risk score, move it to a stop-buy review before it becomes excess inventory.
Review the bucket boundaries quarterly. If "falling" produces 600 lines, the threshold is too tight for your volatility; if it produces 6, it is too loose.
How Flowra handles this
Flowra computes twelve-week velocity and the four-week-versus-twelve-week trend for every SKU from your sales, purchase, and return lines, refreshed nightly or on demand after an upload. The trend rank feeds 20% of the product risk score and the velocity rank another 30%, so a fading line rises in the queue before its average moves. Lines with too little history are marked as unknown rather than scored. When a buyer asks in Slack or Teams "which products are accelerating this month?", the assistant answers only from the computed figures, shows its confidence level and the data freshness, and drafts the reorder or hold as a proposal for approval. See how the same signal reaches each role in its own language.
- Fact
- Four-week velocity 38 units a day against a twelve-week pace of 26 (ratio 1.46). 71% of the increase comes from one new account, client 2088. Reconstructed cover 17 days; lead time 15 days.
- Forecast
- If the account keeps ordering at its current weekly cadence, cover reaches zero on day 16, one day after the next realistic receipt.
- Recommendation
- Place the next order now at 45 days of cover instead of in two weeks. Alternative: order the standard quantity and ask sales to confirm the account's forward orders first.
- Hypotheses
- The new account is not a one-off stocking order. Lead time holds at 15 days. Confidence is medium because the rise rests on five weeks of one client's history.
- Next step
- Approve, adjust the quantity, or ask why. Nothing changes in the ERP until you do.
Frequently asked questions
What is sales velocity in inventory management?
Sales velocity is the number of units a product sells per period, usually per day or per week, at a given location. Its trend, the comparison of a recent window with a longer one, is the earliest practical signal that demand is rising or fading for a SKU.
Can I compute sales velocity from a stock report?
No. A stock-on-hand snapshot shows a position, not a rate. You need dated transaction lines with product and quantity so that units can be summed per period. Weekly snapshots can approximate outflow only if there were no receipts in between.
How much history do I need to see a velocity trend?
Twelve weeks of dated sales lines gives a usable medium window and a four-week short window. Twelve months lets you separate seasonal shape from a genuine trend. Products with only a few sales in the window should be treated as insufficient data, not as a trend.
See it on your own data. Upload a CSV or connect Odoo, WooCommerce or SQL — first stock-risk report in minutes, no credit card.
Get my free inventory report →