複数サイトの在庫同期とは?自社EC・モール・実店舗の売り越し対策を解説 DAY20

【DAY20】複数サイトの在庫同期
自社EC・ECモール・実店舗で同じ商品を売るときの売り越しを防ぐ
同じ商品を、自社EC・ECモール・実店舗の3か所で販売するとします。倉庫にある商品は、全部で10個です。ところが、それぞれの販売先へ「在庫10個」と登録すると、画面上は「自社EC10個+ECモール10個+実店舗10個=販売できるように見える数30個」になります。実際の商品は10個しかありません。短時間に複数の場所で注文されると、11個目以降の商品を用意できなくなります。これが、複数サイト販売で起こる代表的な「売り越し」です。
売り越しを防ぐには、各販売先の在庫数を別々に更新するのではなく、販売・キャンセル・返品・入荷によって変化した数量を、関係する販売先へ正しく反映する必要があります。この仕組みを、この記事では「在庫同期」と呼びます。
「売り場が3つあっても、商品が3倍に増えるわけじゃないよ!」
この記事で分かること
- 在庫同期とは何か/売り越しが起こる仕組み
- 基準となる在庫データの決め方/SKUを統一する理由
- 共通在庫と販売先別在庫の違い
- API・Webhook・CSV・手作業による同期
- リアルタイム同期と定期同期の違い
- 実店舗販売をECへ反映する方法
- セット商品・返品・キャンセル時の注意点
- 同期エラーを発見する方法/同期停止時の緊急対応
- 在庫同期を始めるための設計手順
商品数、注文数、販売先、倉庫、利用サービスによって、適切な方法は変わります。最初から複雑なシステムを導入するのではなく、どの在庫を正しい数字とし、いつ、どの販売先へ反映するかを決めることが出発点です。
- 先に結論|在庫同期で決めるのは4つ
- 身近な例で考えると「1つの財布を家族で使う」
- 1.在庫同期とは|複数の販売先で在庫変動を共有する仕組み
- 2.在庫同期と在庫一元管理の違い
- 3.売り越しはなぜ起こる?
- 4.最初に「基準在庫」を決める
- 5.商品を同じSKUでつなぐ
- 6.在庫の配分方式を選ぶ
- 9.複数の倉庫・店舗がある場合
- 11.在庫同期の4つの方法
- 12.リアルタイム同期と定期同期
- 13.販売可能在庫をそのまま配信しない
- 15.セット商品・キャンセル・返品の同期
- 18.入荷・在庫移動時の同期/19.同期エラーの発見
- 20.同期停止時の緊急対応
- 22.記録しておきたい在庫更新履歴
- 実際のケースで考えてみよう|工芸品を3つの場所で販売する
- 在庫同期を設計する12の質問
- やってみよう|配信在庫計算機&在庫僅少時の同期リスクチェッカー
- アウトプットワーク|複数サイトの在庫同期を設計しよう
- 理解度チェッククイズ
- よくある質問
- 今回のまとめ
- 獲得バッジ
先に結論|在庫同期で決めるのは4つ
| 項目 | 決める内容 |
|---|---|
| 基準データ | どのシステムの在庫を正しい数字とするか |
| 商品識別 | 各販売先の商品をどのSKUでつなぐか |
| 同期方法 | API、自動連携、CSV、手作業のどれを使うか |
| 例外対応 | 同期失敗や在庫差異が起きたときにどう止めるか |
基本的な流れは次のとおりです。
大切なのは、すべての画面で同時に数字を変えることではありません。一つの基準在庫を更新し、その結果を各販売先へ反映することです。
身近な例で考えると「1つの財布を家族で使う」
家族3人が、同じ財布のお金を使うとします。財布には1万円入っています。しかし、それぞれが「父のメモ1万円」「母のメモ1万円」「子のメモ1万円」と別々に記録していました。父が4,000円使っても、母と子のメモが1万円のままなら、残高を正しく判断できません。実際の残高は6,000円です。
在庫同期も同じです。基準となる在庫、自社ECの表示在庫、モールの表示在庫、実店舗の在庫をつなぎ、どこかで販売されたら他の場所へ反映します。
1.在庫同期とは|複数の販売先で在庫変動を共有する仕組み
在庫同期とは、一つの商品が販売・入荷・返品・調整されたとき、その変化を関係するシステムへ反映することです。在庫が変わる出来事には、次のようなものがあります。
- 自社ECで注文された/ECモールで注文された/実店舗で販売された
- 注文がキャンセルされた/返品商品が再販売可能になった
- 商品を入荷した/棚卸しで在庫差異が見つかった/商品が破損した
- 店舗間で商品を移動した/セット商品が売れた
在庫同期は、単に「夜に在庫表をコピーする作業」ではありません。在庫が変わった理由と数量を、正しいSKU・販売場所へ反映する業務です。
2.在庫同期と在庫一元管理の違い
似た言葉ですが、意味を分けると整理しやすくなります。在庫同期は、複数のシステム間で在庫数を合わせる処理です(基準在庫10個→自社EC10個・モール10個・POS10個→1個売れたらそれぞれ9個へ更新)。在庫一元管理は、複数の販売先の在庫・注文を一つの管理場所へ集める考え方です。一元管理システムが基準在庫を持ち、各販売先へ数量を配信します。
ECとPOSが同じ商品マスタ・在庫管理機能を使用する仕組みでは、実店舗やオンラインストアでの販売に応じて在庫を更新できます。Squareの公式案内でも、在庫追跡を有効にした商品は、POS、請求書、オンラインストアなどの販売に基づいて在庫数が更新されると説明されています。ただし、異なる会社のEC・モール・POSを組み合わせる場合は、外部の在庫連携サービスや独自連携が必要になることがあります。
3.売り越しはなぜ起こる?
実在庫10個を、自社EC・モール・店舗へ10個ずつ登録。各販売先が独立して動くと、合計10個を超える注文を受ける可能性があります。
自社ECで1個売れたあと、モールへ反映されるまで30分かかると、その間にモールでも注文が入り、1個の商品を2人へ販売してしまいます。
基準SKU「TS-001-WH-M」が、自社EC・モール・POSで別々のコードだと、対応関係がなければどの在庫を減らすべきか判断できません。
店舗で商品が売れても、EC在庫を翌日の閉店後に手作業で更新していると、その間にECで同じ商品を注文できてしまいます。
API通信エラー、認証期限切れ、商品コード未登録などが起きても気づかなければ、「自動連携を設定したから安心」ではありません。
ECサービスの「在庫切れでも販売を続ける」設定を、通常在庫の商品に誤って適用すると、意図しない売り越しにつながります。
4.最初に「基準在庫」を決める
複数の販売先を運用すると、自社ECの在庫、モールの在庫、POSの在庫、倉庫管理システムの在庫、スプレッドシートの在庫、実際に棚にある在庫が存在します。それぞれの数字が違った場合、どれを正しいと判断するか決めていなければなりません。
実際の入荷・出荷・返品を記録する倉庫システムを基準にします。
各販売先から注文を集め、共通在庫を計算するシステムを基準にします。
実店舗とオンライン販売を同じ商品・在庫データで管理します。
販売件数が少ない段階の候補です。ただし人が更新し忘れると合わなくなります。
5.商品を同じSKUでつなぐ
在庫同期はSKU単位で行います。販売先で同じSKUを使用できない場合は、対応表を作ります。
| 基準SKU | 自社EC | モールA | POS |
|---|---|---|---|
| TS-001-WH-S | TS-001-WH-S | MA-1001 | POS-001 |
| TS-001-WH-M | TS-001-WH-M | MA-1002 | POS-002 |
| TS-001-BK-S | TS-001-BK-S | MA-1003 | POS-003 |
| TS-001-BK-M | TS-001-BK-M | MA-1004 | POS-004 |
対応表には、基準SKU、販売先名、販売先商品ID・SKU、商品名、バリエーション、同期対象か、同期開始日・停止日、最終確認日、担当者を記録します。同じ商品を二重登録すると、一方だけ在庫が更新されないことがあります。
6.在庫の配分方式を選ぶ
実在庫10個をすべての販売先で共有します。在庫を無駄なく販売しやすい一方、更新遅延の影響を受けやすく、同時注文で売り越す可能性があります。
実在庫を自社EC4個・モール3個・実店舗2個・予備1個のように分けます。同期精度が低くても運用しやすい一方、売れ残りや販売機会の損失が起きやすくなります。
共通在庫に安全在庫を差し引き、各販売先へ表示する上限を設定します(例:配信18個、モール上限10、実店舗上限8)。需要と同期の信頼性を見ながら設計します。
9.複数の倉庫・店舗がある場合
「自社EC」「モール」は販売先、「本社倉庫」「東京店舗」「大阪店舗」は在庫の保管場所です。混同しないようにします。複数ロケーションを扱えるECサービスでは、倉庫や店舗ごとに在庫を個別追跡し、どの場所から注文を処理するかを設定できます。Shopifyの公式案内でも、複数の店舗・倉庫へ商品を割り当て、各ロケーションの数量を別々に管理する仕組みが説明されています。
合計在庫すべてをオンライン販売できるとは限りません。店舗に商品があっても、店頭販売専用でオンライン注文の出荷に使わない設定なら、オンライン販売可能数には含めません。
10.在庫をどこから出荷するか
複数ロケーションがある場合、購入者に近い店舗、在庫が多い倉庫、送料が安い場所、注文商品がすべてそろう場所、店舗販売用在庫を優先的に残す、古い在庫がある場所などのルールで、注文の割当先を決めます。2商品を注文された場合、1つの倉庫からまとめて発送できれば、送料と追跡番号を1件に抑えられます。在庫数だけでなく、出荷単位も考えます。
11.在庫同期の4つの方法
ECとPOSが同じ商品マスタ・在庫を使用します。販売先が少なく自社ECと実店舗が中心のケースに向きますが、外部モールや別倉庫の追加には別途連携が必要です。
販売や在庫変更が起きたときにシステム同士でデータを送受信します。SquareのInventory APIでは、在庫数が更新された際にinventory.count.updatedというWebhook通知を送る仕組みが提供されています。通信失敗や重複通知への対応、定期的な在庫照合も必要です。
基準在庫をCSV出力し、販売先形式へ変換して取り込みます。Shopifyの公式機能でも、ロケーションごとの在庫数量をCSVで出力・一括更新でき、古い数量で上書きしないための検証機能が案内されています。
自動同期を使わず在庫を分けて運用します。商品数・注文件数が少ない段階に向きますが、更新忘れや在庫偏りが起きやすくなります。
12.リアルタイム同期と定期同期
リアルタイムに近い同期は、注文や在庫変更が起きた直後に更新するため売り越しリスクを抑えやすい一方、通信エラーへの再処理や同時注文の制御が必要です。定期同期は5分・30分・1時間などの間隔で更新し、仕組みを作りやすい一方、同期間隔中に売り越す可能性があります。すべての商品を同じ条件にする必要はありません。
| 商品 | 同期方法の例 |
|---|---|
| 売れ筋・在庫少 | ほぼリアルタイム |
| 通常商品 | 5〜15分ごと |
| 大量在庫商品 | 1時間ごと |
| 一点物・店舗専用品 | 販売先を限定/EC同期対象外 |
13.販売可能在庫をそのまま配信しない
基準在庫が5個でも、各販売先へ5個を表示すると、同期の時間差で売り越す可能性があります。そこで、連携用の安全在庫を差し引きます。
(例:基準5個-安全在庫2個=配信在庫3個)
安全在庫が多すぎると販売機会を失います。同期時間、注文数、商品価格、再入荷の難しさを見て調整します。在庫10個以上なら全販売先、3〜9個ならモールを絞る、1〜2個なら自社ECだけ、というように残り在庫が少ない商品を、更新の遅い販売先から停止する方法もあります。
14.実店舗販売をどう反映する?
POS連携では、レジで販売した時点で同じ在庫データを減らし、共通在庫を更新してEC・モールへ反映します。手入力の場合は、販売時にSKUを記録する、何分以内に更新するか、混雑時の仮記録方法、閉店時の照合、通信障害時の処理を決めます。イベント・催事販売で商品を持ち出す場合は在庫移動として管理し、イベント用の在庫を倉庫とECの両方で販売できる状態にしないようにします。
15.セット商品・キャンセル・返品の同期
3個セットが1つ売れたら、構成する単品在庫をそれぞれ減らします。セットSKUだけ減らして単品在庫を減らさないと、実際より多く販売できてしまいます。固定セットはどれか一つが売り切れたら販売停止、選べるセットは注文データから構成SKUへ反映します。
注文時に減らした在庫は、キャンセルで基準在庫・各販売先へ戻します。ECと決済システムの両方から取消通知を受けると、同じ注文を二重に戻す危険があります。注文番号・処理IDで重複実行を防ぎます。
返品受付時点では商品を在庫へ戻しません。返送中→到着→検品→再販売可能と確認した時点で基準在庫へ戻し、各販売先へ反映します。使用済み・破損商品は販売可能在庫へ含めません。
18.入荷・在庫移動時の同期/19.同期エラーの発見
入荷は、仕入先から発送された時点ではなく、倉庫で受領・検品した数量を在庫へ追加します(例:入荷予定100個、不良2個→販売可能96個)。店舗間移動では、移動中の商品を移動元・移動先の両方へ含めると二重在庫になります。Shopifyの公式機能でも、店舗・倉庫・外部ロケーション間の在庫転送を作成し、移動と受領を追跡する考え方が案内されています。
在庫同期は、失敗する前提で監視します。最終同期日時、成功・失敗件数、未登録SKU、数量不一致、エラー内容、再処理回数を確認します。全商品が同じ数量のまま、売れたのに他サイトが減らない、マイナス在庫が発生した、未登録SKUが増えているといった状態は、同期が止まっているサインです。
| 発生日時 | 販売先 | 内容 | 状態 |
|---|---|---|---|
| 10:05 | モールA | 商品コード未登録 | 対応中 |
| 10:10 | 自社EC | API通信失敗 | 再処理済み |
| 10:15 | POS | 数量不一致 | 棚卸し待ち |
20.同期停止時の緊急対応
自動同期が停止した場合は、原因調査より先に売り越しを止める必要があります。
21.同期復旧時の「上書き事故」
停止時の在庫が10個で、停止中に3個販売されて現在7個だとします。復旧後に停止前の「10個」を再送すると、販売可能数が3個増えてしまいます。どの時点の在庫データか、停止中の注文・手動調整・キャンセル・返品・入荷・店舗販売を確認し、古い在庫の再送ではなく現在の基準在庫から再開します。
22.記録しておきたい在庫更新履歴
数量だけを保存すると、なぜ変わったか分かりません。更新ID、発生・反映日時、基準SKU、ロケーション、変更前後の数量、理由(販売・入荷・返品など)、注文番号、販売先、処理状態、担当者を記録します。
23.在庫同期の運用指標
| 指標 | 計算・確認方法 |
|---|---|
| 売り越し件数 | 用意できない数量まで受注した注文数(目標0件) |
| 在庫不一致率 | 数量が一致しなかったSKU数÷確認したSKU数×100 |
| 同期成功率 | 正常に反映した処理件数÷全同期処理件数×100 |
| 同期遅延時間 | 在庫変更発生時刻から他販売先へ反映された時刻まで(最大遅延も確認) |
| 未解決エラー数 | 現在も対応が終わっていない同期エラーの件数 |
実際のケースで考えてみよう|工芸品を3つの場所で販売する
手作りの花器を、自社EC・ECモール・実店舗の3つで販売します。商品は一点ずつ色や模様が異なるため、花器A(VC-001)・花器B(VC-002)・花器C(VC-003)はすべて別SKU・各1個です。
問題が起きた運用:3商品を、自社EC・モール・実店舗のすべてへ在庫1個として登録しました。実店舗でVC-001が販売されましたが、EC担当者が在庫を更新したのは閉店後でした。その間に、自社ECでもVC-001が注文されました。
原因:一点物を複数サイトへ同時掲載した/店舗販売が即時反映されない/安全在庫を設定していなかった/売れた商品を止める担当者が決まっていなかった/POSとECが連携していなかった。
VC-001は自社ECのみ、VC-002はモールのみ、VC-003は実店舗のみ。最も単純で売り越しリスクを抑えやすい方法です。
店舗で会計する直前にEC・モールの注文を確認し、商品を保留します。ただし同時注文を完全には防げません。
実店舗で販売→基準在庫を0→自社EC・モールを在庫切れへ、という流れを自動化します。
数量商品でも、在庫が1個になったら自社EC以外を停止するルールを設定します。再製造できない商品は、販売機会より売り越し防止を優先します。
在庫同期を設計する12の質問
- 正しい在庫はどこで管理しますか?基準となるシステムを一つ決めます。
- 商品は共通SKUで管理されていますか?販売先コードとの対応表を確認します。
- どの販売先で同じ在庫を共有しますか?同期対象外の商品・販売先も決めます。
- 在庫は共通利用ですか、販売先別配分ですか?商品特性と同期精度から判断します。
- 実店舗販売はいつ反映されますか?POS連携か、手入力かを確認します。
- 在庫更新はリアルタイムですか、定期ですか?更新間隔を記録します。
- 在庫が少ない商品はどうしますか?販売先を絞る、安全在庫を増やすなどを決めます。
- セット商品が売れたら何を減らしますか?構成SKUと必要数を登録します。
- キャンセル・返品時に在庫は戻りますか?重複して戻らないことも確認します。
- 同期失敗は誰に通知されますか?エラー通知先と対応期限を決めます。
- 連携停止時に販売を止める方法はありますか?緊急手順を用意します。
- 在庫差異をいつ照合しますか?日次、週次、月次などの確認頻度を決めます。
やってみよう|配信在庫計算機&在庫僅少時の同期リスクチェッカー
安全在庫を差し引いた配信可能在庫を自動計算し、各販売先の上限が超過していないかを確認できます。さらに、残り在庫と同期遅延の目安から、販売先を絞るべきかをすぐに判断できます。入力内容はこのブラウザにのみ保存され、外部へは送信されません。
① 配信在庫計算機(安全在庫+販売先上限)
② 在庫僅少時の同期リスクチェッカー
これは仕組みを理解するための簡易ツールです。実際の安全在庫の量や販売先の絞り方は、商品特性、同期の実測遅延、注文ペースに合わせて確認してください。
アウトプットワーク|複数サイトの在庫同期を設計しよう
現在販売している商品、または販売予定の商品を一つ選んでください。分からない項目は推測で埋めず、「未確認」と記録してください。
① 販売先を整理する
| 販売先 | 商品コード・同期対象・更新方法 |
|---|---|
| 自社EC | |
| モール | |
| 実店舗 |
② 保管場所と基準在庫を整理する
| 項目 | 内容 |
|---|---|
| 本社倉庫・店舗の実在庫 | |
| 基準となる在庫システム | |
| 配信可能在庫(基準-安全在庫) |
③ 同期方法と緊急対応を決める
| 項目 | 内容 |
|---|---|
| 同期方法・更新間隔 | |
| 同期失敗の通知先・再処理担当者 | |
| 同期停止時に販売を止める方法 |
記入できたら完了にする
理解度チェッククイズ
第1問 実在庫10個を、自社EC・モール・実店舗へそれぞれ10個ずつ登録した場合、何が問題でしょうか?
第2問 在庫同期を行う前に、最初に決めたいものはどれでしょうか?
第3問 同じ白・Mサイズの商品について、販売先ごとにSKUが異なる場合、何が必要でしょうか?
第4問 共通在庫方式の特徴として近いものはどれでしょうか?
第5問 CSVによる在庫更新の注意点はどれでしょうか?
第6問 実在庫5個、安全在庫2個の場合、販売先へ配信する数量の基本的な目安はいくつでしょうか?
第7問 実店舗で商品が売れた場合、EC在庫はどうしますか?
第8問 3個セットが1つ売れた場合、単品在庫はどうしますか?
第9問 返品依頼を受けた時点で、すぐ販売可能在庫へ戻してよいでしょうか?
第10問|実務判断問題 自動同期が2時間停止していたことが分かりました。その間、自社ECと実店舗で注文・販売が発生しています。どのような順番で対応しますか?
回答例を見る
同期が停止した時刻と販売先を確認する/在庫が少ない商品の販売を一時停止する/停止中に自社ECで入った注文を抽出する/実店舗で売れたSKUと数量を抽出する/キャンセル、返品、入荷の有無を確認する/基準在庫と実在庫を照合する/現在の販売可能在庫を計算する/各販売先へ手動で暫定在庫を設定する/同期システムを復旧する/停止前の古い在庫ではなく、現在在庫から再同期する/売り越しが発生していないか注文を確認する/原因、影響、対応内容を記録する。
第11問|実務判断問題 在庫は残り1個です。自社EC、モール2店舗、実店舗で販売しています。同期には最大15分の遅れがあります。どのような売り越し対策を取りますか?
回答例を見る
同期遅延がある販売先を停止する/最後の1個は自社ECだけで販売する/すべての販売先を在庫0にし、店頭確認後に販売する/実店舗専用在庫として確保する/販売先へ配信する安全在庫を1個に設定する/一点物なら販売先を最初から一つに限定する/在庫0以下でも販売を続ける設定を無効にする。残り1個を4つの売り場へ同時に表示し続けるより、販売機会を一部制限して売り越しを防ぐ判断が適切です。
よくある質問
同期速度、通信障害、同時注文、SKU設定、手動販売などによって、売り越しの可能性は残ります。安全在庫、販売先制限、エラー監視を組み合わせます。
同じSKUを使えると管理しやすくなります。販売先独自のコードが必要な場合は、基準SKUとの対応表を作ります。
商品によります。在庫が多く販売頻度が低い商品なら定期同期でも運用できる場合があります。一点物、在庫が少ない商品、売れ筋商品では更新遅延の影響が大きくなります。
不要にはなりません。認証エラー、商品未登録、通信障害、重複処理などが起こるため、エラー通知と定期照合が必要です。
できます。ただし、リアルタイムではありません。CSV出力後の注文や入荷を反映せず取り込むと、古い数量で上書きする可能性があります。
商品数、販売先、注文数が少なければ可能です。在庫を販売先別に配分し、更新担当者、更新時刻、確認表を決めます。
倉庫から発送できるか、店舗スタッフが出荷できるか、店頭販売との競合を管理できるかを確認します。店舗在庫すべてをオンライン販売可能にする必要はありません。
商品が返品先へ到着し、検品によって再販売可能と判断された後です。
予約販売・受注生産として意図的に受注している場合を除き、同期遅延、売り越し、引当漏れ、設定ミスの可能性があります。
更新速度の速い連携を使用するか、最後の1個は販売先を一つに限定します。再製造できない商品の場合は、販売機会より売り越し防止を優先する判断が必要です。
今回のまとめ
複数サイトの在庫同期は、各販売先の在庫数を同じ数字にするだけの作業ではありません。今回覚えておきたいポイントは、次の5つです。
- 複数サイトで同じ在庫を販売する場合は、基準となる在庫データを一つ決める
- 販売先ごとの商品を、共通の基準SKUでつなぐ
- 共通在庫、販売先別配分、安全在庫を商品に合わせて使い分ける
- 販売・キャンセル・返品・入荷・在庫移動を各販売先へ反映する
- 自動同期が失敗したときに、販売停止・手動更新・再同期ができるようにする
在庫同期で本当に重要なのは、「常に同じ数字に見えること」ではありません。どこで売れたか→どの商品が何個減ったか→現在どこに何個あるか→新しく何個販売してよいか。この流れを正しくつなぐことです。
「在庫同期は、数字をコピーすることじゃない。“売れた事実”を全部の売り場へ伝えることなんだ!」
DAY20の実践課題
現在販売している商品、または販売予定の商品を一つ選び、在庫同期表を作成してください。基準となるシステム、同期方法、同期間隔、同期失敗の通知先を決め、「最終同期から何分以上経過したら同期停止を確認するか」「在庫が何個以下で販売を停止するか」「復旧時はどの時点の基準在庫から再同期するか」を書き出します。分からない項目は推測で埋めず、「未確認」と記録してください。


