商品情報にスキップ
1 1
公開日:2026.08.19

ShopifyのSearch & Discoveryで商品ごとに在庫あり・なしを絞り込めるようにする設定例

ShopifyのSearch & Discoveryで商品ごとに在庫あり・なしを絞り込めるようにする設定例

用途

  • 在庫管理
  • Shopify Flow管理・編集
詳細を表示する

Search & Discoveryの標準「出品状況」フィルターは、バリエーション単位で在庫を見ています。そのため、1つでも欠品しているバリエーションがあれば、その商品は「在庫切れ」の絞り込みに引っかかります。サイズ違いのうちSだけ品切れという商品が「在庫切れ」に並んでしまう、という状態です。

理由はURLパラメータに出ています。標準フィルターは filter.v.availability で、filter.v. はバリエーション単位のスコープを意味します。0 が在庫切れのバリエーション、1 が在庫ありのバリエーションなので、判定される対象は商品ではなくバリエーションです。混在している商品は「在庫あり」と「在庫切れ」の両方にヒットします。

商品単位で「全部売り切れているか」を判定する仕組みは、標準では用意されていません。そこで在庫状況を表す商品メタフィールドを自分で持ち、Shopify Flowで自動更新して filter.p.(商品単位)のフィルターとして使います。全バリエーションが購入できなくなったときだけ「在庫なし」になり、1つでも在庫が戻れば「在庫あり」に戻ります。

完成イメージ:在庫状況で商品を絞り込む


この構成でやること

◆在庫状況を表す商品メタフィールドを作る
◆在庫変動を監視するFlowを作り、値を自動で書き換える
◆Search & Discoveryで、そのメタフィールドをソースにした絞り込みを追加する

判定条件をFlow側に置けるので、「全部売り切れたときだけ」以外の基準にも変えられます。表示ラベルも自由に決められるうえ、「入荷待ち」「予約受付中」といった区分を後から足すこともできます。標準フィルターはこのどれもできません。


【設定手順①】在庫状況を表す商品メタフィールドを作る

◆Shopify管理画面 → 設定 → メタフィールドとメタオブジェクト → 商品 →「定義を追加」
◆名前は「在庫状況」、タイプは「選択リスト(単一行テキスト)」
◆検証の選択肢に「在庫あり」「在庫なし」を登録
◆オプションの「Storefront APIアクセス」をONにする

設定手順①:商品メタフィールドの定義

「Storefront APIアクセス」がOFFのままだと、手順③で絞り込みのソース候補に出てきません。ここだけ忘れやすいので先に確認しておくとよいでしょう。


【設定手順②】在庫変動を監視するFlowを作る

◆Shopify管理画面 → アプリ → Flow →「ワークフローを作成」
◆トリガーは「商品バリエーションの在庫数が変更された」
◆条件は product / variants を選び、リスト演算子は「次のすべて」、判定は availableForSale が False
◆「はい」側に「商品メタフィールドを更新」を置き、在庫状況=在庫なし
◆「いいえ」側にも同じアクションを置き、在庫状況=在庫あり

設定手順②:Flowの条件と分岐

リスト演算子には「次のすべて … またはリストが空(非推奨)」という選択肢も残っています。空リストの扱いが違うので、末尾に(非推奨)と付かないほうを選んでください。購入後に表示される .flow ファイルをインポートすれば、このワークフローをそのまま取り込めます。


【設定手順③】Search & Discoveryに絞り込みを追加する

◆Shopify管理画面 → アプリ → Search & Discovery → 絞り込み →「絞り込みを追加」
◆ソースで「商品メタフィールド: 在庫状況」を選ぶ
◆絞り込みラベルに、ストアフロントで表示したい名前を入れる
◆保存する

設定手順③:Search & Discoveryの絞り込み設定

標準の「出品状況」フィルターは残しておいても構いませんし、紛らわしい場合は外してこちらに寄せることもできます。


在庫の判定に totalInventory を使わない理由

Flowの条件で product.totalInventory を使いたくなりますが、これは在庫追跡がオフのバリエーションを合計に含めません。追跡オフのバリエーションは無制限に購入できるのに、合計には0として寄与します。そのため「合計が0以下なら在庫なし」という条件にすると、まだ買える商品まで「在庫なし」と判定されてしまいます。

totalInventoryとavailableForSaleの判定結果の違い

availableForSale は、そのバリエーションを今買えるかどうかをShopifyが最終判定した値です。在庫追跡の有無、在庫切れでも販売を続ける設定、在庫数のすべてを織り込んでいるので、これ1つを見れば足ります。


運用時の注意

◆Flowは在庫が変動した瞬間にしか動きません。既存の商品には値が入らないので、最初に一度まとめて値を入れる作業が必要です
◆該当する商品が0件になった選択肢は、ストアフロントの絞り込みから消えます
◆Search & Discoveryの絞り込みは1ストアあたり25個までです