Run in Postman
- 通知を受ける対象のイベントに登録し、通知の送信先URLを指定することにより、Webhookを使用するHubSpotアプリを設定してあること。アプリの作成方法の詳細については、前提条件に関するドキュメント(英語)をご覧ください。
- このドキュメントに規定されたWebhookペイロードを処理できる、公開URLのセキュア(HTTPS)エンドポイントが展開されていること。
スコープ
Webhookを使用してCRMイベントの配信登録を行うには、登録する対象のCRMオブジェクトタイプに対応する、イベントに関連付けられたスコープを求めるようにアプリを設定する必要があります。例えば、コンタクトイベントの配信登録を行う場合は、crm.objects.contacts.readスコープをリクエストする必要があります。
- 公開アプリの設定UIでサブスクリプションを作成する場合、サブスクリプションの作成を完了する前に、[新しいWebhook配信登録を作成]パネルで必要なスコープを追加するように求められます。
POSTリクエストを/webhooks/v3/{appId}/subscriptionsエンドポイントに送信してサブスクリプションを作成する場合、レスポンスに含まれるエラーに、公開アプリの設定UIで設定する必要があるスコープの名前が示されます。- アプリですでにWebhookを使用している場合、アクティブなWebhookサブスクリプションで必要とされているスコープを削除するには、その前に、該当するWebhookサブスクリプションを一時停止して削除する必要があります。
- Webhookサブスクリプションタイプごとに必要となるスコープは、下にある表で確認できます。
Webhookの設定
Webhookサブスクリプションを設定する前に、これらの通知の送信先URLを指定する必要があります。アプリのサブスクリプションを完全に設定する方法については、以下のセクションの手順に従ってください。開発者アカウントでの設定の管理
開発者アカウントのアプリの設定ページでは、URLとスロットリング制限を管理できます。- 開発者アカウントで、[アプリ]ダッシュボードに移動します。
- Webhookを設定する対象のアプリの名前をクリックします。

- 左のサイドバーメニューで[Webhook]に移動します。
- [ターゲットURL]フィールドに、イベントがトリガーされたときにHubSpotでPOSTリクエストを送信する宛先のURLを入力します。
- [イベントの抑制]設定を使用して、HubSpotで送信を試みるイベントの最大数を調整します。

