この記事でわかること
この記事の目次Contents閉じる開く
Shopifyの在庫ページには Unavailable という列があります。数量をクリックすれば、そこから出したり入れたりできます。行き先は4つ。Damaged、Quality control、Safety stock、Other です。
1バリエーションずつならこれで十分に機能します。問題は、まとまった量を扱うために用意された仕組み——在庫CSV、一括編集ツール、モバイルアプリ、Webhook——が、そろってこの4つの箱を無視するか、書き込みを拒否することです。
結論
- 管理画面の在庫状態は5つ、APIは8つです。
reserved、damaged、safety_stock、quality_controlはすべて「display as Unavailable to merchants that are tracking inventory in the Shopify admin」と書かれています。だから管理画面の1列が4つのAPI状態をまとめています。 - 在庫CSVはUnavailableのどの状態にも書き込めません。 All states形式の書き出しでは、列見出しがそのまま
Unavailable (not editable)です。Committed、Available、Incomingも同じ。取り込める数量列はOn hand (new)ただ1つです。 - 一括編集ツールにはUnavailable関連の列が存在しません。 さらにShopifyは「doesn't create an audit trail of inventory movements」と注意書きを添えています。
- モバイルアプリで選べるのはOn handとAvailableだけで、「The Add reason option isn't available in the Shopify mobile app.」と明記されています。
- これらの状態はWebhookを一切発火させません。 開発者ドキュメントの記述は「Changes to
committed,reserved,damaged,safety_stock, andquality_controlinventory states don't trigger webhooks.」です。 - バリエーション単位の調整履歴は180日で切れます。 それ以前はInventory adjustment changesレポート側の話になり、在庫系の指標は2023年10月1日までしかさかのぼれません。
- 2026年8月5日、下書き注文・移動・出荷の在庫が
reservedからcommittedへ移りました。 合計は変わりませんが、reservedを読んでこれらを検知していた連携は0を読むようになります。 - アプリがUnavailableとして押さえた在庫は、管理画面から戻せません。 押さえたアプリ自身にしか解放できません。
- 一括データ系アプリ3本の対応は三者三様です。 syncX: Stock Sync Migrate Bulk は4つの箱すべてに対応するフィールドを文書化しています。Matrixify はDamaged、Safety Stock、Quality Controlを取り込めますが、Otherの列はありません。Altera ‑ Export and Import が文書化しているのは
Inventory Availableのみです。 - 需要予測アプリの「safety stock」は、Shopifyの Safety stock ではありません。 Prediko Inventory Management と Inventory Management ‑ Assisty では日数で測る発注しきい値であり、在庫は1個も動きません。
表示は5つ、実体は8つ
Shopifyのマーチャント向けドキュメントが挙げる状態は5つです。On hand、Available、Committed、Unavailable、Incoming。On handはCommitted、Unavailable、Availableの合計です。
Admin APIはもっと細かく見ています。状態は incoming、on_hand、available、committed、reserved、damaged、safety_stock、quality_control の8つで、on_hand は「equals the sum of inventory quantities that are in the available, committed, reserved, damaged, safety_stock, and quality_control states」と定義されています。
このうち4つが管理画面の1列に畳み込まれます。reserved、damaged、safety_stock、quality_control のどれについても、ドキュメントは同じ一文を繰り返します。数量は「display as Unavailable to merchants that are tracking inventory in the Shopify admin」。
つまり管理画面の Unavailable はカテゴリではなく合計値です。2つのストアが同じ「Unavailable 40」を表示していても、中身は安全在庫の確保かもしれないし、まだ処理していない破損在庫かもしれません。
committed にはさらに強い線が引かれています。開発者ドキュメントいわく「You can't use the Admin API to adjust or move inventory quantities in the committed state.」注文由来の状態であり、Shopifyが管理します。
管理画面でできること
Unavailableをきちんと扱える唯一の画面が管理画面です。しかも Set to ではなく Adjust by を使います。
在庫ページ、商品ページ、バリエーションページのいずれかで数量をクリックし、ドロップダウンを Set to から Adjust by に切り替え、origin(元)とdestination(先)を選びます。検品のために棚から引き上げるなら、originにロケーション、destinationに Quality control。戻すときは逆にします。調整履歴には Moved to Quality control や Moved from Safety stock と記録され、増減が Unavailable 列と Available 列に振り分けられて表示されます。
見落としやすい点が2つあります。
1つ目は、この操作が条件付きだということ。Shopifyのトラブルシューティングにはこうあります。Unavailableの値が「aren't directly editable inline, then your store might use a guided adjustment flow. For stores using this flow, missing inline edit fields for unavailable states can be expected behavior.」インライン編集欄が見つからなくても、壊れているわけではありません。
2つ目は、4つの箱はラベルであってロジックではないこと。Safety stockが減ってもShopifyが自動発注することはありませんし、Damagedに入れても売上原価に振り替わりません。「なぜ売れない在庫なのか」を注記するための仕組みです。
CSVは列見出しに「not editable」と書いてある
ここが一番引っかかりやすい制約です。書き出したファイルを見ると、いかにも書き戻せそうに見えるからです。
All states を選んで在庫を書き出すと、ロケーションごとに1行、全状態の列が付いてきます。ただし見出しを読むと、こうなっています。
| 列 | 取り込み可否 |
|---|---|
Incoming (not editable) | 不可 |
Unavailable (not editable) | 不可 |
Committed (not editable) | 不可 |
Available (not editable) | 不可 |
On hand (current) | 上書き防止の検証用のみ |
On hand (new) | 可 |
Bin name、HS Code、COO | 可 |
数量5列のうち4列は、見出しの文字列そのものに (not editable) が入っています。取り込めるのは On hand (new) の1つだけ。しかもOn handを編集すると差分がAvailableに動くため、CSV取り込みは必ず「売れる在庫」に着地します。
Shopifyにはもう1つ、ロケーション名を列見出しにしてAvailableの数量だけを書く Available 形式の書き出しもあります。こちらもUnavailableには届きませんし、Shopify自身が「doesn't provide protection against accidental overwrites」と注記しています。
「この340 SKUをまとめて検品中にする」という操作には、公式のCSV経路が存在しません。今の状態を書き出すことはできます。書き戻すことはできません。
一括編集ツールも同じです。ドキュメントに並ぶ編集可能プロパティはPrice、SKUから Quantities by location まで。Damagedの列も、Safety stockの列もありません。しかも次の注意書きが付きます。「you set absolute inventory quantities without specifying origin and destination, so this method doesn't create an audit trail of inventory movements.」
3つの中でもっとも狭いのがモバイルアプリです。手順は「Select On hand or Available.」で終わり、理由の記録に至っては「The Add reason option isn't available in the Shopify mobile app.」と明記されています。
Webhookは飛ばない
ERPや3PL、倉庫システムと在庫を同期しているなら、いちばん重要なのは在庫管理アプリ向けドキュメントのこの一文です。
Changes to
committed,reserved,damaged,safety_stock, andquality_controlinventory states don't trigger webhooks.
管理画面で200個をDamagedへ移すと、available が減るので inventory_levels/update は飛びます。ところがDamagedからQuality controlへ移すと、移動の両端がこの「無音の集合」に入るため、available は変わらず、連携先には何も届きません。
あとから追いかけるのも簡単ではありません。管理画面の調整履歴には上限があります。「You can view only the last 180 days of inventory adjustment history for a product or variant.」しかも1商品の全バリエーションを同時に見ることはできません。過去の調整を取得する専用のREST/GraphQLエンドポイントもありません。2025年10月のShopify開発者フォーラムでは、サポートから「there is no public endpoint that exposes past inventory adjustments or movements」と回答された旨が報告され、代替としてInventory adjustment changesレポートと inventory_adjustment_history に対する shopifyqlQuery が案内されています。同じスレッドの後の投稿では、そのクエリの結果に管理画面の調整履歴と比べて欠落があったという報告も出ています。
レポート側にも制約が2つ。在庫系の指標は「go back only to October 1, 2023」。そして Month-end inventory snapshot と Month-end inventory value はどちらも Available を基準にしています。ShopifyはAvailableを「isn't committed or set aside as Unavailable」と定義しているので、まとまった在庫をSafety stockに置くと、現物は倉庫にあるのに月末在庫金額がその分下がります。
2026年8月5日のreserved変更
状態名を読んでいる連携があるなら押さえておくべき変更です。2026年8月5日、Shopifyは進行中の在庫確保を統合しました。
For draft orders, transfers, and shipments, quantities that previously appeared under
reservedwill now appear undercommitted.
Shopifyはこれを1回限りのデータ移行と説明しています。対象は移行実行時点で在庫を押さえている有効な下書き注文と未完了の移動・出荷のみ。available と on_hand は変わらず、reserved と committed はどちらも引き続きクエリでき、購入者側にも影響はありません。
一方でアプリ向けの指示は明確です。「If you currently rely on reserved to detect draft-order or transfer/shipment holds specifically, you should read committed instead going forward.」在庫調整レポートを使っているマーチャントには、移行時に1回限りの補正エントリが記録されます。
アプリが押さえたUnavailableは動かせない
Unavailableにはもう1種類あり、自分で作ったものとは挙動が違います。
アプリが在庫を押さえると、調整履歴には Reservation created が記録されます。Shopifyの説明では「inventory a third-party app holds is displayed as Unavailable」。解放するのはアプリの仕事です。Reservation deleted の説明はこうです。「when a third-party app deletes a reservation or a draft order expires, the inventory returns to Available.」
これがマーチャント側からどう見えるかを示す事例が、Shopifyの開発者コミュニティに残っています。あるストアが自社アプリで inventoryMoveQuantities を使い、available から safety_stock へ一括で在庫を移しました。ところが管理画面では、その数量が Managed by Apps の下にアプリ名で表示されました。投稿者の言葉を借りると「the only way to change this Unavailable inventory is by using my app again.」エスカレーションを受けたShopify Plus担当からの回答は「a current limitation of the API」でした。
アプリ選定への示唆は明確です。在庫をUnavailableとして押さえるアプリを入れる前に、そのアプリが在庫を戻す手段を提供しているかを確認してください。「アンインストールするしかない」という答えなら、それは運用上のリスクです。
一括データ系アプリは何を書き込むのか
同じカテゴリーの3本が、Unavailableへの対応でくっきり分かれます。料金・評価・ドキュメントは2026年9月8日時点の確認です。
| syncX: Stock Sync Migrate Bulk | Matrixify | Altera ‑ Export and Import | |
|---|---|---|---|
| 開発元 | SyncX | ITissible | Abnoba LLC |
| Built for Shopify | あり | あり | あり |
| 評価(レビュー数) | 4.7(910件) | 4.9(1,596件) | 5.0(236件) |
| 無料プラン | あり | あり(Demo、1ファイル10件) | あり(2種類) |
| 有料の下限 | 月額$7(Starter) | 月額$20(Basic) | 月額$15(Pro) |
| Damagedへの書き込み | 可 | 可 | 記載なし |
| Safety stockへの書き込み | 可 | 可 | 記載なし |
| Quality controlへの書き込み | 可 | 可 | 記載なし |
| Otherへの書き込み | 可 | 列なし | 記載なし |
| Committed / Reservedの読み取り | — | 書き出しのみ | 記載なし |
syncX: Stock Sync Migrate Bulk

