ログイン無料トライアルを開始
Meta Tech Provider

WooCommerce の注文更新を WhatsApp で送信する

注文イベント用の WooCommerce Webhook を作成し、送信先を受信サーバーに指定します。受信サーバーは n8n のワークフローでも、小さな PHP のルートでも構いません。受信サーバーは WooCommerce の署名を検証し、お客様が WhatsApp メッセージに同意していることを確認したうえで、接続済みの番号の phone number ID とトークンを使い、承認済みテンプレートを Cloud API から送信します。

5 failures

WooCommerce は、配信に 5 回を超えて連続で失敗した Webhook を無効にします。

X-WC-Webhook-Signature

ヘッダーには、Webhook のシークレットで作成したペイロードの HMAC-SHA256 を base64 エンコードした値が入ります。

Templates only

カスタマーサービスウィンドウの外では、事前に承認されたテンプレートメッセージしか送信できません。

WooCommerce の注文は、どのように WhatsApp メッセージのきっかけになりますか?

WooCommerce の Webhook と受信サーバーを使います。WooCommerce の「設定」、「詳細」、「Webhook」で Webhook を追加し、「注文作成」や「注文更新」といった注文のトピック、配信 URL、シークレットを指定します。以降、該当するイベントが起きるたびに、WooCommerce が注文内容を JSON として配信 URL に POST します。

ペイロードの形式は固定なので、Cloud API に直接向けることはできません。間に受信サーバーを置きます。n8n の Webhook ノード、店舗の PHP 内のルート、小さなサービスなど、何でも使えます。受信サーバーは注文を読み取り、お客様の電話番号とメッセージに必要な情報を取り出して、接続済みの番号の Cloud API メッセージエンドポイントに HTTPS リクエストを 1 回送ります。このとき、その番号のアクセストークンを Bearer トークンとして使います。

order.updated トピックは特定のステータスに限定されません。そのため、受信サーバーは注文の status フィールドを読み取り、送信したい遷移ごとに 1 回だけ送信してください。また、WooCommerce は既定で wp-cron を使ってバックグラウンドで配信するため、メッセージは注文から少し遅れて届くことがあります。

1WooCommerceOrder webhook with a secret
2ReceiverChecks the signature and consent
3Cloud APISends the approved template
4CustomerReplies land in the WhatsApp Business app

受信サーバーは、リクエストが店舗から届いたものだとどう判断しますか?

WooCommerce の署名で判断します。配信ごとに X-WC-Webhook-Signature ヘッダーが付きます。これは、Webhook に設定したシークレットで生のペイロードから計算した HMAC-SHA256 を base64 エンコードしたものです。受信サーバーは受け取ったボディに対して同じハッシュを計算して比較し、一致しないものは拒否します。

これは店舗自身のシークレットなので、WhatsApp の受信メッセージに付く Meta の署名とは異なり、検証できます。比較は定数時間で行い、ハッシュはフレームワークが解析する前の生のボディに対して計算してください。JSON を再エンコードするとハッシュが変わってしまうためです。

応答はすぐに 2xx で返してください。WooCommerce は 2xx、301、302 以外の応答をすべて失敗と数え、連続で 5 回を超えて失敗すると Webhook を無効にします。デプロイ中でサーバーが止まっていたり、Meta の応答を待ってから返すために遅くなったりすると、誰も気づかないうちに店舗のメッセージ送信が止まることがあります。

店舗は何を、どんなときに送信できますか?

店舗から先に送る場合は、承認済みテンプレートを使います。Meta の 24 時間のカスタマーサービスウィンドウは、お客様がその番号にメッセージを送ったときにしか開きません。注文確認や発送通知は企業側からの送信にあたるため、フリーテキストは拒否されます。更新の種類ごとにユーティリティテンプレートを作成し、承認を待ってから、名前と言語を指定し、注文番号などの情報をパラメータとして渡して送信します。

Meta はオプトインも求めています。お客様が自分の番号を伝え、この企業から WhatsApp で連絡を受けることに同意している必要があります。最も簡単な記録方法は、チェックアウト画面のチェックボックスを注文に保存することです。受信サーバーは送信前にこれを確認してください。

お客様が返信した後は、通常の Coexistence の会話になります。返信は店舗の端末の WhatsApp Business アプリに表示され、ウィンドウが開いているためフリーテキストも送れます。チームはこれまでどおりアプリから返信できます。

よくある間違い

  • WooCommerce に応答する前に Cloud API を呼び出してしまう。送信の遅延や失敗が Webhook の失敗として数えられ、5 回を超えると無効になります。
  • 解析済みの JSON をハッシュしてしまう。署名が一致せず、正規の配信がすべて拒否されます。
  • order.updated の配信のたびに送信してしまう。このトピックは特定のステータスに限定されないため、どの遷移を送信済みか記録していないと、お客様に同じメッセージが重複して届きます。
EasyCoexistence で実現する

easycoexistence.com で店舗の番号を接続し、ダッシュボードにある phone number ID とトークンを受信サーバーに設定します。料金は接続済みの番号 1 件あたり月額 US$ 9 から、番号を追加するほど下がり US$ 1 までで、最初の 3 日間は無料です。

よくある質問

この連携に WordPress プラグインは必要ですか?

いいえ。WooCommerce 標準の Webhook と受信サーバーがあれば足ります。受信サーバーは、同じ PHP アプリケーション内のルートでも構いません。

注文メッセージの料金は誰が支払いますか?

メッセージ料金は、Meta が企業の WhatsApp Business アカウントに直接請求します。EasyCoexistence が上乗せすることはありません。

チームはこれまでどおり端末を使えますか?

はい。Coexistence により、店舗の番号で WhatsApp Business アプリを引き続き使えます。店舗が送信したテンプレートも、スレッドに表示されます。

Webhook が無効になった場合はどうすればよいですか?

受信サーバーを修正してから、WooCommerce で Webhook のステータスを有効に戻してください。無効の間に作成された注文では、メッセージは送信されていません。

続きを読む

始める準備はできましたか?

WhatsApp Coexistence の設定は数分で完了し、数か月もかかりません。スマートフォン上のアプリも引き続き使えます。

無料トライアルを始める

確認日

WooCommerce の注文通知を WhatsApp で送る方法