How Restock:ize Forecasts

Simple maths you can check by hand — no black box.

This page documents exactly how Restock:ize computes every number you see in the Restock Radar. If a figure surprises you, this is where to check the working.


1. Sales history & data quality

Restock:ize reads your order history from the past 180 days (or 60 days if your store is new, or if full history access is pending). It uses:

No customer names, emails, or addresses are ever read or stored. Only SKU, quantity, and date.

New stores or limited access: If your store is younger than 30 days, or if Restock:ize can only access the last 60 days of orders, all forecasts will carry a "Based on last 60 days of sales" badge. The maths is identical; there's just less data to work with.

2. Sales velocity (units/day)

Velocity V is how fast a variant sells on average. We use a recency-weighted formula when enough history is available:

History window WVelocity formula
W ≥ 90 days V = 0.6 × (U₃₀ / 30) + 0.4 × (U₉₀ / 90)
30 ≤ W < 90 days V = U(W) / W
W < 30 days V = U(W) / W (flagged as "limited history")

Where:

The 60/40 recency weighting (0.6 × 30-day, 0.4 × 90-day) gives more weight to recent sales while smoothing out short-term spikes. This is the same approach used by many professional inventory planning tools, but shown in full here so you can verify it.

Example: A widget sold 120 units in the last 30 days and 280 units in the last 90 days.

V = 0.6 × (120 / 30) + 0.4 × (280 / 90)
V = 0.6 × 4.00 + 0.4 × 3.11
V = 2.40 + 1.24 = 3.64 units/day

3. Days of cover

Days of cover (DoC) tells you how long your current stock will last at the current velocity:

DoC = Stock on hand ÷ V

If V = 0 (no recent sales), DoC is shown as and the SKU is sorted to the "No recent sales" group at the bottom of the radar.

4. Urgency classification

Each SKU is classified using your supplier lead time L and safety stock S:

ColourConditionMeaning
🔴 Red DoC ≤ L You will run out before new stock arrives. Reorder now.
🟡 Amber L < DoC ≤ L + S Within your safety-stock buffer. Order soon.
🟢 Green DoC > L + S Adequately stocked.
— None V = 0 No recent sales. Possible dead stock.

Default values: lead time L = 14 days, safety stock S = 7 days. Both are configurable in Suppliers & Settings.

5. Suggested reorder quantity

The suggested quantity is how much to order to cover the lead time, safety stock, and your coverage target C (default 30 days), minus stock already on hand and inbound on open purchase orders:

Suggested qty = max(0, ⌈ V × (L + S + C) − stock − inbound ⌉)

This quantity is then:

  1. Rounded up to the supplier's order multiple (if set), and
  2. Raised to the supplier's minimum order quantity (MOQ) (if set and the result is below it).

Example: V = 3.64 units/day, L = 14, S = 7, C = 30, stock = 40, inbound = 0, MOQ = 0.

Raw qty = ⌈ 3.64 × (14 + 7 + 30) − 40 − 0 ⌉
Raw qty = ⌈ 3.64 × 51 − 40 ⌉
Raw qty = ⌈ 185.64 − 40 ⌉
Raw qty = ⌈ 145.64 ⌉ = 146 units

6. Inbound stock

Any purchase order in Restock:ize with status "Ordered" contributes its line quantities as inbound stock for the relevant SKU. When you mark a PO as "Received", those quantities are removed from inbound (the stock is now in your live Shopify inventory).

7. Multi-location

When a specific location is selected in the radar, stock on hand is read from that location only. Velocity is computed from store-wide order history (Shopify orders are not tied to specific locations). On the Growth or Plus plan, you can filter to any of your active locations.


Migrating from Stocky in 15 minutes

  1. Install Restock:ize. The radar populates automatically — no setup needed to see your first forecast.
  2. Set supplier lead times. Go to Suppliers & Settings. Lead times are pre-populated from your product vendors (edit them to match reality).
  3. Import your Stocky data (optional). Go to Import. Export your purchase orders from Stocky (Settings → Export → Purchase Orders), then upload the CSV. Restock:ize maps the columns automatically.
  4. Import suppliers (optional). Stocky doesn't export suppliers directly. Use the generic CSV format: name, lead_time_days, moq, order_multiple, email. Download the sample from the Import page.
  5. Check the radar. Your SKUs are ranked by days of cover. Red = reorder now. Click any row to see the calculation detail.

Frequently asked questions

Why does my velocity look too high / too low?

Check whether the history window badge says "last 60 days" — if so, Restock:ize may not yet have access to your full order history (the access request is pending). Also verify that cancelled orders are excluded from your Shopify reports; Restock:ize always excludes them.

My suggested quantity seems too large.

The formula targets enough stock to cover the lead time + safety stock + coverage target. If your coverage target is 30 days and your lead time is 45 days, the total coverage aimed for is 82 days. Reduce the coverage target in Settings if you prefer smaller, more frequent orders.

Why is a SKU red when I have plenty of stock?

Red means DoC ≤ lead time. If you have 100 units selling at 10/day and your lead time is 14 days, DoC = 10 days < 14 days → Red. You should already have an order in flight.

Does Restock:ize use AI?

No. The forecast is the formula above. No machine learning, no black box. You can check every number by hand using this page.