出典: Shopify App Store(syncX: Stock Sync Migrate Bulk、2026-09-08時点)
Stock Syncのヘルプにはunavailable quantity専用のページがあり、マッピング可能なフィールドが5つ列挙されています。Unavailable Quantity (Quality Control)、(Safety Stock)、(Damage)、(Other)、(Incoming)。管理画面の4つの箱すべてにフィールドを用意している唯一のアプリです。
文書化された制約が2つあります。「Before selecting the unavailable quantity, please ensure that you map the available quantity field」——unavailableのマッピングは単独では機能しません。もう1つ、各フィードは「can only update one location at a time. It cannot update multiple Shopify locations within the same feed」なので、複数倉庫のストアはロケーションごとにフィードが必要です。
料金はFree Plan、Starterが月額$7または年額$77、Expertが月額$10または年額$110です。リスティングの表示は「Free plan available」で、トライアル日数の記載はありません。
Matrixify

出典: Shopify App Store(Matrixify、2026-09-08時点)
MatrixifyのProductsドキュメントは、ロケーションごとの在庫列としてAvailable、On Hand、Committed、Reserved、Damaged、Safety Stock、Quality Control、Incomingを挙げ、そのうえで取り込み可能なものと書き出し専用のものを分けています。
取り込み可能なのは Inventory Damaged、Inventory Safety Stock、Inventory Quality Control の3つで、それぞれ相対値用の Adjust 列も用意されています。書き出し専用と明記されているのは Inventory Committed、Inventory Reserved、Inventory Incoming。Committedが書き出し専用なのは、ShopifyのAPI制約とちょうど一致します。
Other の列はありません。Otherを前提にした運用なら、Matrixifyでは埋まりません。
表計算ベースの運用全般に効く注意書きも文書化されています。「Setting both On Hand and Available inventory with the same Import could result in the Available quantity being adjusted automatically by Shopify due to setting or changing the On Hand quantity.」
料金は Demo(無料。1ファイルあたり各データ10件まで)、Basicが月額$20、Bigが月額$50、Enterpriseが月額$200で、いずれもUSD建てです。
Altera ‑ Export and Import

