在庫1個でも2件注文が通ってしまう——単一ストアの売り越しは記事24でも扱いました。ところが、複数のロケーション(倉庫)を持ち、同じSKUを複数拠点で売っていると、もう一段やっかいな売り越しが発生します。各拠点には在庫があるのに、合算して見ると実態以上に「売れる」ように見えてしまう問題です。
この記事では、合算在庫(アグリゲート)とロケーション単位在庫の違いに注目し、複数拠点運用で売り越しが起こる仕組みと、それを構造的に防ぐ運用を整理します。Google Sheetsをマスターにして拠点別に在庫を書き込む方法も合わせて紹介します。
合算在庫が引き起こすロケーション横断の売り越し
Shopifyでは、在庫はロケーションごとに状態(販売可能、コミット済み、手元在庫など)として管理されます。商品ページに表示される「販売可能数」は、その商品が販売対象としているロケーションの在庫を合算した数字になりがちです。たとえば東京倉庫に3個、大阪倉庫に2個あれば、お客様には合計5個が販売可能に見えます。
ここに落とし穴があります。注文は最終的にどこか一つの拠点からフルフィルメントされます。5個の注文が一気に入っても、東京には3個しかなければ、東京から5個を出荷することはできません。合算では足りているのに、拠点単位では足りない——これがロケーション横断の売り越しの正体です。
同一SKUを複数拠点で売るときの落とし穴
同じSKUを複数の拠点に在庫として持つこと自体は、まったく問題ありません。むしろ近い倉庫から送れば送料も納期も改善します。問題は、それぞれの拠点の在庫がどう更新され、どう合算されるかを把握しないまま運用したときに起こります。
- ある拠点で大量に売れても、合算表示では「まだ在庫がある」ように見えてしまう
- 実店舗(POS)とオンラインが同じSKUを共有し、片方の動きがもう片方に伝わるまで遅れる
- 返品や棚卸しでの調整がどの拠点に反映されたか追えなくなる
- 新しい拠点を追加したとき、その拠点を販売対象に含めたつもりが含まれていない(逆もある)
同期タイミングのずれが生むオーバーセル
複数拠点では、各拠点の実在庫を一つのマスターに集約し、そこからShopifyへ反映するのが王道です。ところが集約と反映のあいだにはタイムラグがあります。拠点Aの倉庫システムが在庫を減らしてから、マスターのGoogle Sheetsに反映され、さらにShopifyへ書き込まれるまでの数分から数十分のあいだに注文が入れば、古い合算値で受注してしまいます。
拠点が増えるほど、それぞれの更新タイミングはばらつきます。Aは15分ごと、Bは手動、Cは夜間バッチ——このような不揃いが合算値を不正確にし、売り越しの温床になります。まずは「各拠点がいつ、どの粒度で更新されるか」を一枚の表にして可視化することをおすすめします。
ロケーション単位の在庫管理で防ぐ
構造的な対策は、合算ではなく拠点単位で在庫を管理し、拠点単位でShopifyに書き込むことです。Shopifyは商品をロケーションに紐づけて、そのロケーションの在庫数を個別に持てます。マスターのGoogle Sheets側も、SKUごと・ロケーションごとに行(または列)を分け、それぞれの手元在庫を明示しておきましょう。
- 01各拠点を販売対象にするか、出荷専用にするかをShopifyのロケーション設定で明確にする
- 02Google Sheetsのマスターを「SKU × ロケーション」の粒度で持ち、拠点別の数量を1セルずつ管理する
- 03同期前に接続テストでカラムのマッピング(SKU列・ロケーション列・数量列)が正しいか確認する
- 04スケジュール同期で各拠点の数量を定期的にShopifyへ反映する
Sync Masterは複数ロケーション(マルチ倉庫)に対応しており、シート上の拠点別在庫をそのままShopifyの各ロケーションへ書き込めます。本番同期の前に接続テストでマッピングを検証できるので、ロケーションの取り違えという致命的なミスを事前に防げます。
公開ロケーションを絞るという選択肢
もう一つ実用的なのが、オンラインで販売対象とするロケーションをあえて絞る方法です。すべての拠点を販売可能在庫の合算に含めると見え方は複雑になりますが、たとえばオンライン注文はEC専用倉庫の1拠点だけで引き当て、他拠点は出荷専用や実店舗専用にすると、合算のあいまいさが大きく減ります。
小規模なうちは「公開ロケーションは1つ」と割り切るのも有効です。拡大に伴って拠点を増やす際も、どの拠点をオンライン在庫に算入するかを意図的に決めれば、合算が膨らんで売り越す事故を抑えられます。販売対象から外したい拠点は、商品からロケーションを外すか在庫をゼロにしておきます。
売り越し発生時のリカバリー手順
それでも売り越しは起こりえます。起きてしまったときに大切なのは、慌てず順番に対応することです。
- 01どの拠点で在庫が不足したかを特定する(合算ではなく拠点単位で確認する)
- 02在庫のある別拠点から出荷できないか、フルフィルメントの引き当て先を見直す
- 03どこからも出せない場合は、早めに顧客へ連絡し、入荷待ち・代替品・返金のいずれかを提案する
- 04原因の拠点の数量をマスターで即時に正し、手動同期で反映する
- 05再発防止として、その拠点の更新タイミングとバッファ設定を見直す
複数拠点の売り越しは「総数」ではなく「拠点単位」で捉えることが出発点です。Google Sheetsを拠点別のマスターとして整え、接続テストとスケジュール同期で各ロケーションへ正確に書き込めば、合算のあいまいさに振り回されない運用に近づきます。まずは自分のストアの公開ロケーションと更新タイミングを一覧化するところから始めてみてください。