Forecasting
RevoStock turns your Shopify sales history into a 90-day demand forecast for every SKU in your store — so instead of guessing when to reorder, you work from numbers that reflect your actual sales patterns. This guide explains what the forecast covers, how RevoStock picks the right method for each product, and what you can do to get the most accurate results.
What RevoStock forecasts
RevoStock produces a daily demand forecast for each SKU for the next 90 days. Those per-SKU numbers are the foundation of everything else you see in the app:
- The Dashboard aggregates them into two store-level metrics: 90-day forecasted demand (total units expected to sell) and 90-day forecasted GMV (expected revenue). Both are displayed on the Demand vs. GMV chart alongside your last 90 days of actual sales, so you can see the trend at a glance.
- The Buying Table uses the per-SKU forecast to calculate how long your current stock will last, when to reorder, and how many units to order.
Think of the forecast as a live estimate of your sales rate — one that updates automatically as new orders come in.
The forecast window
| Details | |
|---|---|
| Forecast horizon | 90 days forward from today |
| History used for training | Up to 2 years (730 days) of past sales, when available |
| Validation window | The most recent 28 days of history are held out to test how well each candidate model performs before one is selected |
Using up to two years of history lets RevoStock capture annual seasonal patterns — for example, a spike every December or a dip every July. The 28-day holdout is how RevoStock validates accuracy before committing to a forecast method; the model that performed best on those 28 days is the one used going forward.
How RevoStock picks a forecasting method per SKU
RevoStock evaluates each SKU individually and chooses the most suitable forecasting method automatically — you don't need to configure anything. Products behave very differently (a fast-moving consumable is nothing like a specialty accessory), so RevoStock considers each SKU's sales history and demand pattern, tests several candidate methods against your recent actuals, and selects the one that best fits that specific product. Your highest-volume, well-established SKUs get the most sophisticated treatment, while newer or slower-moving items get a conservative method that won't produce wild swings.
Sales velocity
Sales velocity is the average number of units a SKU sells per day, derived directly from its 90-day forecast. It is displayed in the Velocity column of the Buying Table.
Velocity drives three key calculations:
| Calculation | Formula |
|---|---|
| Days until stockout | Available stock / Velocity |
| Stockout date | Today + Days until stockout |
| Coverage after reorder | (Available stock + Incoming + Reorder qty) / Velocity |
Example. A SKU has 120 units available and a velocity of 4 units/day. Days until stockout = 120 / 4 = 30 days. If today is June 1, the stockout date is July 1.
When velocity shows "—" or infinity
If a SKU has zero forecasted demand over the entire 90-day window, RevoStock cannot calculate a meaningful days-until-stockout. The Stockout in column will show ∞ (your current stock would technically last forever at a zero sales rate) and the Velocity column will reflect no movement. This is expected for discontinued products, seasonal items outside their active window, or brand-new listings with no sales history yet.
What affects forecast accuracy
The forecast is only as good as the data behind it. Here is what matters and what you can do about it.
More history means better forecasts
RevoStock uses up to two years of sales data. The more history available, the more patterns — trends, weekly cycles, seasonal peaks — the model can detect. A SKU that launched last month will produce a less precise forecast than one you've been selling for two years. This is expected; the forecast improves automatically as history accumulates.
Stockout periods are treated differently from zero-demand days
If your stock hit zero and you had no units to sell, that looks like zero sales — but it doesn't mean demand was zero. RevoStock detects stockout periods (days when available inventory was zero) and treats them separately from genuine zero-demand days. This prevents a prolonged out-of-stock from artificially lowering your forecasted velocity.
Extreme one-off orders are smoothed out
A single bulk order — for example, a corporate purchase 10 times larger than your typical order — can distort a trend if taken at face value. RevoStock caps outliers so that one unusual day doesn't skew your entire forecast. The underlying data is not deleted; it is capped to a reasonable ceiling before modelling.
Seasonal patterns require enough history
For RevoStock to detect an annual seasonal pattern (e.g., a peak every November), it needs at least enough history to have seen that pattern once. If your store is less than a year old, year-over-year seasonality cannot yet be captured. RevoStock will still produce a forecast using shorter-cycle patterns (weekly rhythms, recent trend), but the annual shape will be incorporated as your history grows.
Recent changes take a few sync cycles to be reflected
If you run a promotion, change a price, or launch a new product variant, the forecast will not update instantly. Hourly syncs pull in the latest orders, but the forecast model itself is re-trained on a weekly cadence (see When forecasts refresh below). A short-term promotion may therefore show up as a brief spike in your actuals before the next weekly forecast adjusts. For a major change — such as a product relaunch or a significant channel expansion — expect the forecast to converge toward the new baseline over a few weeks of new sales data.
When forecasts refresh
Forecasts are recomputed weekly on an automated schedule. This is separate from your hourly data sync, which keeps Shopify orders, products, and inventory current — the forecast model itself only re-trains on its weekly cadence.
The weekly cadence is deliberate. Demand patterns evolve over weeks and months, not hours, so re-fitting the model more often would add cost and noise without meaningfully changing predictions. In between forecast runs, your Buying Table still updates throughout the day: on-hand stock, incoming inventory, days-until-stockout, and reorder suggestions all recompute on each hourly sync using the most recent forecast.
If you change a replenishment configuration (lead time, safety stock, days of supply), a stale config banner will appear at the top of the app. Reorder suggestions and KPI statuses refresh on the next sync — or you can click Recalculate now on the banner for an immediate recompute. Note that this re-runs the planner against your current forecast; it does not retrain the forecast model, which is on its own weekly schedule.
Related
- Dashboard — where 90-day demand and GMV forecasts are visualised at the store level.
- Buying Table overview — how forecast-driven velocity, stockout dates, and reorder quantities appear in your replenishment workspace.
- How restock quantity is calculated — the exact formula behind the suggested order quantity.
- Why my forecast looks empty or off — troubleshooting common forecast issues.
- Data Sync — how RevoStock keeps your sales history up to date and when forecasts recalculate.