出典: Shopify App Store(Altera ‑ Export and Import、2026-09-08時点)
AlteraはMatrixify形式に対応したアプリで、リスティングにはBuilt for Shopifyバッジと5.0(236件)の評価が表示されています。マルチロケーション在庫のドキュメントに載っているのは Inventory Available: [Location] と Inventory Available Adjust: [Location] で、フィールドリファレンスに記載された在庫列はこれで全部です。Damaged、Safety Stock、Quality Controlは登場しません。
ドキュメントに記載がないことは、提供元が非対応と表明したことと同じではありません。ここは「非対応」ではなく「記載なし」として扱ってください。Unavailableの一括操作が導入理由なら、契約前にAlteraへ確認するのが安全です。
料金は無料枠が2つと有料が1つ。Community(1ファイル100行、同時実行ジョブ1本)、Developer(Shopifyの有料プランを契約していないストア向け。行数無制限、同時実行ジョブ2本)、そしてProが月額$15です。
「safety stock」は2つの意味を持つ
この領域でいちばん多い取り違えで、時間を無駄にしやすいところです。

出典: Shopify App Store(Prediko Inventory Management、2026-09-08時点)
Predikoのヘルプはsafety stockを「the minimum threshold (in days) of stock you'd like to hold at any time」と定義し、「is measured in days (not units)」と付け加えています。在庫がこれを下回ると、Buying TableのStock Healthセクションで通知されます。料金はStarterが月額$49、Scale-upが月額$119、Growthが月額$199で、いずれも14日間の無料トライアル付きです。加えて「Free to install」表示のEnterpriseプランがあり、売上$2M超のストア向けで、価格はリスティング外での提示となっています。

