Contents
- 1 WhatsApp Business API とは?取得条件と申請フロー
- 2 料金体系と公式価格表へのリンク
- 3 API キー・証明書の発行手順とセキュリティベストプラクティス
- 4 主要 CRM(HubSpot・Salesforce・Zoho)との連携要件とサンプルコード
- 5 Webhook 設定と ClickUp 自動化テンプレート活用例
- 6 電話番号の CRM マッピング・自動化シナリオ(folk.app 参照)
- 7 テスト環境(Sandbox)での検証と本番移行チェックリスト
- 8 データプライバシー・GDPR/日本の個人情報保護法対応策
- 9 導入支援と次のアクション
- 10 参考リンク(2024 年 5 月時点)
WhatsApp Business API とは?取得条件と申請フロー
| 項目 | 内容 |
|---|---|
| 提供対象 | 法人(中小企業・大企業)向けに Meta が公式認定した API。個人事業主でも「Meta 認定パートナー」経由で利用できるケースがありますが、直接の申請は不可です【※要確認】 |
| 必須条件 |
|
| 申請フロー | 1. Meta Business Manager にログインし「ビジネス設定」→「アカウント」→「WhatsApp アカウント」を作成 2. 「開始」ボタンから電話番号を登録し、所有権検証(SMS または音声)を完了 3. Meta の審査が通過すると API 用 Phone Number ID と アクセストークン が発行されます |
ポイント
- 申請から承認までの所要期間は通常 1〜3 営業日ですが、国や業種によっては延長されることがあります。
- 承認後も「ビジネスプロファイル」の情報変更(例:会社名・ロゴ)は再審査が必要です。
料金体系と公式価格表へのリンク
WhatsApp Business API の課金は 2 つの要素 に分かれます。
| 課金項目 | 内容 | 参考URL |
|---|---|---|
| 月額固定費(ホスティング) | メッセージ数に関わらず、WhatsApp Business Cloud のインスタンスを維持するための料金。プランは「Essential」「Advanced」などがあり、選択したパートナーや利用地域で価格が変動します。 | https://www.whatsapp.com/business/api/pricing |
| 従量課金(メッセージ単価) |
|
同上 |
2024 年 5 月時点の目安(※公式価格表をご確認ください)
| メッセージ種別 | 米国(USD) | EU(USD) | 日本(USD) |
|---|---|---|---|
| セッションメッセージ | $0.0050 / 件 | $0.0065 / 件 | $0.0070 / 件 |
| テンプレートメッセージ | $0.0550 / 件 | $0.0600 / 件 | $0.0580 / 件 |
注意
- 上記は 標準価格 です。Meta 認定パートナー(Twilio、MessageBird 等)経由で導入すると、ボリュームディスカウントやセットアップ費用が別途発生する場合があります。
- 「月額固定費」はプランにより $39〜$149 の範囲ですが、公式ページの最新価格を必ず参照してください。
API キー・証明書の発行手順とセキュリティベストプラクティス
1. アクセストークン取得(Meta Business Manager)
| 手順 | 操作内容 |
|---|---|
| ① ログイン | Meta Business Manager にログインし「ビジネス設定」→「WhatsApp アカウント」へ移動 |
| ② トークン生成 | 「アクセストークンを生成」ボタンをクリック。デフォルトは 30 日有効(短期)ですが、システムで自動更新(OAuth 2.0 の Refresh Token)を設定すれば永続的に利用可能です |
| ③ スコープ確認 | 必要な権限は whatsapp_business_management と whatsapp_business_messaging。最小権限の原則に従い、不要なスコープは除外してください【1】 |
2. CSR(Certificate Signing Request)と証明書
| 手順 | コマンド例 |
|---|---|
| ① OpenSSL でキー・CSR 作成 | bash<br>openssl req -new -newkey rsa:2048 -nodes -keyout whatsapp.key -out whatsapp.csr -subj "/CN=yourdomain.com"</br> |
| ② Meta の証明書登録画面へ貼り付け | Business Manager → 「WhatsApp アカウント」→「証明書」→「新規証明書を追加」 |
| ③ 承認待ち・ダウンロード | 審査が完了すると PEM 形式の証明書が取得可能。 |
ベストプラクティス(Meta 推奨)
- キーは AWS KMS, Azure Key Vault, Google Cloud KMS など HSM ベースで暗号化保存【2】
- API エンドポイント(https://graph.facebook.com)へのアクセスは IP ホワイトリスト を設定し、社内固定 IP のみ許可
- アクセストークンは 30 日ごとに自動ローテーション するスクリプトを CI/CD に組み込み(例:GitHub Actions + AWS Secrets Manager)
- 全 API 呼び出しは CloudTrail / Azure Monitor 等で監査ログを取得し、日次で異常検知
主要 CRM(HubSpot・Salesforce・Zoho)との連携要件とサンプルコード
共通前提条件
| 条件 | 内容 |
|---|---|
| CRM エディション | HubSpot → Marketing/Service Hub Professional 以上、Salesforce → Enterprise 以上、Zoho → Enterprise 以上が必須【3】 |
| API アクセス権 | 各 CRM の「プライベートアプリ」または「Connected App」で contacts, conversations(HubSpot)や api, refresh_token(Salesforce)等の最小スコープを付与 |
| 電話番号形式 | E.164 形式 (+81xxxxxxxxx) に統一し、CRM 側でも同じカスタムフィールド(例:whatsapp_number)で管理 |
HubSpot 連携
公式情報
- HubSpot WhatsApp Integration ガイド: https://knowledge.hubspot.com/ja/integrations/whatsapp-integration
手順概要
- プライベートアプリ作成 →
contacts,conversationsスコープ付与 - アクセストークン取得(30 日有効、Refresh Token で自動更新)
- Webhook 登録 → HubSpot の「ワークフロー」→「Webhooks」で受信用エンドポイントを設定
cURL サンプル
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
curl -X POST "https://graph.facebook.com/v18.0/${PHONE_NUMBER_ID}/messages" \ -H "Authorization: Bearer ${WHATSAPP_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "messaging_product":"whatsapp", "to":"${CONTACT_PHONE}", "type":"template", "template":{ "name":"order_confirmation", "language":{"code":"en_US"} } }' |
Node.js(HubSpot SDK)サンプル
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
const hubspot = require('@hubspot/api-client'); const axios = require('axios'); const hsClient = new hubspot.Client({ accessToken: process.env.HUBSPOT_TOKEN }); async function sendWhatsApp(contactId, phone) { const token = process.env.WHATSAPP_ACCESS_TOKEN; const pid = process.env.PHONE_NUMBER_ID; await axios.post( `https://graph.facebook.com/v18.0/${pid}/messages`, { messaging_product: "whatsapp", to: phone, type: "template", template: { name: "order_confirmation", language: { code:"en_US" } } }, { headers: { Authorization: `Bearer ${token}` } } ); // HubSpot に送信履歴を保存 await hsClient.crm.objects.notes.basicApi.create({ properties: { hs_note_body: 'WhatsApp テンプレート「order_confirmation」送信', hubspot_owner_id: contactId } }); } |
Salesforce 連携
公式情報
- Salesforce API & Connected App ガイド: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_defining_connected_app.htm
手順概要
- Connected App 作成 → OAuth スコープ
api, refresh_tokenを追加 - クライアント ID / シークレット取得 → 取得した情報でアクセストークンを生成(30 日)
- Apex クラス実装 → HTTP 呼び出しで WhatsApp メッセージ送信
Apex サンプル
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
public class WhatsAppService { private static final String ENDPOINT = 'https://graph.facebook.com/v18.0/'; private static final String ACCESS_TOKEN = '[YOUR_WHATSAPP_ACCESS_TOKEN]'; public static void sendTemplate(String phone, String templateName) { HttpRequest req = new HttpRequest(); req.setEndpoint(ENDPOINT + System.Label.PHONE_NUMBER_ID + '/messages'); req.setMethod('POST'); req.setHeader('Authorization', 'Bearer ' + ACCESS_TOKEN); req.setHeader('Content-Type', 'application/json'); Map<String,Object> body = new Map<String,Object>{ 'messaging_product' => 'whatsapp', 'to' => phone, 'type' => 'template', 'template' => new Map<String,Object>{ 'name' => templateName, 'language' => new Map<String,String>{'code'=>'en_US'} } }; req.setBody(JSON.serialize(body)); Http http = new Http(); HTTPResponse res = http.send(req); // TODO: エラーハンドリング } } |
Zoho CRM 連携
公式情報
- Zoho API & OAuth ガイド: https://www.zoho.com/crm/developer/docs/api/v2/
手順概要
- OAuth クライアント作成 →
client_id,client_secretを取得し、リフレッシュトークンを生成 - Webhook(Deluge)スクリプトで WhatsApp API 呼び出し
Deluge(Zoho Flow)サンプル
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
response = postUrl( "https://graph.facebook.com/v18.0/" + phoneNumberId + "/messages", { "messaging_product":"whatsapp", "to":input.phone, "type":"template", "template":{ "name":"order_confirmation", "language":{"code":"en_US"} } }, {"Authorization":"Bearer " + whatsappAccessToken} ); info response; |
Webhook 設定と ClickUp 自動化テンプレート活用例
1. Webhook エンドポイントの作り方(Node.js/Express)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.json()); app.get('/whatsapp/webhook', (req, res) => { const verifyToken = process.env.WEBHOOK_VERIFY_TOKEN; if (req.query['hub.verify_token'] === verifyToken) { return res.send(req.query['hub.challenge']); } return res.sendStatus(403); }); app.post('/whatsapp/webhook', (req, res) => { // メッセージ受信処理 const entry = req.body.entry?.[0]; const changes = entry?.changes?.[0]; const messages = changes?.value?.messages ?? []; messages.forEach(handleMessage); res.sendStatus(200); }); function handleMessage(msg) { // 必要に応じて DB 保存、CRM 連携、ClickUp タスク生成など } |
ポイント
- HTTPS(TLS 1.2+)が必須です。自己署名証明書は使えませんので、Let’s Encrypt 等で取得してください【4】。
-verify_tokenは Meta 側に登録した文字列と一致させるだけのシンプルな認証です。
2. Meta 側で Webhook を登録
- Business Manager → 「WhatsApp」→「Webhook」画面へ
- エンドポイント URL と
verify_token(環境変数)を入力し、サブスクリプション対象に以下のイベントを選択 messages(受信メッセージ)message_templates(テンプレート承認結果)
3. ClickUp 自動化テンプレート活用
- 公式ガイド: https://clickup.com/blog/whatsapp-crm-integration (2024 年 2 月更新)
手順概要
| ステップ | 操作内容 |
|---|---|
| ① ClickUp API キー取得 | 「Settings」→「Integrations」→「API」から Personal Token を発行 |
| ② タスク生成用リスト ID 確認 | 任意の List の URL 例: https://app.clickup.com/123456/v/l/7890123 → 7890123 が List ID |
| ③ Webhook ハンドラにタスク作成ロジック追加 | javascript<br>const axios = require('axios');<br>async function createClickUpTask(msg){<br> const payload={<br> name: |
| ④ タスクに自動タグ付与 | メッセージ本文に「返品」や「支払」といったキーワードが含まれる場合は tags フィールドへ refund, payment を追加 |
| ⑤ 通知設定 | ClickUp の Automations で「タスク作成時に Slack/メール通知」を有効化し、担当者への即時アラートを実装 |
電話番号の CRM マッピング・自動化シナリオ(folk.app 参照)
1. E.164 形式で統一する理由
WhatsApp が唯一受け付けるフォーマットは E.164(例: +819012345678)。CRM 側でも同じ形式のカスタムプロパティ whatsapp_number を作成すると、以下が実現できます。
| メリット | 内容 |
|---|---|
| 検索一致率向上 | 番号表記揺れ(ハイフン・スペース)を排除し、正確にレコードをマッチング |
| 国際化対応 | 日本だけでなく多言語・多拠点展開時も同一ロジックで処理可能 |
| 法令遵守 | 個人情報保護法や GDPR では「識別子」の統一が推奨されている |
マッピングフロー(Node.js)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function normalizePhone(raw){ return raw.replace(/[^\d+]/g,''); // + と数字以外を除去 } async function findOrCreateContact(phoneE164){ const normalized = normalizePhone(phoneE164); // HubSpot 例 const res = await hubspotClient.crm.contacts.searchApi.doSearch({ filterGroups:[{filters:[{propertyName:'whatsapp_number',operator:'EQ',value:normalized}]}], limit:1 }); if(res.results.length) return res.results[0]; // なければ新規作成 return await hubspotClient.crm.contacts.basicApi.create({ properties:{whatsapp_number:normalized, email:`${normalized}@example.com`} }); } |
2. folk.app の実装例と比較
| 項目 | folk.app(CSV 手動インポート) | API 自動連携 |
|---|---|---|
| リアルタイム性 | 数時間〜数日遅延 | 秒単位で即時更新 |
| エラー率 | フォーマット不備で手作業修正が必要 | バリデーションロジックで自動除外 |
| 運用コスト | CSV 作成・アップロードに人的工数 | 初期開発は必要だが、継続的な工数は低減 |
| スケーラビリティ | 10k 件以上は手間増大 | API 呼び出しで無制限に拡張可能 |
- folk.app のガイド(2024 年版): https://www.folk.app/articles/how-to-sync-whatsapp-contacts-to-your-crm
3. 自動応答・タグ付け・リードスコアリング活用例
| シナリオ | 設定内容 | 効果 |
|---|---|---|
| 自動FAQ | メッセージに「営業時間」「価格」などのキーワードが含まれたら、事前作成したテンプレートで即返答。Webhook → キーワード判定 → messages API 呼び出し |
平均応答時間 5 秒 以内へ短縮 |
| タグ付け | 「返品」→ whatsapp_tag=refund、「注文キャンセル」→ whatsapp_tag=cancel を CRM に自動設定 |
担当者のケース分担が容易に |
| リードスコアリング(HubSpot) | 1 回の問い合わせ: +10 点 購入意向メッセージ: +30 点 |
スコア上位リードを営業パイプラインへ自動投入 |
テスト環境(Sandbox)での検証と本番移行チェックリスト
1. Sandbox アカウント取得手順
| 手順 | 操作 |
|---|---|
| ① Business Manager → WhatsApp | 「Sandbox 環境を作成」ボタンをクリック |
| ② テスト電話番号取得 | 本番とは別の仮想番号が発行され、専用アクセストークンが付与されます【5】 |
| ③ 必要な権限設定 | Sandbox 用に同じ「Business Profile」情報と Webhook を登録 |
2. 推奨テストケース
| テスト項目 | 期待結果 | 補足 |
|---|---|---|
| メッセージ送信(テンプレート) | sent ステータスが返る |
テンプレートは事前承認済みのものを使用 |
| 受信 Webhook | /whatsapp/webhook に JSON が届く |
署名検証 (X-Hub-Signature-256) を実装推奨 |
| エラーハンドリング(無効番号) | 400 Bad Request、エラーコード invalid_phone_number |
エラーログに記録し、リトライロジックを組む |
| アクセストークン有効期限 | 失効後は 401 Unauthorized → 自動再取得が走る |
Refresh Token の保存先は Secrets Manager 推奨 |
3. 本番移行チェックリスト
- [ ] Sandbox で 送受信・Webhook→CRM フロー がすべて成功
- [ ] 本番用アクセストークンと証明書を Secrets Manager に格納し、ローテーション設定が有効か確認
- [ ] IP ホワイトリストに 本番サーバーのパブリック IP のみ登録(Meta の API エンドポイントは
graph.facebook.com) - [ ] 監査ログ(CloudTrail / Azure Monitor)が 全ての API 呼び出し を記録しているか検証
- [ ] エラーレポート用 Slack/メール通知が動作(例: AWS SNS → Slack)
- [ ] GDPR/日本の個人情報保護法に沿った オプトインフロー(同意取得メッセージ)を実装
データプライバシー・GDPR/日本の個人情報保護法対応策
| 法規制 | 必要な技術的・組織的対策 |
|---|---|
| GDPR(EU) |
|
| 個人情報保護法(日本) |
|
| 共通項目 |
|
実装ヒント
- AWS KMS の Automatic Key Rotation(毎年)と Key Policy に「WhatsApp API」専用ロールだけを許可する。
- Azure の Customer Lockbox で Meta がデータにアクセスできないよう制御し、必要時は手動承認フローを導入。
導入支援と次のアクション
| ステップ | 内容・チェックポイント |
|---|---|
| 1️⃣ Business Manager で API アカウント取得 | 本セクション「取得条件」参照。Phone Number ID とアクセストークンを安全に保管 |
| 2️⃣ セキュリティ基盤構築 | キー・トークンは KMS/Key Vault に格納し、ローテーションスクリプト(例: GitHub Actions)を設定 |
| 3️⃣ CRM ライセンスと API 設定 | HubSpot / Salesforce / Zoho のエディションが要件に合致しているか確認し、プライベートアプリ/Connected App を作成 |
4️⃣ カスタムプロパティ whatsapp_number 作成 |
E.164 形式で統一。既存データはバッチ処理で正規化 |
| 5️⃣ Webhook エンドポイント実装 & Meta 登録 | HTTPS 必須、署名検証、リトライロジックを組み込み |
| 6️⃣ ClickUp 自動化テンプレート構築 | 上記コード例を参考にタスク生成・タグ付与・通知フローを作成 |
| 7️⃣ Sandbox でエンドツーエンドテスト | 送信・受信・CRM 連携・ClickUp タスク化まで一通り動くことを確認 |
| 8️⃣ 本番環境へ移行 & 法令遵守実装 | データ保持・削除、オプトインフロー、監査ログの本番導入 |
| 9️⃣ 運用体制構築 | 定期的な料金シミュレーション(Meta 料金表参照)と アラート設定(コスト超過・エラー率上昇) |
おすすめパートナー
- Twilio: WhatsApp Business Cloud の公式パートナーで、導入支援・課金最適化サービスあり【6】
- MessageBird: 日本語サポートが充実し、ClickUp 連携のテンプレートも提供
参考リンク(2024 年 5 月時点)
| 項目 | URL |
|---|---|
| Meta Business Manager | https://business.facebook.com/ |
| WhatsApp Business API 公式料金表 | https://www.whatsapp.com/business/api/pricing |
| HubSpot WhatsApp Integration ガイド(日本語) | https://knowledge.hubspot.com/ja/integrations/whatsapp-integration |
| Salesforce Connected App ドキュメント | https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_defining_connected_app.htm |
| Zoho CRM API(バージョン 2) | https://www.zoho.com/crm/developer/docs/api/v2/ |
| ClickUp WhatsApp 自動化ガイド | https://clickup.com/blog/whatsapp-crm-integration |
| folk.app CSV インポート手順 | https://www.folk.app/articles/how-to-sync-whatsapp-contacts-to-your-crm |
| Twilio WhatsApp Business Cloud パートナー情報 | https://www.twilio.com/ja-jp/whatsapp/business-cloud |
| MessageBird WhatsApp ソリューション | https://www.messagebird.com/en/whatsapp-business/ |
まとめ
- 取得は Meta Business Manager の審査と電話番号所有権検証が必須。個人事業主でもパートナー経由で利用可能なケースがあります。
- 料金は月額固定費+メッセージ従量課金のハイブリッド構造。公式価格表は随時変動するため、リンク先を定期的に確認してください。
- セキュリティはトークン・証明書の暗号化保存と自動ローテーションが最重要。IP 制限や監査ログも必須です。
- CRM 連携はエディション要件を満たし、電話番号を E.164 で統一すればシームレスにマッピングできます。サンプルコードは実装の出発点として活用してください。
- Webhook + ClickUp によるタスク化で、WhatsApp の受信メッセージが即座に業務フローへ組み込めます。
- テスト→本番移行は Sandbox でエンドツーエンド検証し、チェックリストをすべてクリアしたうえでデータ保護法対応を完了させれば安全に運用開始できます。
次のステップ:まずは Business Manager に企業アカウントを作成し、Sandbox 環境で「テンプレート送信」テストを実施してください。その結果を踏まえて本番環境への移行計画を立案しましょう。