- [保存]をクリックします。
APIによる設定の管理
以下のエンドポイントと開発者APIキーを使用することで、アプリのWebhook設定をプログラムによって構成できます。 アプリに現在構成されているWebhookの設定を表示するには、GETリクエストをwebhooks/v3/{appId}/settingsに送信します。
リクエストにはアプリID(英語)を含める必要があります。アプリIDは、[アプリ]ダッシュボード内のアプリの名前の下、またはアプリの設定の[認証]タブで確認できます。
settingsオブジェクトは、以下のフィールドからなります。
上記の設定を編集するには、
PUTリクエストをwebhooks/v3/{appId}/settingsに送信します。このリクエスト本文には、以下のフィールドを含めます。
以下に、リクエストの例を示します。
Webhookサブスクリプション
Webhook URLとイベントスロットリングを設定したら、1つ以上のサブスクリプションを作成する必要があります。WebhookサブスクリプションでHubSpotに対し、特定のアプリで受信するイベントを指示します。 サブスクリプションは、貴社の連携機能をインストールした全ての顧客に適用されます。つまり、必要なサブスクリプションを指定するのは一度だけでよいことになります。アプリケーションでサブスクリプションを有効にすると、そのアプリケーションをインストールした全ての顧客のWebhookの受信が自動的に開始されます。また、連携機能によって新しい顧客からのWebhookトリガーの受信も開始されます。 全てのassociationChange Webhookサブスクリプションに共通して、Webhookは関連付けの両方の対象に対する2つのイベントをトリガーします。
- 2つのコンタクトが関連付けられると、
contact.associationChangeのサブスクリプションによって、それぞれcontact 1 to contact 2とcontact 2 to contact 1を表す2つのイベントがトリガーされます。 contact.associationChangeとcompany.associationChangeの2つのWebhookサブスクリプションを使用している場合、会社が関連付けられると、2つのイベントを受信します。これらのイベントは、それぞれcontact 1 to company 1、company 1 to contact 1を表します。
eventTypeフィールドの値として使用できます。
現在ベータ版となっているコミュニケーション受信トレイおよびメッセージAPIを使用している場合は、以下のコミュニケーション サブスクリプション タイプの配信登録を行うことができます。
プロパティー変更サブスクリプションの場合、通知の対象とするプロパティーを指定する必要があります。複数のプロパティー変更サブスクリプションを指定できます。サブスクリプションで指定されているプロパティーが顧客のアカウントに存在しない場合、顧客からそのプロパティーに関するWebhookを受け取ることはありません。
一部のプロパティーは、CRMプロパティー変更サブスクリプションでは使用できません。該当するプロパティーは次の通りです。
num_unique_conversion_eventshs_lastmodifieddate
assignedTo**:**スレッドが再割り当てまたは割り当て解除されたコミュニケーション。propertyValueは、スレッドが再割り当てされた場合はWebhookのペイロードに含まれるアクターIDとなり、スレッドが割り当て解除された場合は空白となります。status**:**スレッドによって変更されたコミュニケーションのステータス。Webhookペイロード内のpropertyValueは、OPENまたはCLOSEDのいずれかになります。isArchived**:**スレッドが復元されたコミュニケーション。Webhookペイロード内のpropertyValueは、常にFALSEとなります。
開発者アカウントでのサブスクリプションの作成
HubSpot開発者アカウント内でWebhookサブスクリプションを作成できます。- HubSpotの開発者アカウントで、[アプリ]ダッシュボードに移動します。
- アプリの名前をクリックします。
- 左のサイドバーメニューで[Webhook]に移動します。
- [サブスクリプションを作成]をクリックします。
- 右側のパネルで[どのオブジェクトタイプを選びますか?]のドロップダウンメニューをクリックし、サブスクリプションを作成する対象のオブジェクトを選択します。
- [どのイベントについて知りたいですか?]のドロップダウンメニューをクリックし、イベントタイプを選択します。

- プロパティー変更イベントのサブスクリプションを作成する場合は、[どのプロパティーを選びますか?]のドロップダウンメニューをクリックし、対象とするプロパティーを選択します。

- [配信登録]をクリックします。
- [イベントのサブスクリプション]セクションで、オブジェクトタイプにカーソルを合わせ、[サブスクリプションを表示]をクリックします。
- イベントの横にあるチェックボックスをオンにしてから、テーブルのヘッダーで[アクティベート]をクリックします。