出典: Shopify App Store(Inventory Management ‑ Assisty、2026-09-08時点)
Assistyも Safety Stock Coverage を同じ考え方で説明しています。「extra buffer days to prevent stockouts」であり、発注数の計算式 Order Quantity = (Order Cycle + Safety Stock) × Daily Sales Rate に組み込まれます。料金は売上履歴6か月分までの「Free to install」プラン、Basic Shopifyが月額$19、Advanced Shopifyが月額$59、Shopify Plusが月額$199で、有料プランはいずれも14日間の無料トライアル付きです。
どちらのアプリでも、safety stockは「いつ発注すべきか」を変える計画上の数値です。ShopifyのSafety stockは「顧客が何を買えるか」を変える在庫の箱です。両アプリのドキュメントには、Shopifyの safety_stock 状態へ数量を書き込むという記述も、書き込まないという記述もありません。この挙動が必要なら、契約前に確認してください。
選び方
- 週に数件の調整で済む なら管理画面で十分です。origin/destinationを指定する Adjust by は4つの箱すべてに書き込めて移動も記録される唯一の手段で、費用もかかりません。
- 数百SKUを分類し直す ならアプリが要ります。CSVも一括編集ツールも本当にできないからです。Stock Syncは4つの箱すべてに対応し、入口の価格も最安。Matrixifyは4つのうち3つですが、商品や注文で既に使っている表計算ワークフローの中で完結します。
- 倉庫システムやERPに流している なら、Webhookが飛ばない前提で設計してください。突合はInventory adjustment changesレポートかShopifyQLクエリを土台にし、自前の連携から行う調整には必ず
referenceDocumentUriを付けて後から追えるようにします。 - 欠品を防ぎたい なら、それは状態の問題ではなく需要予測の問題です。PredikoやAssistyが答えますが、答え方はアラートと発注書であって、ShopifyのSafety stockへ在庫を移すことではありません。
reservedを読んでいる箇所がある なら、下書き注文・移動・出荷の検知はcommittedに切り替えてください。移行は2026年8月5日に実施済みです。
作業の大半が1バリエーションずつなら、ここまでの話は問題になりません。問題になるのは、倉庫1つ分の在庫を分類し直してほしいと言われた瞬間です。
関連記事
- Shopifyのカートは在庫を確保しない
- Stockyの提供終了と、その後の在庫管理アプリ
- 在庫予測アプリと欠品の盲点
- Shopifyの一括編集・CSVの限界と、MatrixifyとAlteraの位置づけ
参考情報
- Understanding inventory states — Shopify Help Center
- Adjusting inventory quantities — Shopify Help Center
- Viewing inventory adjustment history — Shopify Help Center
- Adjusting inventory quantities in bulk — Shopify Help Center
- Exporting and importing inventory with a CSV file — Shopify Help Center
- Inventory reports — Shopify Help Center
- Apps in inventory management — shopify.dev
- Draft order and transfer/shipment inventory is moving from reserved to committed — Shopify developer changelog
- inventoryMoveQuantities creating a new "Managed by Apps" inventory state — Shopify developer community
- No access to historical inventory adjustments via API — Shopify developer community
- Unavailable Quantity — Stock Sync help
- Shopify Products import / export template & guide — Matrixify
- What is the safety stock — Prediko help
- Setting reorder parameters — Assisty help
2026年6月17日、Shopifyは商品の警告表示を構造化データとして扱う仕組みを出しました。`shopify.disclosure` という商品メタフィールドと、Shopifyが管理する8つのエントリタイプ——California Proposition 65が4つ、CPSCの窒息ハザードが4つです。各エントリにはJurisdictionsという欄があり、地域出し分けの設定に見えます。違います。Shopifyが公開しているLiquidセクションは商品に付いた警告を全件ループするだけで、管轄の判定はどこにもありません。Storefront APIのページには「the API returns all disclosures applied to the product」と書かれ、絞り込みは開発者側の仕事とされています。保存粒度は商品単位でバリエーション単位ではありません。sales channel向けのcontextual product feedsにも含まれません。チェックアウトに出すにはCheckout UI extensionが必要で、これはShopify Plus限定です。同じ欄はCPSC eFilingの参照IDも保管します。2026年7月8日から規制対象品の輸入で必須になり、de minimis免除はなく、しかもShopify Shippingのキャリアは国境の通関業者へ渡せません。標準機能の範囲と、Warnify Pro Warnings、Warn Checkout Country Warnings、Product Warnings/Notifications、GPSR Suite、GPSR Kit ‑ EU Complianceが実際に何を足すのかを整理します。料金・評価・各アプリのドキュメントは2026年9月8日に確認しました。