ECサイトの棚卸しチュートリアル — Shopifyで在庫差異率1%以下を目指す実践手順
このチュートリアルのゴール: Shopifyの標準機能だけで棚卸しのオペレーションを組み立て、在庫差異率を 1%以下 に抑える仕組みを完成させます。所要時間は初回セットアップで30〜60分、以降の月次ルーティンは1回20分が目安です。完了時点で「差異がいつ・なぜ起きたか」を90日さかのぼって説明できる状態になります。
「システムでは在庫があるのに棚には商品がない」。この手の事故は、棚卸しのやり方を決めずに年1回だけ一斉実施しているストアでよく起きます。差異は蓄積するほど原因の特定が難しくなり、最後は実数リセットするしかなくなるのが定番のパターンです。
この記事では、アプリ開発でストアオーナーとやり取りするなかで効いていると感じた棚卸しの進め方を、Shopify管理画面の動線そのままでなぞれる形にまとめました。最後まで進めれば、差異率を数値で追える状態になっています。
前提条件:始める前にそろえておくもの
手元に以下が揃っているか確認してから進めてください。揃っていないと途中で手が止まります。
- Shopifyストア(プラン問わず)にログインできる
- 在庫追跡がオンになっている商品が登録済み(未設定の場合は在庫管理チュートリアルを先に)
- 商品のSKUコードが全品に設定されている(バーコードは任意だが推奨)
- 棚卸し当日は出荷を一時停止できる時間帯を確保(循環棚卸しなら数SKU分でOK)
- カウント担当とチェック担当の2名体制(ソロでもOKだが2周カウント必須)
- Excel / Googleスプレッドシートが使える環境
在庫追跡がオフのまま棚卸しをしても、Shopify側の基準値が存在しないため差異を計算できません。追跡オフの商品が混じっている場合は、先にCSVで Variant Inventory Tracker 列をすべて shopify に埋めてから本チュートリアルに戻ってきてください。
なぜ年1回の一斉棚卸しだと差異が解けないのか?
ECでは注文・返品・転送が毎日動くため、1年分の差異が積み重なると原因の切り分けが困難です。小売業界全体の在庫精度は平均63%という調査もあり、「3つに1つはデータと現物が合わない」のが現実です。
出典:IHL Group - Retail Inventory Crisis Persists Despite $172 Billion in Improvements
差異を小さく保つコツは「頻度を上げて1回あたりを軽くする」こと。以下の手順は 循環棚卸し(サイクルカウント) を前提に組み立てています。
手順:4ステップで差異率1%以下まで持っていく
1〜2が準備、3が実査、4が改善サイクルです。順番通りに進めてください。
- 1
Step 1:Shopifyから基準値CSVをエクスポートする
棚卸しの「正解の側」になる基準値を固定します。カウント中にも在庫が動くので、 棚卸し開始時刻のスナップショット を取るのが鉄則です。
Shopify管理画面左メニュー「商品管理」→右上の「エクスポート」→「すべての商品」→「CSVファイル(Excel / Numbers用)」を選択。登録メールにCSVが届きます。
届いたCSVのうち使う列は以下の4つです。
Handle(商品ID)Variant SKU(SKUコード)Variant Inventory Qty(現在のShopify上の在庫数)Location(複数ロケーションがある場合)
別名で
stocktake_2026-04_baseline.csvのように保存します。 日付入りのファイル名 にしておくと、後日の差異追跡で助かります。エクスポート中も注文は入り続けます。カウント開始の直前にエクスポートを実行し、可能ならカウント中は出荷を一時停止してください。出荷が止められない場合は、カウント時刻以降の出荷ログを別途メモしておき、最後に加減算します。
- 2
Step 2:カウントシートを準備する
エクスポートしたCSVをGoogleスプレッドシートで開き、右端に以下の3列を追加します。
Physical Qty(実数カウント用の空欄)Diff(= Physical Qty - Variant Inventory Qtyで自動計算)Reason(差異の理由をあとで埋める欄)
ABC分析で上位20%の売れ筋SKUに色付けをしておくと、そこだけでも先にカウントすればリスクの大半をカバーできます。ABCの切り方はECの在庫ABC分析ガイドにまとめています。
印刷して倉庫に持ち込むか、タブレットで開きながら入力する運用が一般的です。わたしがやり取りするストアでは、iPadに共有スプレッドシートを開いてスタイラスで入力するスタイルが増えています。
- 3
Step 3:実棚をカウントしてCSVに記入する
倉庫で現物を数え、カウントシートの
Physical Qty列に実数を入れていきます。精度を上げるコツは次の3点です。- ロケーションを1つずつ封鎖してからカウント する(途中で動かされると数えなおし)
- バーコードリーダーでSKUを読んでから数字を入力 する(目視だけだと似たSKUを取り違える)
- 差異が出たSKUは2人目が独立して再カウント する(ダブルカウント必須)
入力が終わったら、
Diff列が自動で差異を計算します。プラス(実在庫が多い)もマイナス(実在庫が足りない)も、どちらも原因調査の対象です。「あと1つ足りないはずなのに見つからない」ときは、 近いSKUの棚を先に確認 してください。色違い・サイズ違いの取り違えが差異の過半を占めます。それでも見つからなければ、一旦差異として記録して次のSKUに進むのが全体最適です。
- 4
Step 4:Shopifyで在庫を調整し、理由を記録する
差異が確定したSKUは、Shopifyの「在庫を調整」機能で修正します。管理画面から対象商品を開き、「在庫」セクション→「数量を調整」→ 理由を選択してから保存 してください。選べる主な理由は次のとおりです。
Correction(カウント修正)Damaged(破損)Theft or loss(紛失・盗難)Promotion or donation(販促・寄付)Other(その他/メモ記入)
理由を埋めておくと、管理画面の「在庫調整履歴」から 過去90日分 を逆引きできるようになります。Reasonがバラけている商品は根本原因がある証拠なので、次回のチュートリアル対象に入れておきます。
大量に差異がある場合は、CSVを編集して「インポート→既存商品を上書き」で一括反映もできます。ただし理由が記録されないので、原因追跡が必要なSKUは管理画面からひとつずつ調整するのがおすすめです。
月次ルーティンに組み込む:差異率の計算式
差異率は以下の式で毎月1回算出します。
差異率(%)= 差異が出たSKU数 / 棚卸し対象SKU数 × 100
最初は5〜10%くらいから始まることが多いですが、Step 4の「理由を必ず記録する」を3ヶ月続けると、1%前後まで下がってきます。下がらない場合はボトルネックを可視化する必要があるので、 Reason 列の内訳を月次で集計するのが近道です。
差異率の目安:
- 0〜1%:優秀。循環棚卸しが機能している
- 1〜3%:平均的。月次ルーティンで十分下げられる
- 3〜5%:要改善。検品・ピッキングプロセスに手を入れる
- 5%超:一度実数リセット+運用ルールの再構築が必要
トラブルシューティング
チュートリアル通りに進めても引っかかりやすいポイントをまとめました。症状から該当箇所を開いてください。
原因: 対象商品で在庫追跡が有効になっていない、またはエクスポート形式が違う。
対処:
- 商品管理→エクスポート時に「CSVファイル(Excel / Numbers用)」を選ぶ(Plainを選ぶと列が変わる)
Variant Inventory Tracker列が空欄の商品は追跡オフ。CSVでshopifyに一括置換してインポートし直す- 再エクスポートして
Variant Inventory Qty列が埋まっているか確認
原因: Shopify側の在庫数がリアルタイムで動いているため、カウントの基準値がズレてしまう。
対処:
- カウント時間帯は「在庫切れの場合でも販売を続ける」を一時的にオフ、または商品を一時的に非公開にして出荷を止める
- 出荷を止められない場合は、カウント開始時刻をスプレッドシートに記録しておき、それ以降の出荷分をSKUごとに加算して基準値を再計算
- 循環棚卸しなら、対象SKUだけを一時的に非公開にして封鎖するのが実用的
原因: 返品・交換を受け付けた商品を倉庫に戻したあと、Shopifyで在庫を加算していないケースが一番多い。
対処:
- 「注文管理」→「返金済み」の注文を過去90日分確認
- 返金時に「在庫を戻す」のチェックを忘れていないか検査
- 返品ワークフローを「返金→検品→在庫戻し」の順でチェックリスト化し、再発防止
プラス差異は在庫を減らして終わりではなく、「なぜ足されなかったか」を潰さないと翌月も必ず起きます。
原因: 拠点間の在庫移動をメモやチャットで済ませており、Shopifyの「転送」機能で記録していない。
対処:
- 「商品管理」→「転送」→「転送を作成」で移動元・移動先を記録
- 出荷時に「出荷済み」、受領時に「受領済み」へステータス更新
- 今後は どんなに小さな移動でも転送機能に記録 するルールに変更
転送機能の詳細な手順はShopifyの在庫管理チュートリアルのStep 4にまとめています。
原因: 入荷時の検品ミスか、ピッキング時の取り違えが常態化している。差異の調整は対症療法で、根本原因はプロセスにある。
対処:
- 在庫調整履歴の
Reason列を過去3ヶ月分集計し、最頻の理由を特定 Correctionが多いなら検品プロセス、Damagedが多いなら倉庫のオペレーションを見直す- SKUを絞って週次のスポット棚卸しに切り替え、2週間で差異が減らなければ入荷検品を2人体制に変更
同じSKUで差異が続くのは、プロセス改善のシグナルです。
原因: 初回で全SKUを一斉にやろうとして疲弊している。循環棚卸しに切り替えていない。
対処:
- SKUをABC分析で3グループに分ける(A=上位20%、B=中位30%、C=下位50%)
- Aは毎月、Bは四半期、Cは半年に1回のローテーションで組む
- 1回あたりのカウント時間を 20分以内 に収まる粒度まで細かくする
負荷を下げれば続きます。月1回だけでも回せるようになれば、差異率は必ず下がります。
次にやること:土台ができたら読みたい記事
棚卸しのサイクルが回るようになったら、次は以下のテーマに進むのがおすすめです。
- Shopifyの在庫管理チュートリアル — 在庫追跡・ロケーション・転送の初期設定から運用まで
- ECの在庫ABC分析ガイド — 棚卸し対象の優先順位付けに必須
- Shopifyマルチロケーションガイド — 複数拠点運用の設計と注意点
Shopify標準機能の範囲で、月次の循環棚卸し+差異率の可視化までは問題なく実現できます。アプリを足す前に、まずはこの記事の手順を1サイクル回してみてください。

この記事を読んだ方におすすめ
Shopify予約アプリ
まるっと予約
ストアに予約機能を追加。日時・デポジット・キャンセルに対応。
💡 無料プランあり(月5件まで)
他のまるっとシリーズもチェック
Shopifyストア構築もお任せください
「自分でShopifyを設定するのは不安」という方に、アプリ開発者本人がShopifyストア構築+まるっと予約の導入をまるごとサポートいたします。









