先に結論から書きます。Shopify で「在庫が減ってきたら知らせる」仕組みを作る方法は 3 つあり、どれを選ぶかはロケーション数と商品点数でほぼ決まります。
- Shopify Flow を使う(無料。単一ロケーション・少数商品向け)
- Webhook を受けて自作する(自由度は最大。開発リソースが要る)
- 専用アプリを入れる(設定だけ。ロケーション別・段階別が必要なら実質これ一択)
Shopify の標準機能には、在庫が減ってきたことを能動的に知らせる仕組みがありません。在庫画面を自分で見に行くしかないため、気づいたときには売れ筋が欠品していた、という機会損失が起きます。この記事では、3 つの方法をそれぞれ手順レベルで解説し、どこで限界が来るのかを整理します。
方法1:Shopify Flow で通知する
Shopify Flow は、Shopify が無料で提供する自動化アプリです。「トリガー → 条件 → アクション」の組み合わせでワークフローを作れます。
Flow でワークフローを組む手順
1. Shopify Flow をインストールする
Shopify App Store から Shopify Flow をインストールします。無料です。
2. ワークフローを新規作成する
「ワークフローを作成」から新しいワークフローを作ります。
3. トリガーを選ぶ
在庫の変化を捉えるトリガーを選びます。在庫数が変化したタイミングで走るトリガーがあるので、それを指定します。
4. 条件を設定する
「在庫数が ◯ 以下」という条件を追加します。ここで数値を入れます。
5. アクションを設定する
「内部通知メールを送信」または Slack への連携アクションを追加します。メール本文には、商品名や在庫数を差し込む変数が使えます。
6. ワークフローを有効にする
保存して有効化すれば完了です。
Flow がぶつかる 3 つの壁
Flow は無料で強力ですが、在庫通知の用途では 3 つの壁にぶつかります。
壁1:しきい値を商品ごとに変えられない
Flow の条件は基本的にワークフロー単位です。「商品 A は 30 個、商品 B は 3 個」という設定をしたい場合、商品の数だけワークフローを作るか、条件分岐を延々と書くことになります。商品点数が数十を超えると現実的ではありません。
壁2:重複通知を止めにくい
在庫は注文が入るたびに変化します。しきい値を下回った状態で注文が続くと、注文のたびに通知が飛びます。「在庫 10 以下で通知」の設定で在庫 8 の商品が 5 個売れれば、5 通届きます。
これを止めるには「前回通知したかどうか」を記憶する必要がありますが、Flow でその状態を持つのは簡単ではありません。メタフィールドに記録する、という回避策はありますが、ワークフローが一気に複雑になります。
壁3:ロケーション別の判定が組みにくい
複数拠点で在庫を持っている場合、「東京倉庫は 20 個、大阪店は 5 個」という判定が必要になります。Flow でもロケーション情報は扱えますが、拠点数 × 商品数の組み合わせを条件で表現するのは現実的ではありません。
Flow が向くのは、ロケーションが 1 つで、監視したい商品が 10 点程度までのストアです。 それを超えると、次の方法を検討することになります。
方法2:Webhook を受けて自作する
Shopify は在庫レベルが更新されたときに Webhook を送れます。これを受けて自分で判定し、通知を送る方式です。
自作するときに書くもの
1. Webhook を購読する
アプリ側で在庫レベル更新の Webhook トピックを購読します。在庫が動くたびに、対象のロケーションと在庫数がペイロードとして届きます。
2. しきい値を保存する場所を用意する
商品・バリエーション・ロケーションごとのしきい値を保存するデータベースが必要です。Shopify のメタフィールドでも可能ですが、一覧表示や検索をしたいならデータベースのほうが扱いやすくなります。
3. 判定ロジックを書く
届いた在庫数としきい値を比べ、状態(正常・低在庫・緊急・在庫切れ)を判定します。しきい値の解決順序は「バリエーション × ロケーション の個別設定 → バリエーションの共通設定 → ストア既定値」のように段階を持たせます。
4. 重複抑制の状態を持つ
ここが自作で一番厄介な部分です。前回の状態を保存しておき、状態が悪化したときだけ通知するという設計にします。
- 深刻度が上がった(正常 → 低在庫、低在庫 → 緊急)→ 通知する
- 同じ状態のまま在庫数だけ減った → 通知しない
- 深刻度が下がった(回復した)→ 通知せず、状態だけ更新する
3 番目が重要です。回復したときに状態を更新しておくことで、次にしきい値を割ったときにまた通知できるようになります。これを「再武装」と呼びます。ここを忘れると、一度通知した商品は二度と通知されなくなります。
5. 通知を送る
メールなら送信サービス、Slack なら Incoming Webhook へ POST します。
6. 取りこぼしを補う定期スキャンを作る
Webhook は届かないことがあります。ネットワーク障害、アプリ側のダウン、Shopify 側の一時的な問題。Webhook だけに頼ると、届かなかった変化は永久に検知されません。
そのため、1 日 1 回など定期的に全在庫をスキャンして状態を突き合わせる処理を用意します。これで取りこぼしを回収できます。
自作の実際のコスト
自作は自由度が最大ですが、上の 4 と 6 が想像より重いというのが実際のところです。
重複抑制の状態管理は、テーブル設計・状態遷移・回復判定を含みます。定期スキャンは、商品点数が多いストアで実行時間の上限に引っかかるため、ページングと打ち切り処理が必要になります。さらに、複数のストアが同じ仕組みを使う場合は、他店のデータが混ざらない仕組みまで作り込む必要があります。
「通知を送る」部分は 1 日で書けますが、「誤通知せず、取りこぼさない」状態にするには数週間かかります。 ここが自作の実際のコストです。
方法3:専用アプリを使う
上の 2 つの限界を、設定だけで越えるための選択肢です。以下では代表的なアプリを紹介します。
Shopify Flow
| 項目 | 内容 |
|---|---|
| アプリ名 | Shopify Flow |
| 開発者 | Shopify |
| 価格設定 | 無料 |
| 主な機能・特徴 | トリガー・条件・アクションによる自動化 / 在庫変化の検知 / 内部通知メール / 各種アプリ連携 |
| 対応言語 | 日本語を含む多言語 |
在庫通知に限らず、Shopify の運用全般を自動化できる公式アプリです。無料で使えるうえ、日本語の管理画面があります。
メインアプリとの役割の違いは、汎用か専用かです。 Flow はあらゆる自動化に使える汎用ツールで、在庫通知はその用途の 1 つにすぎません。専用アプリはしきい値の階層管理・重複抑制・ロケーション別判定を最初から持っています。単一ロケーション・少数商品なら Flow で十分ですし、その条件を超えたら専用アプリのほうが設定も運用も速くなります。両方を併用し、在庫通知は専用アプリ、それ以外の自動化は Flow、という分担も自然です。
Stockie Inventory Management
| 項目 | 内容 |
|---|---|
| アプリ名 | Stockie Inventory Management |
| 開発者 | Stockie |
| 価格設定 | 無料プランあり/Basic $4.99/月/Advanced $9.99/月 |
| 主な機能・特徴 | メール・Slack への低在庫アラート / 在庫予測 / 定期通知(週次・隔週・月次)/ ダッシュボード |
| 対応言語 | 英語 |
低在庫アラートに特化した軽量なアプリで、この分野の直接的な競合です。無料プランは「1 ロケーション・1 ユーザー・1 つの定期通知」まで、Basic は「5 つの即時または定期通知・3 ユーザー」、Advanced は「通知・ユーザー・ロケーションが無制限」という構成です。在庫の予測値をダッシュボードで見られるのも特徴です。
メインアプリとの違いは、日本語対応としきい値の粒度です。 Stockie の管理画面は英語です。また、無料プランと Basic プランには通知数やロケーション数の上限があるため、多拠点のストアは Advanced($9.99/月)が前提になります。在庫の予測(この調子だと何日で切れるか)まで見たいなら Stockie、日本語の画面で商品・バリエーション・ロケーション別のしきい値を細かく設定したいならシンプル低在庫アラート、という選び方になります。
Notify Me
| 項目 | 内容 |
|---|---|
| アプリ名 | Notify Me |
| 開発者 | Notify Me |
| 価格設定 | 無料プランあり/有料 $9.99/月〜 |
| 主な機能・特徴 | 顧客向けの入荷待ちリスト / ストア向けの低在庫アラート / ベンダーや販売チームへの定期送信 |
| 対応言語 | 英語 |
もともと顧客向けの入荷待ちリスト(ウェイトリスト)を主機能とするアプリで、そこにストア向けの低在庫通知が加わった構成です。ベンダーや販売チームなど、複数の宛先へ定期的に送る機能があります。
メインアプリとの使い分けは、仕入先を巻き込むかどうかです。 Notify Me はベンダー(仕入先)への定期送信を想定した作りになっています。「毎週月曜に、仕入先へ発注候補リストを自動送信する」といった運用ならこちらが噛み合います。シンプル低在庫アラートも定期レポートを送れますが、宛先はメールと Slack で、社内向けの運用が主眼です。
3 つの方法を満たしにいったアプリ
シンプル低在庫アラート|在庫管理・在庫切れ通知・欠品防止
| 項目 | 内容 |
|---|---|
| アプリ名 | シンプル低在庫アラート|在庫管理・在庫切れ通知・欠品防止 |
| 開発者 | 株式会社 UnReact |
| 価格設定 | Basic Plan $7.99/月(年額 $79.99・7 日間の無料体験あり) |
| 主な機能・特徴 | 即時通知と定期レポート / 商品・バリエーション・ロケーション別のしきい値 / 低在庫と緊急の 2 段階 / メールと Slack への通知 / 低在庫一覧と CSV エクスポート / 通知メールのテンプレート編集 |
| 対応言語 | 20 言語(管理画面) |
方法1・方法2 で壁になった部分を、設定だけで越えられるようにしたアプリです。順に見ていきます。
壁1(しきい値の粒度)への答え:3 階層で解決する
しきい値は 3 段階で解決されます。「商品・バリエーション × ロケーションの個別設定」が最優先、次に「バリエーション共通の設定」、最後に「ストア既定値」です。
ストア既定値は設定画面の「既定しきい値」で決めます。低在庫しきい値と、それより小さい緊急しきい値の 2 段階を持てます。「低在庫」と「緊急」を分けられると、「そろそろ発注」と「今すぐ手を打つ」を区別できます。 在庫切れの通知も別途オン・オフできます。
商品別の上書きは「商品別しきい値」画面で行います。Shopify の商品選択画面から商品を選ぶと、商品の中の特定のバリエーションだけを選ぶことも、商品ごと選んで配下の全バリエーションを対象にすることもできます。複数選んだ場合は一括設定モーダルが開き、選んだすべてに同じ設定を適用できます(1 回につき最大 50 バリエーション)。
効く場面:回転の速い定番商品は低在庫 30・緊急 10、ゆっくり売れる商品は低在庫 3・緊急 1、というように商材の性格に合わせて分けられます。廃番予定の商品は「通知対象から除外する」をオンにして、通知を止められます。
「通知の対象」という設定も用意されています。「すべての商品」は全商品を通知対象にして要らないものを除外していく方式(opt-out)、「商品別しきい値を設定した商品だけ」は登録した商品だけを通知する方式(opt-in)です。商品点数が数千あるストアでは後者を選び、売れ筋 50 点だけ見張る、という運用ができます。
壁2(重複通知)への答え:状態が悪化したときだけ送る
同じ商品・同じロケーション・同じ段階では、在庫がしきい値以上に戻るまで再通知しません。売れるたびに通知が飛ぶことはありません。
補充して在庫が戻り、また減ってしきい値を割ったときに、あらためて 1 通届きます。方法2 で説明した「再武装」の仕組みが実装されているためです。
効く場面:セール期間中の売れ筋商品。在庫 10 以下で通知を設定していると、1 日に何十件も注文が入る商品では通知が鳴り止まなくなります。この設計なら、最初の 1 通だけが届きます。
壁3(ロケーション別)への答え:しきい値も判定も通知もロケーション軸を持つ
しきい値はロケーションごとに設定でき、判定もロケーション単位で行われます。在庫一覧もロケーションごとに 1 行ずつ並びます。
さらに「対象ロケーション」の設定で、監視しないロケーションを外せます。返品用の倉庫やサンプル用のロケーションなど、在庫が少なくて当たり前の場所を外しておくと、通知が実務に必要なものだけになります。 ロケーションが 1 つしかないストアでは、この設定自体が表示されません。
方法2 の「取りこぼし」への答え:定期スキャンが標準で動く
在庫が動くたびに状態が更新されるのに加えて、定期的なスキャンで全在庫を突き合わせます。Webhook の取りこぼしを回収するための仕組みです。
在庫一覧画面には「最終同期」の時刻が表示され、手動で「今すぐスキャン」を実行することもできます。インストール直後は在庫データがまだ無いので、一度実行して一覧に反映させるのが最初の一歩です。連続実行を防ぐため、前回から 5 分以内は実行できません。
通知先とテンプレート
通知先はメールアドレスと Slack の Incoming Webhook URL を、合わせて 10 件まで登録できます。それぞれ「テスト送信」ができるので、設定後に実際に届くか確かめられます。Slack の URL は安全のため一部を伏せて表示されます。
通知メールは「低在庫」「在庫切れ」「定期レポート」の 3 種類について、件名と本文を編集できます。{productTitle}(商品名)、{sku}、{locationName}(ロケーション名)、{available}(現在庫数)、{threshold}(しきい値)、{stageLabel}(低在庫/緊急)、{itemsTable}(一覧表)などの変数を差し込むと、送信時に実際の値へ置き換わります。使える変数はタブごとに異なり、各タブの「使える変数」に、そのタブで使えるものだけが並びます。
ロゴ画像 URL・ボタンのラベル・ボタン色(#RRGGBB)も設定でき、プレビューとテスト送信も用意されています。文面を変えたら必ず一度テスト送信してください。 変数の書き間違いは、実際に届いたメールを見ないと気づけません。
定期レポートと在庫一覧
定期レポートは「送らない/毎日/毎週」から選び、毎週なら曜日、時刻は 0〜23 時から指定します。ストアのタイムゾーンで送信されます。
在庫一覧は「在庫切れ → 緊急 → 低在庫」の深刻な順で固定表示され、商品名・SKU 検索、状態、ロケーション、コレクションで絞り込めます。1 ページ 50 件です。
「CSV エクスポート」では、表示中のページではなく絞り込み条件に一致する全件を書き出せます。列は商品名・バリエーション・SKU・ロケーション・現在庫・しきい値・状態・最終更新日時。UTF-8(BOM 付き)なので Excel でそのまま開けます。発注書の下書きや、仕入先へ渡す一覧としてそのまま使えます。 上限は 10,000 行です。
インストールはこちら
シンプル低在庫アラート|在庫管理・在庫切れ通知・欠品防止
ご利用ガイドはこちら
シンプル低在庫アラート ご利用ガイド
しきい値はどう決めるべきか
方法を選んだあと、必ず悩むのがこの数字です。考え方の目安を示します。
基本の考え方は「リードタイム × 1 日あたりの販売数 × 安全係数」です。
たとえば、発注から入荷まで 7 日かかり、1 日平均 3 個売れる商品なら、7 × 3 = 21 個が「発注から入荷までに売れる数」です。ここに安全係数(1.2〜1.5 程度)を掛けて、25〜32 個あたりを低在庫しきい値にします。
緊急しきい値は、その半分を目安にします。上の例なら 12〜16 個です。ここまで減ったら、通常の発注ではなく空輸や取り置きなどの手段を検討する、という判断のラインです。
商材別の目安も挙げておきます。
- リードタイムが長い輸入品:低在庫を大きめに(1〜2 ヶ月分)。切れてから発注しても間に合いません。
- 国内で翌日入荷する定番品:低在庫は小さくてよい(数日分)。持ちすぎるとキャッシュを圧迫します。
- 季節商材:シーズン前は大きく、シーズン終盤は小さく。時期によって設定を変えるのが理想です。
- 常に少量しか置かない商品:しきい値を 2 程度に。大きくすると通知が鳴りっぱなしになります。
最初から完璧な数字を出す必要はありません。まずはストア既定値を 1 つ決めて動かし、通知が多すぎる商品・少なすぎる商品だけを個別に上書きしていくのが現実的な進め方です。
通知を「見るだけ」で終わらせないために
仕組みを入れたあと、意外と多いのが「通知は届いているが、誰も動いていない」という状態です。通知が業務につながるよう、運用側でも決めておきたいことが 3 つあります。
1. 通知を受ける人を 1 人に決める
メールを 5 人に配ると、全員が「他の誰かが見るだろう」と思って誰も動きません。一次対応者を 1 人決めて、その人のメールアドレスだけを即時通知の宛先にするのが確実です。全員で共有したい情報は、定期レポートを Slack のチャンネルへ流す形にします。即時は個人宛、まとめはチャンネル宛、と役割を分けると機能します。
2. 通知が来たときの次の行動を決めておく
「低在庫の通知が来たら発注する」「緊急の通知が来たら、発注に加えて商品ページに納期の注記を出す」というように、段階ごとの行動をあらかじめ決めておきます。2 段階のしきい値が効いてくるのはここです。段階を分けても行動が同じなら、分ける意味がありません。
3. 週に 1 回、一覧を CSV で書き出す
即時通知は「今この瞬間に減った商品」を教えてくれますが、全体像は見せてくれません。週に 1 回、絞り込みなしで CSV を書き出して眺めると、**「毎週同じ商品が低在庫に落ちている」**というパターンが見えます。それはしきい値が低すぎるか、発注量が少なすぎるかのどちらかで、通知の設定ではなく仕入れの設計を見直すサインです。
CSV の列には現在庫としきい値の両方が入っているため、表計算ソフトで「現在庫 ÷ しきい値」の列を足せば、危険度の順に並べ替えられます。発注担当が複数人いるストアでは、この CSV をそのまま共有すると話が早くなります。
よくある疑問
Q. 通知が届きません。何を確認すればよいですか。
順に確認します。通知先が登録されているか(空だとどこにも送れません)、テスト送信は届くか、即時通知がオンになっているか、そのロケーションが対象に入っているか、その商品が通知対象か(「商品別しきい値を設定した商品だけ」にしている場合、登録していない商品は通知されません)、すでに一度通知済みではないか。この 6 点で大半が切り分けられます。
Q. 通知メールの言語は管理画面の言語に合わせられますか。
シンプル低在庫アラートでは、通知メールと Slack の文面はストアの言語に従います。管理画面の言語(20 言語対応)とは別です。管理画面を見る人と通知を受け取る人が同じとはかぎらないため、意図的に分けられています。
Q. ストアフロントには何か表示されますか。
されません。すべて管理側の機能なので、お客様の見え方は一切変わりません。テーマへの追加も不要です。
Q. 商品点数が多いと、スキャンに時間がかかりませんか。
スキャンには数十秒かかることがあります。実行中はボタンが待機状態になります。日常的には在庫が動くたびに自動で更新されるため、手動スキャンを毎回実行する必要はありません。
まとめ
Shopify で在庫切れを防ぐ 3 つの方法は、次のように使い分けます。
- Shopify Flow:ロケーションが 1 つ、監視したい商品が 10 点程度まで。無料で日本語。
- 自作:要件が特殊で、開発リソースがある場合。ただし重複抑制と取りこぼし対策で数週間かかる。
- 専用アプリ:ロケーションが複数、商品点数が多い、しきい値を商品ごとに変えたい場合。
境界線は「ロケーション数」と「商品点数」です。この 2 つが増えた瞬間に、Flow でも自作でも急に難易度が上がります。
在庫切れは、売れるはずだった売上がそのまま消える損失です。在庫画面を見に行く習慣に頼るのをやめて、減ってきたら向こうから知らせてくれる仕組みに変える。 それだけで、機会損失は確実に減ります。