APIを使用したサブスクリプションの作成
以下のエンドポイントを使用すれば、プログラムに従ってサブスクリプションを作成できます。これらのエンドポイントにリクエストを送信する際は、開発者APIキーを使用する必要があります。 subscriptionオブジェクトには、以下のフィールドを格納できます。サブスクリプションの取得
サブスクリプションのリストを取得するには、GETリクエストをwebhooks/v3/{appId}/subscriptionsに送信します。
レスポンスとして、サブスクリプションを表すオブジェクトの配列が返されます。各オブジェクトには、サブスクリプションに関する情報(ID、作成日、タイプ、現在有効になっているかどうかなど)が格納されています。レスポンスの例を次に示します。
新規サブスクリプションの作成
新しいサブスクリプションを作成するには、POSTリクエストをwebhooks/v3/{appId}/subscriptionsに送信します。
リクエスト本文には、以下のフィールドを含めることができます。
id、createdAt、createdByの各フィールドは自動的に設定されるため、リクエスト本文に含める必要はありません。
以下のリクエスト本文の例をご参照ください。
eventTypeには、前のセクションで定義されている有効なサブスクリプションタイプを指定する必要があります。また、propertyNameは有効なプロパティー名でなければなりません。顧客がこの値に一致するプロパティーを定義していない場合、このサブスクリプションによる通知は行われません。
サブスクリプションの更新
サブスクリプションを有効化または一時停止するには、PUTリクエストをwebhooks/v3/{appId}/subscriptions/{subscriptionId}に送信します。
リクエスト本文には、以下のフィールドを含めます。
サブスクリプションの削除
サブスクリプションを削除するには、DELETEリクエストをwebhooks/v3/{appId}/subscriptions/{subscriptionId}に送信します。
Webhookペイロード
アプリのWebhook設定で指定したターゲットURLにあるエンドポイントでは、HubSpotから送信される、JSON形式のデータを含むPOSTリクエストを受信します。
Webhookエンドポイントで取得しているリクエストが実際にHubSpotから送信されたものであることを保証するために、HubSpotは、X-HubSpot-Signatureヘッダーを、貴社のアプリのクライアントシークレットとリクエスト詳細の組み合わせに基づくSHA-256ハッシュにします。詳しくはリクエスト署名の検証方法をご覧ください。
以下の表を使用して、ペイロードに含まれる可能性のあるフィールドの詳細を確認してください。
occurredAtプロパティーを使用してください。
また、HubSpotはイベントあたり1件の通知のみを受信することを保証できません。非常にまれですが、HubSpotが同じ通知を複数回送信する場合があります。
プライバシー規則に準拠したコンタクトの削除
HubSpotユーザーは、プライバシーに関する法律に準拠するためにコンタクトレコードを完全に削除することができます。詳細は、GDPRに準拠した削除に関するナレッジベース記事をご覧ください。contact.privacyDeletion配信カテゴリー(サブスクリプションタイプ)の配信登録を行うことにより、ユーザーがプライバシーに準拠するためにコンタクトを削除した時点で、Webhook通知を受信できます。
プライバシー削除通知には特別な動作があります。
- プライバシー削除イベントによってコンタクト削除イベントもトリガーされるため、両方のイベントの受信を登録している場合は2つの通知を受け取ります。
- これらの通知は、必ずしも特定の順序で送信されたり、同じ一括配信で送信されたりするわけではありません。個別のメッセージとの照合にはオブジェクトIDを使用する必要があります。
セキュリティー
Webhookのエンドポイントで取得しているリクエストが実際にHubSpotから送信されたことを保証するために、HubSpotはX-HubSpot-Signatureヘッダーに、アプリのクライアントシークレットと、HubSpotが送信するリクエスト本文を連結して作成したSHA-256ハッシュを取り込みます。
この署名を検証するには、アプリケーションのアプリシークレットと、処理中のリクエストに含まれる未解析のリクエスト本文を連結して生成されたSHA-256ハッシュを取得します。生成されたハッシュとX-HubSpot-Signatureの値を比較します。これらの値が一致する場合、リクエストはHubSpotから送信されたことが検証されます。一致しない場合、アプリシークレットを知っている他のユーザーからリクエストが送信されたことになります。従って、この値の機密保持には十分ご注意ください。
これらの値が一致しない場合、転送中のリクエストの改ざん、またはエンドポイントに対してWebhook通知を用いたなりすましが発生した恐れがあります。
署名の検証について詳細を確認してください。
再試行
貴社のサービスで通知処理に問題が発生した場合、常に、HubSpotから失敗した通知の再送信が最大10回試行されます。 HubSpotが再試行する場合は次のとおりです。- **接続失敗:**指定されたWebhook URLへのHTTP接続をHubSpotが開始できない場合。
- **タイムアウト:**貴社のサービスから一括の通知に対するレスポンスの返送に5秒を超える時間がかかった場合
- **エラーコード:**貴社のサービスがHTTPステータスコード(4xxまたは5xx)でレスポンスした場合
制限
HubSpotがWebhookサブスクリプションを介してお客様のサービスに送信するPOSTリクエストは、お客様のアプリのAPIレート制限には計上されません。
1つのアプリあたり最大1,000件のサブスクリプションを作成できます。この制限を超えて作成しようとすると、以下の本文を含む400 bad requestが返されます。