Riffle Reorder planning for Shopify
Reorder planning

The purchase order writes itself.

Riffle watches how fast every SKU actually sells, counts each supplier's lead time, deducts what is already on the water, and hands you the order. You check the working and send it.

Connects to Shopify, or works from two CSV exports. No card to start.

Ashgrove Timber PO-20260731-01 · place by 2 Jul · overdue
SKUProductCoverQtyLine
BRD-CHS-WALCheese Board · Walnut10d646£10,594
10 days of cover left · selling 8.95/day · 45 day lead time · should have been ordered 30 days ago
BRD-CHP-OAKChopping Board · Oak15d324£4,536
15 days of cover · 4.73/day · 43 units of buffer for variability
BRD-CHP-WALChopping Board · Walnut22d137£2,945
22 days of cover · 2.27/day · 19 units of buffer
STD-PHN-OAKPhone Stand · Oak36d26£177
4 lines · 1,133 units£18,252.70
The plan behind it 20 SKUs · 90 days of sales
SKUStatusOn handPer day CoverOrder by
MUG-STO-BLUOut of stock08.730d10 Jul
TWL-TEA-NATOrder today11812.629d5 Jul
BWL-SRV-LGAt reorder point612.4125d4 Aug
NAP-SET4-NATFine964.4167d
TRY-BRK-OAKOverstocked1,4001.321058d

Sorted so the things that need action are at the top. Overstocked and dead lines stay visible — £39,977 of this shop's stock is not moving, and that is worth knowing too.

To
orders@ashgrovetimber.co.uk
Subject
Purchase order PO-20260731-01 — Marlow & Finch
Attached
PO-20260731-01.pdf

Purchase order PO-20260731-01 from Marlow & Finch. 646 × BRD-CHS-WAL — Cheese Board · Walnut 324 × BRD-CHP-OAK — Chopping Board · Oak 137 × BRD-CHP-WAL — Chopping Board · Walnut 26 × STD-PHN-OAK — Phone Stand · Oak 1,133 units across 4 lines. Requested delivery: 14 September 2026.

Sent from Riffle, replies go to you. The order marks itself sent, and you receive against it line by line when the pallet lands.

Four numbers, per SKU

Nothing here is a black box. Every quantity on a purchase order can be traced back to a row in an export you can open yourself.

01

Velocity

Units a day, counting days with no sales as zeros. Leaving the quiet days out is how a product that sells forty units on one Tuesday a month gets read as selling forty a day.

Per SKU
02

Safety stock

z × σ × √lead time, at the service level you pick. A buffer sized to how erratic that SKU actually is, rather than a flat percentage applied to everything.

95% default
03

Order-by date

The day it runs out, minus the lead time. When that lands in the past — and on a real catalogue it often does — the line says how many days late you already are.

Dated
04

The order

One per supplier, priced, with the reasoning frozen onto every line. Email it as a PDF, then receive against it when the delivery arrives.

PDF · email

Real exports are messy

Most of the work in this product is not the forecast. It is the handful of things a Shopify export does that quietly produce the wrong answer.

Multi-item orders

Shopify writes one row per line item and leaves the date blank on every row after the first. Those rows are the second and third things in real baskets. Dropping them halves your demand; Riffle carries the order date down and tells you how many rows it did that to.

Products listed mid-window

A SKU added six weeks into a ninety-day window has not been selling slowly — it did not exist. Averaging across the silence reads it at a third of its real rate and under-orders the thing most likely to sell out.

Refunds and cancellations

A returned unit was never demand. Refunds are netted off the day the order was placed, cancelled orders are dropped, and test orders never count.

Available is not on hand

They differ by committed stock. Ordering against on-hand buys the units you have already sold but not yet shipped, twice.

Stock already inbound

What Shopify has marked incoming, plus anything on an open purchase order here, is deducted before a quantity is suggested. If both are set for the same SKU, it says so rather than assuming.

Everything it assumed

A missing lead time, a missing cost, a window shorter than you asked for. All of it is listed on the plan and printed on the PDF, because a number nobody can defend should not be sent to a supplier.

Priced on catalogue size

Because that is what drives both the value and the cost. Fourteen days free, then billed through Shopify on the invoice you already pay.

Starter

$29 /month

Up to 500 SKUs

  • Nightly Shopify sync
  • Purchase orders, emailed and received
  • Supplier records and lead times
  • Low-stock email
Start free
Growth

$79 /month

Up to 5,000 SKUs

  • Everything in Starter
  • Hourly sync
  • Multi-location planning
  • Team access
Start free
Scale

$199 /month

Unlimited SKUs

  • Everything in Growth
  • Half-hourly sync
  • CSV history backfill
  • Direct support
Start free

Shopify's orders API only returns the last 60 days unless a store grants extended access. Where you need more history than that, upload an orders export and Riffle will plan from it — the CSV path is not a fallback, it is how the backfill works.

Questions worth asking

Mostly the ones about what it will not do.

Does it change my inventory in Shopify?

No. Riffle holds read access only. Receiving a delivery here closes the line so it stops counting as inbound; the stock figure goes up when you receive it in Shopify and the next sync picks it up. A tool that silently edits your catalogue is a tool you cannot leave running.

Does it order anything on its own?

Never. It writes drafts. Nothing is sent until you open it, look at the quantities, and press send.

What does it keep?

An order line becomes a SKU, a day and a count. No customer names, no addresses, no email addresses, nothing that identifies a buyer — which is also why the GDPR data-request webhook has nothing to hand back.

My SKUs are a mess. Will it work?

Every variant needs a SKU, because a SKU is what a supplier order is placed against. Variants without one are counted and reported rather than quietly merged. Beyond that it reads whatever column names your export uses.

Can I try it before connecting my store?

Yes — the sample plan runs on a synthetic store with the same export format Shopify produces, and you can upload your own two exports without connecting anything.

Find out how late you already are.