Shopify と Slack を連携して在庫切れを自動で通知する方法|在庫復活の受け方

人気商品の在庫が尽きたことに、受注の担当者が管理画面を開くまで気づけないことがあります。この記事では、Shopify のバリアント(色やサイズごとの商品)が在庫切れになったときと、在庫が戻ったときに Slack へ通知する手順を説明します。

結論

  • Samurai App の「サービス連携」で SHOPIFY_PRODUCT_VARIANT_OUT_OF_STOCK と SHOPIFY_PRODUCT_VARIANT_BACK_IN_STOCK を受け、「通知先へ送る」で Slack へ送ります。
  • Shopify は「標準連携アプリがありません」と表示されるコネクタで、Shopify 側にアプリを作って自社の OAuth クライアントとして接続する準備が必要です。
  • 届く内容にはバリアント名はありますが、商品名がありません。
  • 注文の通知はこの記事では扱いません。サービス連携の出来事の一覧に、注文の出来事がないためです。

できること・できないこと

できること:

  • バリアントの在庫が切れたときと、戻ったときの通知
  • バリアント名、SKU、販売価格、商品 ID を本文に差し込むこと

Shopify の仕様から来る制約:

  • 在庫切れの通知は、全ロケーションの合計が 0 になったときだけ届きます。 1 つの倉庫だけが空になっても、他のロケーションに在庫が残っていれば届きません。在庫復活も、合計が 0 を超えたときだけです。販売や補充のたびには届きません。
  • 在庫が少なくなった時点では知らせません。 しきい値を決めて「残り 5 個」で通知する形は、この 2 つの出来事ではできません。SHOPIFY_INVENTORY_LEVEL_UPDATED はロケーションごとの数量の変化で届きますが、変化のたびに受信の費用がかかります。
  • オンラインチャネルでは、オンライン在庫が切れたときだけ届きます。 Shopify の Webhook の説明に、チャネルによる条件が書かれています。
  • 順序と配信は保証されません。 Shopify は Webhook の配信が常に保証されるわけではなく、順序も保証しないと案内し、定期的な照合を勧めています。この通知は気づくためのもので、在庫の正確な記録は Shopify の管理画面で見てください。
  • バリアントごとに届きます。 4 色の商品がすべて切れると、4 件の通知になります。

用意するもの

  • Shopify のストアと、アプリを作成してインストールできる権限
  • 投稿先の Slack チャンネルと Incoming Webhook の URL
  • Samurai App の管理者かマネージャーの権限(コネクタの追加とサービス連携のトリガーに必要です)

手順

完成すると、次のようなワークフローになります。

Shopify の在庫切れを Slack へ送るワークフローの編集画面

1. Samurai App でリダイレクト URI を控える

「コネクタ」画面の「コネクタ」タブで Shopify を検索します。「Shopify には標準連携アプリがありません」と表示され、「追加」のメニューは「自社の OAuth クライアントで追加」だけです。これを押すと、フォームに「Shopify 側に登録するリダイレクト URI」が出るので控えます。

2. Shopify 側でアプリを作る

Shopify の Dev Dashboard で「Apps」→「Create app」→「Start from Dev Dashboard」と進み、アプリに名前を付けます。「Versions」でバージョンを作り、スコープに read_products を入れて「Release」を押します。手順 1 のリダイレクト URI もアプリに登録します。

「App settings」の「Credentials」に Client ID と Client secret があるので控えます。「Install app」からストアにインストールします。

3. Samurai App で接続する

手順 1 のフォームに Client ID と Client secret を入れて保存します。「Scopes」欄を空にすると既定のスコープが使われ、入力すると既定を置き換えます。足すときは「例を使う」で既定を入れてから書き足します。接続後、自分のアカウントを「連携」します。

4. 通知先を登録する

「設定」の「通知」にある通知先の登録画面

Slack の Incoming Webhook の URL を、「設定」→「通知」の「通知先」に登録し、「テスト送信」で確認します。

5. ワークフローを作る

「ワークフロー」で新しく作り、「ワークフローの入力」に event(種類は「項目の組」)を足します。「ステップを追加」で「通知先へ送る」を足し、本文を書きます。

在庫切れ: {{input.event.title}}
バリアント ID: {{input.event.id}}
商品 ID: {{input.event.product_id}}

title はバリアント名で、Small / Blue のような値です。バリアントが 1 つだけの商品では Default Title になります。

届く内容のうち必ずあると明記されているのは id だけです。sku や barcode を差し込むなら、次の手順の最初の 1 件で項目があることを確認してから足してください。届いた内容にその項目がないと、空で送られるのではなくステップが失敗します。

6. 公開してトリガーを付ける

「バージョン」タブで「バージョン N を公開」を押し、「トリガー」タブの「サービス連携を追加」で Shopify と SHOPIFY_PRODUCT_VARIANT_OUT_OF_STOCK を選びます。在庫復活の通知は、文面を変えた別のワークフローを作って SHOPIFY_PRODUCT_VARIANT_BACK_IN_STOCK を付けます。

接続先の説明では、通知は在庫の変更から数秒後に届きます。テスト用の商品で在庫数を 0 にして、「実行」タブの「最近の実行」で届いた内容を確認します。

商品名を本文に入れたいとき

届く内容に商品名はありません。商品名を入れるには、通知の前に Shopify の操作 SHOPIFY_GET_PRODUCT のステップを足し、{{input.event.product_id}} を渡します。後のステップから、その結果の商品名を「変数」で選べます。

この操作は読み取りで、無人の実行でも動きます。管理者がこの操作を「毎回確認」にしている場合は、承認する人がいないので断られます。実行には既定で起動した人のアカウントが使われるので、担当者が変わる場合は「実行に使う認証情報」の「このワークフローに貸す」を確認してください。

動かないとき

  • 在庫を 0 にしたのに届かない。 他のロケーションに在庫が残っていないか確認してください。全ロケーションの合計が 0 にならないと発火しません。
  • ステップが失敗する。 差し込んだ項目が届いていない可能性があります。「実行」タブの入力で項目名を確認し、無いものを本文から外します。
  • 接続がエラーになる。 Shopify 側に登録したリダイレクト URI と Samurai App の画面の値が一致しているか、アプリがストアにインストールされているかを見直します。
  • 未公開で止まっている。 トリガーからの起動は公開版だけです。

よくある質問

特定の商品だけ通知できますか

まず、ステップの「条件分岐」で {{input.event.product_id}} を比べる方法があります。ただ、条件に合わず何も送らない出来事も受信として数えられ、1 件ごとに約 0.5 円かかります。

注文が入ったときの通知はできますか

サービス連携の出来事の一覧に注文の出来事がないので、この道では作れません。

必要なスコープは何ですか

バリアントの在庫の出来事が求めるのは read_products です。SHOPIFY_INVENTORY_LEVEL_UPDATED を使うなら read_inventory も必要です。

関連する使い方

出典

関連する機能業務ツールとAIの連携 —— MCP接続と外部チャットSamurai App は業務ツールと AI を MCP 接続でつなぎます。会計や人事の SaaS を、チャットからその人の権限で操作できます。Slack や Teams から呼べて、外部の AI からも MCP で使えます。

ほかの自動化の例

Slack の連携と自動化の方法をすべて見る

活用術の記事一覧へ

日々の仕事が集まり、つながり、会社の力になる。

資料請求Samurai App を開く

デモを見る資料請求