Shopify から WhatsApp で注文メッセージを送信する
Shopify Flow の「Send HTTP request」アクションを使えば、注文の作成時に承認済みテンプレートを Cloud API へ送信できます。接続した番号の `phone_number_id` と、Flow シークレットとして保存したトークンを使います。このアクションがないプランでは、Shopify 管理画面の Webhook を n8n などの受信側に向け、受信側から同じ呼び出しを行います。
Flow の「Send HTTP request」アクションを利用できる Shopify のプラン。
Flow が HTTP レスポンスを待ってから接続を閉じ、後で再試行するまでの時間。
Meta は、WhatsApp でメッセージを送る前に、企業がオプトインの許可を得ることを求めています。
Shopify Flow は WhatsApp メッセージをどのように送信しますか?
「Send HTTP request」アクションを使います。このアクションは任意の URL にヘッダーとボディを付けて POST でき、ボディにはトリガーの Liquid 変数も使えます。
注文作成トリガーでワークフローを作成し、「Send HTTP request」を追加します。URL は、接続した番号の `phone_number_id` に対応する Cloud API のメッセージ用エンドポイントです。Authorization ヘッダーには、Bearer に続けてその番号のアクセストークンを指定します。トークンは Flow シークレットとして保存し、シークレット変数として参照してください。シークレットの値は Flow の画面に表示されず、実行ログでも伏せ字になるため、トークンの保管先として適しています。ボディはテンプレートメッセージで、`to` フィールドにお客様の電話番号を、テンプレートのパラメーターに注文内容を指定します。
Flow は 2XX または 3XX のレスポンスを成功と見なします。Meta は有効なリクエストにメッセージ ID を返すので、実行が成功した場合は Meta がメッセージを受け付けたことになります。
{
"messaging_product": "whatsapp",
"to": "<customer phone, digits only>",
"type": "template",
"template": {
"name": "order_confirmation",
"language": { "code": "en" },
"components": [{
"type": "body",
"parameters": [{ "type": "text", "text": "{{order.name}}" }]
}]
}
}注文メッセージはなぜテンプレートでなければならないのですか?
店舗側が先にメッセージを送るからです。Meta の 24 時間のカスタマーサービスウィンドウは、お客様がその番号にメッセージを送ったときにだけ開きます。注文確認、発送のお知らせ、カゴ落ちのリマインダーはそれより前に送るため、フリーテキストは拒否され、事前に承認されたテンプレートだけが送信できます。
テンプレートは、注文や発送の通知向けのユーティリティカテゴリで一度作成し、承認されてからワークフローを有効にしてください。リクエストボディの名前と言語は承認済みテンプレートと完全に一致させる必要があり、パラメーターの数もプレースホルダーの数と合わせます。
同意の取得も必要です。Meta は、企業が WhatsApp でメッセージを送る前にオプトインを得ることを求めています。つまり、本人が電話番号を伝え、その企業からのメッセージ受信に同意している状態です。チェックアウトにその旨のチェックボックスを置くのが一般的な取得方法で、ワークフローでは送信前にその同意を確認してください。
ストアのプランに「Send HTTP request」が含まれていない場合はどうなりますか?
代わりに Shopify 管理画面の Webhook を使います。「設定」から「通知」、「Webhook」の順に開くと、注文作成などのイベントに対して、JSON 形式で URL へ送信する Webhook を作成できます。送信先は受信側に設定します。n8n の Webhook ノードでも、PHP、Python、Node で作った route でも構いません。受信側は注文を読み取り、同意を確認して、Cloud API に同じテンプレート呼び出しを行います。
どちらの方法で送信しても、返信の扱いは同じです。お客様が注文メッセージに返信すると、その番号は Coexistence で接続されているため、返信は店舗の端末の WhatsApp Business アプリに届き、フリーテキストを送れる 24 時間のウィンドウも開きます。番号の Webhook の送信先を設定している場合は、返信がお客様のシステムにも届きます。注文メッセージ自体もアプリに表示されるので、返信する担当者は、お客様が何に返信しているのかを確認できます。
よくある間違い
- 注文の作成時にフリーテキストを送る。お客様がまだメッセージを送っていないため、Meta に拒否されます。承認済みテンプレートを使ってください。
- 4XX レスポンスでもエラー処理を「再試行」にしたままにする。Meta が決して受け付けないリクエストを、Flow が最大 24 時間再試行することがあります。
- トークンをヘッダーにそのまま書き込む。Flow シークレットとして保存すれば、画面やログに表示されません。
easycoexistence.com で店舗の番号を接続し、ダッシュボードから `phone_number_id` とトークンを確認して、Flow または受信側から Cloud API を呼び出します。料金は接続済みの番号 1 件あたり月額 US$ 9 から、番号を追加するにつれて US$ 1 まで下がります。最初の 3 日間は無料トライアルです。
よくある質問
テンプレートメッセージの料金は誰が支払いますか?
メッセージの料金は、Meta が企業の WhatsApp Business アカウントに直接請求します。EasyCoexistence が上乗せすることはありません。
チームはこれまでどおり携帯電話からお客様に返信できますか?
はい。それが Coexistence の特長です。店舗が送信に使う番号と同じ番号で、WhatsApp Business アプリも使えます。
Shopify のアプリは必要ですか?
いいえ。Flow の「Send HTTP request」か、受信側への管理画面 Webhook があれば十分です。Cloud API は HTTPS の呼び出し 1 回で利用できます。
`to` フィールドの電話番号はどの形式にしますか?
国番号を付けた国際形式で、数字のみにします。お客様はスペースや記号を入力することがあるため、チェックアウトの電話番号欄の値は送信前に整形してください。
続きを読む
始める準備はできましたか?
WhatsApp Coexistence の設定は数分で完了し、数か月もかかりません。スマートフォン上のアプリも引き続き使えます。
無料トライアルを始める確認日