WooCommerceストアの再発注点を計算する方法(そして在庫補充の推測をやめる方法)

ほとんどのWooCommerceストアオーナーは、在庫補充を単一の数値、つまり一度設定された在庫不足のしきい値だけで管理しています。このしきい値はその後見直されることはありません。しかし、ベストセラー商品が最も忙しい月に2週間も品切れ状態になったり、本来再発注すべきではなかった売れ筋商品で倉庫がいっぱいになったりすると、この方法はうまく機能しなくなります。問題は在庫管理ソフトウェアにあるのではなく、ほとんどのストアがそもそもいつ、どれだけ再発注すべきかを計算する計算を行っていないことにあるのです。
発注点と安全在庫の背後にある実際の計算式を、具体的な数値を用いて解説します。これで、もう推測に頼る必要はありません。
実際に必要な3つの数字
どのSKUに対しても適切な再発注点を設定するには、次の3つの入力情報が必要です。
- 1日平均売上高(販売速度): 1日あたりの販売台数。直近の代表的な期間(通常は過去30日間または60日間)の平均値で、フラッシュセールなどの一時的な急増は除外する。
- リードタイム: 仕入先に発注してから、在庫が販売可能な状態になるまでの日数。これには、商品の受け取りや品質管理にかかる時間も含まれます。
- 需要とリードタイムの変動性: 売上と仕入先の納期が週ごとに実際にどれくらい変動するか。
ほとんどの店舗は、WooCommerceのレポートに最初の数値をどこかに記載しています。しかし、3番目の数値を追跡している店舗はほとんどありません。そして、この3番目の数値こそが、在庫切れになるか、売れ残りの現金を抱え込むかを決定するのです。
発注点計算式
基本となる計算式は単純明快です。
再発注点 = (1日平均売上高 × リードタイム(日数)) + 安全在庫
あるSKUが平均して1日に8個売れ、仕入先が新しいロットを納品するのに12日かかるとします。リードタイム需要は8×12=96個です。これは、バッファを追加する前の、次の出荷を待っている間に消費される在庫数です。もし96個で再発注し、少しでも問題が発生した場合、新しい在庫が届く前に在庫切れになってしまいます。
安全在庫の適切な計算
安全在庫とは、基本計算式では考慮されない変動を吸収する緩衝材のことです。安全在庫の計算方法には、一般的に2つの方法があります。
単純な最大値ベースの方法
安全在庫 = (最大日次売上 × 最大リードタイム) − (平均日次売上 × 平均リードタイム)
先の例で説明すると、最悪の場合の1日の販売数が14個、最悪の場合のリードタイムが16日だとすると、最大シナリオは14 × 16 = 224個となります。平均リードタイム需要である96個を差し引くと、安全在庫は128個になります。したがって、再発注点は96 + 128 = 224個となります。この方法は注文履歴から簡単に計算でき、統計分析をしたくない店舗にとって有効です。
統計的手法
販売量の多いSKUの場合、標準偏差に基づく計算式を用いることで、より厳密で無駄の少ないバッファが得られます。
安全在庫 = Zスコア × √(リードタイム) × 日々の売上の標準偏差
Zスコアが1.65の場合、サービスレベルは約95%(約20回の再発注サイクルで1回在庫切れ)を目標とし、2.33の場合は約99%を目標とします。1日の販売標準偏差が3ユニットでリードタイムが12日の場合、安全在庫は1.65 × √12 × 3 ≈ 17ユニットとなります。これは、最大値ベースの方法よりもはるかに少ないバッファであり、この計算を数百のSKUにわたって実行し、過剰在庫に資金が拘束されないようにするには非常に重要です。
WooCommerceストアがよく間違える点
- 製品ごとに1つの基準値。 カタログ全体に「20個で再注文」という一律のルールを設定すると、1日に15個売れるSKUと1週間に1個しか売れないSKUでは必要な在庫量が全く異なるという事実を無視することになります。
- 季節性を無視します。 10月の販売データに基づいて計算された再発注点では、12月に販売量が3倍になる製品の場合、発注量が大幅に不足することになります。季節変動が大きい製品については、季節ごとにリードタイム需要を再計算する必要があります。
- 仕入先のリードタイムを固定時間として扱う。 リードタイムは、特に海外サプライヤーとの間では遅延しやすいものです。サプライヤーが提示する数値ではなく、実際の平均リードタイムと最悪リードタイムを一度も測定したことがないなら、安全在庫は単なる推測に過ぎません。
- 静的なスプレッドシート。 6か月前に一度計算された発注点を記載したスプレッドシートは、計算式がないよりも悪い。なぜなら、実際の販売速度は既に変化しているにもかかわらず、誤った安心感を生み出してしまうからだ。
WooCommerceでの設定方法
WooCommerceの標準在庫設定では、「商品データ」→「在庫」で商品ごとに「在庫不足しきい値」を設定でき、それに基づいてメール通知が送信されます。これは小規模なカタログであれば良い出発点となりますが、手動で設定する必要があります。つまり、各しきい値を自分で計算しなければならず、販売速度の変化に応じて自動的に再計算されるわけではありません。
数十個を超えるSKUを扱うカタログでは、毎月手動で発注点を再計算するのは非効率的です。これは、エージェントツールが単なる目新しいものではなく、実際に役立つ分野の一つです。CommerceBirdのようなツールを使えば、 SKUごとの販売速度を継続的に追跡し、需要の変化に応じて発注点と安全在庫を再計算し、数週間ごとにスプレッドシートで計算をやり直す代わりに、発注書を自動的に作成したり、下書きを作成したりできます。
自動化するかどうかに関わらず、基本的な原則は同じです。発注点はSKUごとに設定し、定期的に見直す必要があり、一度設定したらそのまま放置してはいけません。
実践的な週ごとのルーティン
これを手動で行う場合、ABC分類を用いることで作業量を管理しやすくすることができます。
- Aアイテム (売上高上位約20%のSKU):毎週発注点を見直してください。これらの商品は、在庫切れが実際に大きな痛手となる商品です。
- Bアイテム (次の30%):毎月見直し。
- Cアイテム (ロングテール):四半期ごとに見直すか、あるいは広く保守的なバッファーを設定して先に進む。
これと並行して、A品目のバックオーダー率または在庫切れ率という指標も追跡してください。もしこの数値が上昇している場合は、安全在庫が不足しているか、リードタイムの想定が古くなっている可能性があります。安易にバッファを追加する前に再計算を行いましょう。なぜなら、あらゆるSKUに余分な在庫を詰め込むことは、在庫切れの問題をキャッシュフローの問題に置き換えるだけだからです。
まとめ
発注点は、感覚で決めるものではなく、1日の平均販売量にリードタイムを掛け、さらに需要と仕入先の納期変動幅に応じた安全マージンを加えたものです。まずは売れ筋商品から適切に計算し、定期的に見直すことで、売れ筋商品の在庫切れを防ぎつつ、慎重すぎるあまりに過剰発注して売れ行きの悪い商品に資金を浪費することもありません。