Webhook であらゆるシステムから WhatsApp メッセージを送る
EC サイトや CRM、予約ツールは、注文が入った、決済が失敗した、予約が入ったといったタイミングをすでに把握しています。Webhook を使えば、こうしたイベントをそれぞれ WhatsApp メッセージに変えられます。貴社側でのコーディングは不要です。計画、保護、テストの進め方を紹介します。
MonoChatチーム 更新日: 2 分で読めます
目次
別のシステムで何かが起きたときに WhatsApp メッセージを送るには、そのシステムの Webhook を受信側に向けます。受信側は電話番号から顧客を特定し、承認済みの WhatsApp テンプレートを送信します。EC サイト、CRM、予約ツールは、注文、決済、予約のたびにすでに Webhook を送っています。やるべきことは、どのイベントにメッセージを送るかを選び、テンプレートを書き、URL を保護し、お客様の目に触れる前に実際のリクエストでテストすることです。
このガイドでは、計画の立て方、それを左右する WhatsApp のルール、そして専用の Webhook URL から始まるフローを使って MonoChat で構築する方法を説明します。
Webhook とは何か、何ではないか
Webhook とは、イベントが発生したときに、あるシステムが指定された URL に送る HTTP リクエストです。Shopify は注文作成時に、WooCommerce は注文更新時に、CRM は商談のステージが変わったときに、予約ツールは予約が入ったときに送信できます。リクエストにはイベントの詳細が、通常は JSON で含まれます。注文番号、金額、顧客名、そして WhatsApp にとって最も重要な電話番号です。
Webhook 自体は、顧客に何も送りません。リクエストを受け取り、どう処理するかを判断し、WhatsApp Business API を呼び出す仕組みが必要です。それは自社で書いてホストするコードか、Webhook URL を発行してくれて残りをノーコードで組める自動化プラットフォームのどちらかです。
WhatsApp メッセージを送るべきイベント
すべてのイベントにメッセージが必要なわけではありません。1 件の注文で通知が 5 回届けば、お客様はすべて無視するようになります。お客様が本当に待っているタイミングを選びましょう。
| イベント | メッセージ | テンプレートのカテゴリ |
|---|---|---|
| 注文の作成・支払い完了 | 注文番号と今後の流れを伝える確認 | ユーティリティ |
| 決済の失敗・保留 | 短いお知らせと再決済の方法 | ユーティリティ |
| 発送完了 | 配送業者と追跡リンク | ユーティリティ |
| 代金引換の注文作成 | 注文の確定、住所の変更、キャンセルのいずれかを尋ねる質問 | ユーティリティ |
| 予約の確定・変更・前日 | 日時、場所、日程変更の方法 | ユーティリティ |
| CRM で商談が成約・失注 | 担当営業への引き継ぎ、またはフィードバックの依頼 | 文面によりユーティリティまたはマーケティング |
| カート放棄 | リマインド(特典付きの場合も) | マーケティング |
カテゴリは、貴社が選んだラベルではなく、テンプレートの内容をもとに Meta が判断します。特定の注文、決済、予約に関するメッセージはユーティリティです。宣伝、オファー、購入の後押しを含むものはマーケティングで、マーケティングを対象とした同意が必要です。上記のユーティリティの文例は、WhatsApp テンプレートの例にまとめています。
適用される WhatsApp のルール
Webhook からのメッセージはほとんどがテンプレート
カスタマーサービスウィンドウは、顧客がメッセージを送るか電話をかけたときに開き、最後のメッセージから 24 時間続きます。その間は自由に返信できますが、それ以外の時間に送れるのは事前承認済みのテンプレートメッセージだけです。EC や CRM のイベントがこのウィンドウ内で起きることはまれなので、Webhook から送るメッセージはすべてテンプレートとして計画し、何かを有効にする前にテンプレートの審査を申請しておきましょう。
電話番号が使える形式であること
Webhook には、WhatsApp が届けられる電話番号が含まれている必要があります。国番号付きの国際形式です。多くの EC サイトでは番号の入力形式が自由なので、実際の注文をいくつか確認してください。国番号のない番号は、「テストではうまくいくのに本番では送れない」原因として最もよくあるものです。
2026 年 10 月 1 日の料金変更
Meta は 2025 年 7 月 1 日から、配信されたメッセージごとに料金を請求しています。2026 年 10 月 1 日以降、開いているカスタマーサービスウィンドウ内で送るユーティリティテンプレートは、無料だった期間を経て再び有料になり、ビジネス電話番号ごとに毎月 1,000 件の無料サービスメッセージが付与されます。料金はカテゴリと顧客の国によって異なります。日本からの送信でも、料金は送信先の国で決まります。つまり、注文確認は顧客が最近メッセージを送ってきたかどうかに関係なく費用がかかるので、重要なメッセージだけを送り、そうでないものは省きましょう。料金表の詳細は WhatsApp API 料金ガイドで解説しています。
Webhook URL を保護する
Webhook URL を知っていれば、誰でもそれを呼び出せます。その URL が WhatsApp メッセージを送るなら、URL が漏れると第三者が貴社の名前でお客様にメッセージを送ったり、請求額を膨らませたりできてしまいます。次の 3 つの習慣で防ぎましょう。
- シークレットを必須にする。 送信側のシステムがシークレットをヘッダーに追加するか、シークレットでリクエストボディに署名(HMAC-SHA256)します。受信側はこれで、途中でリクエストが改ざんされていないことを確認できます。有効なシークレットや署名のないリクエストは拒否されます。
- 用途ごとに URL を分ける。 注文用のフローと予約用のフローでは、URL とシークレットを別にしておけば、一方を入れ替えてももう一方に影響しません。
- 送信側のエラーを監視する。 WooCommerce は配信の失敗が 5 回を超えて連続すると Webhook を無効にし、Shopify は送信先が 200 以外のレスポンスを繰り返し返す Webhook サブスクリプションを削除します。受信側が停止していたり設定を誤っていたりすると、通知が知らないうちに止まることがあります。
Shopify と WooCommerce で Webhook を作成する場所
- Shopify: Settings › Notifications › Webhooks を開き、Create webhook を選びます。イベントを 1 つ(Order creation、Order payment、Fulfillment creation など)、形式は JSON、URL は
https://で指定します。作成後にイベントは変更できないため、イベントごとに Webhook を 1 つ作成します。Send test で URL に届くか確認できます。 - WooCommerce: WooCommerce › Settings › Advanced › Webhooks を開き、Add webhook を選びます。トピック(order、customer、coupon、product のイベント)を選び、delivery URL とシークレットを入力します。WooCommerce は、そのシークレットで作成したペイロードのハッシュをリクエストヘッダーに追加します。
- CRM や予約ツール: 「webhooks」「automations」「outgoing integrations」といったメニューを探します。形式が固定されている場合は、何かを構築する前に、どのフィールドに顧客の電話番号が入っているかを確認してください。
本番公開の前に実際のリクエストでテストする
Webhook のペイロードは長く、フィールド名もプラットフォームごとに異なります。電話番号は phone、billing.phone、customer.default_address.phone のいずれかかもしれません。推測は禁物です。実際のテストリクエストを送り、届いた内容を確認して、そこからフィールドを対応付けましょう。そのうえで、次のようなケースもテストします。
- 電話番号のない注文、または国番号のない番号の注文
- 同じイベントが 2 回届くケース(プラットフォームが再送したとき)
- 深夜 3 時の注文(メッセージを朝まで待たせたい場合)
- 通知に返信してきた顧客(担当者や AI アシスタントがすぐ対応できるように)
MonoChat での設定方法
MonoChat は公式の Meta Business Partner です。バージョン 3.8.37(2026 年 10 月)から、フローを Webhook から開始できるようになりました。EC サイトや CRM から、貴社側でのコーディングなしで WhatsApp メッセージを送れます。
1. Webhook 受信ノードでフローを開始する。 イベントノードから追加します。このノードには専用の Webhook URL とシークレットが発行されます。チャネル(たとえば貴社の WhatsApp 番号)と、識別子のパス(リクエスト内で顧客の電話番号がある場所。既定は request.body.phone)を選びます。MonoChat はそのチャネルで顧客を検索し、いなければ作成して、その顧客に対してフローを実行します。ノードは、フローがキューに入ると送信元に 202 を返し、チャネルや電話番号が見つからない場合はわかりやすいエラーを返します。
2. シークレットを必須にするをオンにする。 送信側は、シークレットをトークンヘッダー(既定は Authorization、単体または Bearer <secret> の形式)に入れるか、生のボディの HMAC-SHA256 署名を署名ヘッダー(既定は X-Signature)で送ります。どちらのヘッダー名も送信側システムに合わせて変更できます。
3. 実際のリクエストを取得する。 Webhook URL の末尾に /test を付け、EC サイトのテスト用 Webhook をそこに向けます。ノードの設定を開いている間、リクエストはフローを開始せずに受信したリクエストにボディ、クエリ、ヘッダーとともに表示されます。これを見て必要なパスを特定し、フロー変数として保存します。たとえば request.body.orderId を orderId として保存します。
4. メッセージを送る。 テンプレートメッセージを送信ノードを追加して承認済みテンプレートを選び、注文番号、金額、追跡リンクなどの変数をフロー変数で埋めます。ステータスごとに別のテンプレートを送るには条件を使います。
5. 必要なら自社システムを呼び出す。 HTTP リクエストノードで、自社システムから追加データを取得したり、顧客の回答(たとえば代金引換注文の「確定」)を書き戻したりできます。呼び出しが成功すると出力へ、失敗すると失敗時へ進むので、代わりのメッセージを送ったり、会話を担当者に割り当てたりできます。
お客様が返信すると、会話は WhatsApp、Instagram、Messenger のほかのチャットと同じ MonoChat の受信トレイに入り、チームや AI アシスタントが引き継げます。フローの作り方はワークフロー自動化をご覧ください。
誰が作業するかによって、ほかに 2 つの方法があります。
- 開発チームがすでに API を使っている場合。 WhatsApp Template API アプリなら、1 回の API 呼び出しで承認済みテンプレートを送信でき、返信は受信トレイに届きます。
- Shopify を使っていて、注文データをチャットで見たい場合。 Shopify チャット自動化は商品と注文を同期するので、チームと AI アシスタントが注文に関する質問に答えられます。
まずは app.monochat.ai で無料アカウントを作成し、WhatsApp 番号を接続して、料金ページでプランを比較してください。