Shopify CSV で在庫が0になる原因は、商品CSVと在庫CSVのどちらを使ったかで切り分けます。商品CSVでは Variant Inventory Qty、Variant Inventory Tracker、Variant SKU の扱いを確認し、在庫CSVでは SKU、Location、On hand / Available の列を見ます。空欄・0・未更新は同じ意味ではないため、投入前にバックアップを取り、差分を確認することが事故防止の基本です。特に商品CSVで在庫数を更新する場合と、在庫CSVで更新する場合とで、影響範囲が異なります。
在庫が0になる原因は商品CSVと在庫CSVで分ける
Shopify では在庫数の更新に2種類のCSVが使われます。どちらのCSVを使ったかによって、在庫が0になる原因と確認すべき列が変わります。
2種類のCSVの違い
| CSVの種類 | 主な用途 | 在庫関連の列 | 注意点 |
|---|---|---|---|
| 商品CSV(Products CSV) | 商品情報の全体的な更新 | Variant Inventory Qty、Variant Inventory Tracker、Variant SKU | 在庫数以外の列もまとめて更新される |
| 在庫CSV(Inventory CSV) | 在庫数に特化した更新 | SKU、Location、On hand、Available | 在庫数だけを更新するが、列の指定を間違えると事故になる |
まず確認すること: 在庫が0になったのは、商品CSVをインポートした後か、在庫CSVをインポートした後か。これによって原因の切り分け方が変わります。
どちらのCSVを使うべきか
- 商品情報(タイトル、説明、価格、画像など)も一緒に更新する場合:商品CSVを使う
- 在庫数だけを一括更新したい場合:在庫CSVを使う(影響範囲が在庫に限定されるため、事故リスクが下がる)
在庫数の更新だけが目的であれば、在庫CSVを使う方が安全です。商品CSVは更新対象が多く、意図しない列の上書きが起きやすくなります。
商品CSVで見る列
商品CSVをインポートして在庫が0になった場合、次の列を確認します。
Variant Inventory Qty
この列は、variant の在庫数量を指定します。
| 値 | 意味 | Shopify側の動作 |
|---|---|---|
数値(例:10) |
指定した数量に設定される | 旧い数量は上書きされる |
0 |
在庫0に設定される | 「在庫切れ」の表示になる |
| 空欄 | 列の値が無視される(と見せかけて、CSVのバージョンや設定によって動作が変わる場合がある) | 空欄の取り扱いは公式仕様を確認 |
| 列ごと省略 | 在庫数は変更されない | 他の列だけが更新される |
よくある事故: Variant Inventory Qty 列に 0 を入れたつもりがないのに、空欄を 0 として扱ってしまったケース。スプレッドシートで編集していると、空白セルが意図せず 0 に変換されることがあります。
Variant Inventory Tracker
この列は、在庫管理を Shopify で行うかどうかを指定します。
| 値 | 意味 | 在庫への影響 |
|---|---|---|
shopify |
Shopify で在庫を管理する | Variant Inventory Qty の値が反映される |
| 空欄または未設定 | Shopify で在庫を管理しない | 在庫数の表示・更新が行われない |
null |
トラッキングなし | 在庫管理の対象外 |
よくある事故: Variant Inventory Tracker を shopify に設定せずに Variant Inventory Qty に数値を入れても、在庫として反映されない。逆に、Tracker を空欄にしたことで、既存の在庫管理が解除されてしまうこともあります。
Variant SKU
在庫CSVと連携するためのキーとなるのが Variant SKU です。SKU が一致しないと、在庫CSVでの更新が正しく反映されません。
確認ポイント:
- SKU に余分なスペースが入っていないか(前後にスペース)
- 全角・半角が統一されているか
- 同じ SKU が複数の variant に割り当てられていないか(重複 SKU)
在庫CSVで見る列
在庫CSV(Inventory CSV)は、商品CSVとは列構成が異なります。在庫に特化した列を確認します。
在庫CSVの主要列
| 列名 | 内容 | よくある事故 |
|---|---|---|
| SKU | 在庫更新の識別キー | SKU不一致で更新されない。空欄の行があるとスキップされる |
| Location | 在庫を管理するロケーション名 | 別のロケーションの在庫だけ更新してしまう |
| On hand | 実在庫数 | 0にすべきでない商品を0にしてしまう |
| Available | 販売可能在庫数 | On hand と Available の違いを理解せずに更新する |
On hand と Available の違い
この2つの列は似ていますが、意味が異なります。公式ヘルプでの定義を確認することが重要ですが、大まかな違いは以下のとおりです。
- On hand:倉庫に実際にある在庫数
- Available:On hand から予約済み(受注済みで未出荷など)を引いた、販売可能な数
どちらの列を更新すべきかは、運用方針によります。間違った列を更新すると、受注残との整合性が崩れる可能性があります。
Location の確認
複数のロケーション(倉庫・店舗など)を持っている場合、在庫CSVの Location 列で更新先を指定します。
- 間違ったロケーションを指定している:A倉庫の在庫を更新したいのに、B店舗の在庫を0にしてしまう
- ロケーション名の表記ゆれ:CSVの Location 列の値が、Shopify に登録されているロケーション名と一致しないと更新されない
- 新規ロケーション:CSV上のロケーション名が Shopify に存在しない場合、更新自体がスキップされることがある
空欄・0・未更新の違いを確認する
在庫が0になった原因を切り分ける際、空欄・0・未更新は明確に区別して考えます。
| 状態 | CSV上の見え方 | Shopify側の動作 | 意図した更新か |
|---|---|---|---|
| 意図的に0にした | 0 |
在庫0として設定 | はい(はず) |
| 空欄のつもりが0になった | 空欄 → 0 に変換 |
在庫0として設定 | いいえ |
| 列を省略した | 列なし | 既存の値が維持される | 更新されない |
| 行を省略した | 行なし | そのvariantは更新されない | 更新されない |
| SKUが不一致 | 値は正しいがSKUが違う | 更新されない | 別のvariantが更新されている可能性 |
スプレッドシートでの空欄→0変換に注意:
Google スプレッドシートや Excel でCSVを編集する際、空欄のセルに 0 が自動入力される設定になっている場合があります。特に、数式で値を生成している場合、空白セルが 0 扱いになることがあります。CSVを保存する前に、空欄のセルが本当に空欄のままかを確認してください。
投入前に差分previewを作る
在庫が0になる事故を防ぐため、CSVをインポートする前に差分を確認します。この作業は「更新前在庫」「更新後在庫」「差分」を並べたpreview(確認用シート)を作ることです。
差分previewの作り方
- 現在の在庫データを取得する:Shopify 管理画面から在庫CSVをエクスポートする
- 更新用CSVを作成する:エクスポートしたCSVをコピーし、更新したい値を書き換える
- 差分列を追加する:スプレッドシートで「更新前在庫」「更新後在庫」「差分」の3列を並べる
- 急減アラートを設定する:差分が一定数以上(例:在庫が10以上減少)の行を条件付き書式で強調表示する
差分previewのイメージ
| SKU | 更新前在庫 | 更新後在庫 | 差分 | 備考 |
|---|---|---|---|---|
| SHIRT-BLK-M | 25 | 20 | -5 | 正常な販売による減少 |
| SHIRT-WHT-S | 15 | 0 | -15 | 要確認 |
| SHIRT-BLK-L | 8 | 8 | 0 | 変更なし |
| BAG-RED | 30 | 0 | -30 | 要確認 |
このように差分を可視化しておくと、「意図せず在庫が0になる」行をインポート前に発見できます。差分が急激に減少している行(特に0になる行)は、インポート前に個別に確認してください。
バックアップの重要性
CSVをインポートする前に、必ず現在の在庫データをエクスポートして保存します。これにより、事故が起きた場合に元の値に戻すことができます。バックアップがない状態でCSVをインポートするのは避けてください。
自動化できる部分
- 0になっている行の検出:更新用CSVで、在庫数が0になる行を自動抽出
- 空欄と0の区別:CSV上で空欄のセルと
0が入力されたセルを区別してチェック - SKU 不一致・重複 SKU の検出:更新用CSVの SKU が Shopify 側の SKU と一致しない行、同じ SKU が複数行にある行を検出
- Location 不一致の一覧化:更新用CSVの Location 値が Shopify に存在しない場合に警告
- 更新前後差分の作成:更新前CSVと更新用CSVを比較し、差分行を自動抽出
人間判断が必要な部分
- 0にすることが意図した更新か:在庫切れ商品として0にするのか、事故なのかは意図の確認が必要
- 予約販売・取り寄せ・在庫切れの運用方針:在庫が0になった商品をどう扱うかは、店舗の運用方針によります
- どのロケーションを正とするか:複数倉庫がある場合、どの倉庫の在庫を優先するかはビジネス判断
- SKU の表記ゆれをどう統一するか:全角・半角、スペースの有無など、命名規則の決定
注意点
- Shopify の商品CSVインポート仕様、在庫CSV仕様は更新される可能性があるため、操作時の公式ヘルプで確認してください
- Inventory tracker、Location、On hand、Available の仕様・動作は、Shopify のプランや設定によって異なる場合があります
- CSVのインポートは元に戻す(アンドゥ)ことができないため、必ずバックアップを取ってから実行してください
- 大量のCSVインポートは、テスト用の少量データで動作確認してから本番に適用することをお勧めします
CSV投入後に在庫が0になるのが不安な場合や、商品CSVと在庫CSVのどちらを使うべきか迷っている場合はご相談ください。更新したい列・対象件数・ロケーション数をお伺いすれば、確認すべきポイントをご案内します。初回相談では、機密CSVやスクリーンショットの送付は不要です。
参考にした公式情報
- Shopify Help Center: Using CSV files to import and export products
- Shopify Help Center: Exporting and importing inventory with a CSV file
Shopify CSV / 一括編集 まわりの作業整理、小さな自動化、簡易チェックツール化について相談できます。初回相談で機密CSVやスクリーンショットを送る必要はありません。
無料相談する
