最終更新日: 2025年8月28日
Run in Postman
- 通知を受ける対象のイベントに登録し、通知の送信先URLを指定することにより、Webhookを使用するHubSpotアプリを設定してあること。アプリの作成方法の詳細については、前提条件に関するドキュメント(英語)をご覧ください。
- このドキュメントに規定されたWebhookペイロードを処理できる、公開URLのセキュア(HTTPS)エンドポイントが展開されていること。
注:
- 非公開アプリでWebhookを管理することもできます。非公開アプリでは、非公開アプリのアプリ内設定でのみWebhookを編集できます。現在のところ、APIを介して編集することはできません。
- コミュニケーションWebhookに登録するには、現在ベータ版となっているコミュニケーション受信トレイおよびメッセージAPIにアクセスする必要があります
スコープ
Webhookを使用してCRMイベントの配信登録を行うには、登録する対象のCRMオブジェクトタイプに対応する、イベントに関連付けられたスコープを求めるようにアプリを設定する必要があります。例えば、コンタクトイベントの配信登録を行う場合は、crm.objects.contacts.read
スコープをリクエストする必要があります。
- 公開アプリの設定UIでサブスクリプションを作成する場合、サブスクリプションの作成を完了する前に、[新しいWebhook配信登録を作成]パネルで必要なスコープを追加するように求められます。
POST
リクエストを/webhooks/v3/{appId}/subscriptions
エンドポイントに送信してサブスクリプションを作成する場合、レスポンスに含まれるエラーに、公開アプリの設定UIで設定する必要があるスコープの名前が示されます。- アプリですでにWebhookを使用している場合、アクティブなWebhookサブスクリプションで必要とされているスコープを削除するには、その前に、該当するWebhookサブスクリプションを一時停止して削除する必要があります。
- Webhookサブスクリプションタイプごとに必要となるスコープは、下にある表で確認できます。
Webhookの設定
Webhookサブスクリプションを設定する前に、これらの通知の送信先URLを指定する必要があります。アプリのサブスクリプションを完全に設定する方法については、以下のセクションの手順に従ってください。注:
- Webhook設定は最大5分までキャッシュできます。WebhookのURL、同時接続数上限、またはサブスクリプションの設定を変更すると、変更が適用されるまでに最大5分かかる場合があります。
- HubSpotは、アプリをインストールしたアカウントに関連付けられたサブスクリプション イベント データを送信するときに、10件のリクエストの同時実行制限を設定します。この同時実行制限は、HubSpotが一度に試行する実行中リクエストの最大数です。各リクエストには最大100件のイベントを含めることができます。
開発者アカウントでの設定の管理
開発者アカウントのアプリの設定ページでは、URLとスロットリング制限を管理できます。- 開発者アカウントで、[アプリ]ダッシュボードに移動します。
- Webhookを設定する対象のアプリの名前をクリックします。

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

- [保存]をクリックします。
APIによる設定の管理
以下のエンドポイントと開発者APIキーを使用することで、アプリのWebhook設定をプログラムによって構成できます。 アプリに現在構成されているWebhookの設定を表示するには、GET
リクエストをwebhooks/v3/{appId}/settings
に送信します。
リクエストにはアプリID(英語)を含める必要があります。アプリIDは、[アプリ]ダッシュボード内のアプリの名前の下、またはアプリの設定の[認証]タブで確認できます。
settingsオブジェクトは、以下のフィールドからなります。
フィールド | Description |
---|---|
webhookUrl | HubSpotがWebhook通知を送信する宛先のURL。このURLはHTTPS経由で提供する必要があります。 |
maxConcurrentRequests | Webhook URLでの同時処理の制限。このフィールドには5より大きい値を設定する必要があります。 |
PUT
リクエストをwebhooks/v3/{appId}/settings
に送信します。このリクエスト本文には、以下のフィールドを含めます。
フィールド | Description |
---|---|
targetUrl | HubSpotがイベントペイロードを配信するために呼び出す、一般公開されたURL。 |
throttling | このオブジェクトでWebhookスロットリングの詳細を構成します。throttlingオブジェクト内にはperiod フィールドとmaxConcurrentRequests フィールドがあります。 |
period | この設定で使用する時間の単位。SECONDLY (1秒あたり)またはROLLING_MINUTE (1分あたり)のいずれかの値を指定できます。 |
maxConcurrentRequests | period で指定された一定の期間にHubSpotがアプリへの送信を試行するHTTPリクエストの最大数。 |
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
フィールドの値として使用できます。
サブスクリプションタイプ | 必要なスコープ | 説明 |
---|---|---|
contact.creation | crm.objects.contacts.read | 顧客のアカウントでコンタクトが作成された場合に通知を受け取ります。 |
contact.deletion | 顧客のアカウントからコンタクトが削除された場合に通知を受け取ります。 | |
contact.merge | コンタクトが別のコンタクトとマージされた場合に通知を受け取ります。 | |
contact.associationChange | コンタクトと他のサポート対象のWebhookオブジェクト(コンタクト、会社、取引、チケット、商品項目、または製品)との間の関連付けが追加または削除された場合に通知を受け取ります。 | |
contact.restore | 削除されたコンタクトが復元された場合に通知を受け取ります。 | |
contact.privacyDeletion | プライバシー規則への順守を理由としてコンタクトが削除された場合に通知を受け取ります。 | |
contact.propertyChange | アカウントの全てのコンタクトについて、指定したプロパティーが変更された場合に通知を受け取ります。 | |
company.creation | crm.objects.companies.read | 顧客のアカウントで会社レコードが作成された場合に通知を受け取ります。 |
company.deletion | 顧客のアカウントから会社レコードが削除された場合に通知を受け取ります。 | |
company.propertyChange | 顧客のアカウントの全ての会社レコードについて、指定したプロパティーが変更された場合に通知を受け取ります。 | |
company.associationChange | 会社オブジェクトと他のサポート対象のWebhookオブジェクト(コンタクト、会社、取引、チケット、商品項目、または製品)との間の関連付けが追加または削除された場合に通知を受け取ります。 | |
company.restore | 削除された会社レコードが復元された場合に通知を受け取ります。 | |
company.merge | 会社レコードが別の会社レコードとマージされた場合に通知を受け取ります。 | |
deal.creation | crm.objects.deals.read | 顧客のアカウントで取引レコードが作成された場合に通知を受け取ります。 |
deal.deletion | 顧客のアカウントから取引レコードが削除された場合に通知を受け取ります。 | |
deal.associationChange | 取引と他のサポート対象のWebhookオブジェクト(コンタクト、会社、取引、チケット、商品項目、または製品)との間の関連付けが追加または削除された場合に通知を受け取ります。 | |
deal.restore | 削除された取引レコードが復元された場合に通知を受け取ります。 | |
deal.merge | 取引レコードが別の取引レコードとマージされた場合に通知を受け取ります。 | |
deal.propertyChange | 顧客のアカウント上の全ての取引について、指定したプロパティーが変更された場合に通知を受け取ります。 | |
ticket.creation | tickets | 顧客のアカウントでチケットが作成された場合に通知を受け取ります。 |
ticket.deletion | 顧客のアカウントからチケットが削除された場合に通知を受け取ります。 | |
ticket.propertyChange | 顧客のアカウント上のチケットのいずれかで、指定したプロパティーが変更された場合に通知を受け取ります。 | |
ticket.associationChange | チケットと他のサポート対象のWebhookオブジェクト(コンタクト、会社、取引、チケット、商品項目、または製品)との間の関連付けが追加または削除された場合に通知を受け取ります。 | |
ticket.restore | 削除されたチケットが復元された場合に通知を受け取ります。 | |
ticket.merge | チケットが別のチケットとマージされた場合に通知を受け取ります。 | |
product.creation | e-commerce | 顧客のアカウント上で製品レコードが作成された場合に通知を受け取ります。 |
product.deletion | 顧客のアカウント上で製品レコードが削除された場合に通知を受け取ります。 | |
product.restore | 削除された製品レコードが復元された場合に通知を受け取ります。 | |
product.merge | 製品が別の製品とマージされた場合に通知を受け取ります。 | |
product.propertyChange | 顧客のアカウント上の製品のいずれかで、指定したプロパティーが変更された場合に通知を受け取ります。 | |
line_item.creation | 顧客のアカウントで商品項目が作成された場合に通知を受け取ります。 | |
line_item.deletion | 顧客のアカウント上で商品項目が削除された場合に通知を受け取ります。 | |
line_item.associationChange | 商品項目と他のサポート対象のWebhookオブジェクト(コンタクト、会社、取引、チケット、商品項目、または製品)との間の関連付けが追加または削除された場合に通知を受け取ります。 | |
line_item.restore | 削除された商品項目が復元された場合に通知を受け取ります。 | |
line_item.merge | 商品項目が別の商品項目とマージされた場合に通知を受け取ります。 | |
line_item.propertyChange | 顧客のアカウント上の商品項目のいずれかで、指定したプロパティーが変更された場合に通知を受け取ります。 |
サブスクリプションタイプ | スコープ | 説明 |
---|---|---|
conversation.creation | conversations.read | アカウントで新しいスレッドが作成された場合に通知を受け取ります。 |
conversation.deletion | アカウントでスレッドがアーカイブされた場合、またはソフト削除された場合に通知を受け取ります。 | |
conversation.privacyDeletion | アカウントからスレッドが完全に削除された場合に通知を受け取ります。 | |
conversation.propertyChange | スレッドのプロパティーが変更された場合に通知を受け取ります。 | |
conversation.newMessage | スレッドで新しいメッセージを受信した場合に通知を受け取ります。 |
num_unique_conversion_events
hs_lastmodifieddate
assignedTo
**:**スレッドが再割り当てまたは割り当て解除されたコミュニケーション。propertyValue
は、スレッドが再割り当てされた場合はWebhookのペイロードに含まれるアクターIDとなり、スレッドが割り当て解除された場合は空白となります。status
**:**スレッドによって変更されたコミュニケーションのステータス。Webhookペイロード内のpropertyValue
は、OPEN
またはCLOSED
のいずれかになります。isArchived
**:**スレッドが復元されたコミュニケーション。Webhookペイロード内のpropertyValue
は、常にFALSE
となります。
開発者アカウントでのサブスクリプションの作成
HubSpot開発者アカウント内でWebhookサブスクリプションを作成できます。- HubSpotの開発者アカウントで、[アプリ]ダッシュボードに移動します。
- アプリの名前をクリックします。
- 左のサイドバーメニューで[Webhook]に移動します。
- [サブスクリプションを作成]をクリックします。
- 右側のパネルで[どのオブジェクトタイプを選びますか?]のドロップダウンメニューをクリックし、サブスクリプションを作成する対象のオブジェクトを選択します。
- [どのイベントについて知りたいですか?]のドロップダウンメニューをクリックし、イベントタイプを選択します。

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

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

APIを使用したサブスクリプションの作成
以下のエンドポイントを使用すれば、プログラムに従ってサブスクリプションを作成できます。これらのエンドポイントにリクエストを送信する際は、開発者APIキーを使用する必要があります。 subscriptionオブジェクトには、以下のフィールドを格納できます。フィールド | Description |
---|---|
id | サブスクリプションごとのIDを表す数値。 |
createdAt | サブスクリプションが作成された時間(ミリ秒単位)。 |
createdBy | サブスクリプションを作成したユーザーに関連付けられているユーザーID。 |
active | サブスクリプションが有効になっており、アクティブに通知をトリガーしているかどうかを示します。値にはtrue またはfalse を指定できます。 |
eventType | サブスクリプションのタイプ。このセクションの冒頭の表に、利用可能なサブスクリプションタイプが記載されています。 |
propertyName | サブスクリプションで変更をリッスンする対象のプロパティーの名前。これはプロパティー変更サブスクリプションタイプにのみ必要です。 |
サブスクリプションの取得
サブスクリプションのリストを取得するには、GET
リクエストをwebhooks/v3/{appId}/subscriptions
に送信します。
レスポンスとして、サブスクリプションを表すオブジェクトの配列が返されます。各オブジェクトには、サブスクリプションに関する情報(ID、作成日、タイプ、現在有効になっているかどうかなど)が格納されています。レスポンスの例を次に示します。
新規サブスクリプションの作成
新しいサブスクリプションを作成するには、POST
リクエストをwebhooks/v3/{appId}/subscriptions
に送信します。
リクエスト本文には、以下のフィールドを含めることができます。
フィールド | Description |
---|---|
eventType | サブスクリプションのタイプ。 |
propertyName | サブスクリプションで変更をリッスンする対象のプロパティーの名前。これはプロパティー変更サブスクリプションタイプにのみ必要です。 |
active | サブスクリプションが有効になっており、アクティブに通知をトリガーしているかどうかを示します。値にはtrue またはfalse を指定できます。 |
id
、createdAt
、createdByの
各フィールドは自動的に設定されるため、リクエスト本文に含める必要はありません。
以下のリクエスト本文の例をご参照ください。
eventType
には、前のセクションで定義されている有効なサブスクリプションタイプを指定する必要があります。また、propertyName
は有効なプロパティー名でなければなりません。顧客がこの値に一致するプロパティーを定義していない場合、このサブスクリプションによる通知は行われません。
サブスクリプションの更新
サブスクリプションを有効化または一時停止するには、PUT
リクエストをwebhooks/v3/{appId}/subscriptions/{subscriptionId}
に送信します。
リクエスト本文には、以下のフィールドを含めます。
フィールド | Description |
---|---|
active | サブスクリプションが有効になっており、アクティブに通知をトリガーしているかどうかを示します。値にはtrue またはfalse を指定できます。 |
サブスクリプションの削除
サブスクリプションを削除するには、DELETE
リクエストをwebhooks/v3/{appId}/subscriptions/{subscriptionId}
に送信します。
Webhookペイロード
アプリのWebhook設定で指定したターゲットURLにあるエンドポイントでは、HubSpotから送信される、JSON形式のデータを含むPOST
リクエストを受信します。
Webhookエンドポイントで取得しているリクエストが実際にHubSpotから送信されたものであることを保証するために、HubSpotは、X-HubSpot-Signature
ヘッダーを、貴社のアプリのクライアントシークレットとリクエスト詳細の組み合わせに基づくSHA-256ハッシュにします。詳しくはリクエスト署名の検証方法をご覧ください。
以下の表を使用して、ペイロードに含まれる可能性のあるフィールドの詳細を確認してください。
フィールド | Description |
---|---|
objectId | 作成/変更/削除されたオブジェクトのID。コンタクトの場合はコンタクトID、会社の場合は会社ID、取引の場合は取引ID、コミュニケーションの場合はスレッドIDになります。 |
propertyName | プロパティー変更サブスクリプションの場合にのみ送信される、変更されたプロパティーの名前。 |
propertyValue | プロパティー変更サブスクリプションの場合にのみ送信される、通知をトリガーしたプロパティーに新しく設定された値。 |
changeSource | 変更のソース。コンタクトプロパティー履歴に表示される変更ソースのいずれかを指定できます。 |
eventId | この通知をトリガーしたイベントのID。この値が一意であることは保証されません。 |
subscriptionId | イベントに関する通知をトリガーしたサブスクリプションのID。 |
portalId | イベントが発生した顧客のHubSpotアカウントID。 |
appId | アプリケーションのID。複数のアプリが同じWebhook URLを示している場合に使用されます。 |
occurredAt | このイベントが発生した時点のミリ秒単位のタイムスタンプ。 |
eventType | この通知の対象となっているイベントタイプ。「Webhookサブスクリプション」のセクションに記載されている、サポートされているサブスクリプションタイプのリストを確認してください。 |
attemptNumber | 0で始まる、貴社のサービスに通知するイベントの試行番号。サービスがタイムアウトした場合や、以下の「再試行」の項目に記載されているエラーが発生した場合、HubSpotは通知の再送信を試みます。 |
messageId | Webhookでスレッドへの新しいメッセージをリッスンしている場合にのみ送信されます。新しいメッセージのIDです。 |
messageType | Webhookでスレッドへの新しいメッセージをリッスンしている場合にのみ送信されます。送信するメッセージのタイプです。この値には、MESSAGE またはCOMMENT のいずれかを指定できます。 |
フィールド | Description |
---|---|
primaryObjectId | マージ先のID。このIDに該当するレコードが、マージ後に残されます。これは、HubSpotのマージUIでは右側に表示されるレコードに該当します。 |
mergedObjectIds | マージ先にマージされるレコードを表すIDの配列。これは、HubSpotのマージUIでは左側に表示されるレコードに該当します。 |
newObjectId | マージの結果として作成されたレコードのID。場合によっては、マージの結果として新しいレコードが作成されることがあるため、これはprimaryObjectId とは別のものです。 |
numberOfPropertiesMoved | マージ中に転送されたプロパティーの数を表す整数。 |
フィールド | Description |
---|---|
associationType | 関連付けは、次のいずれかのタイプになります。
|
fromObjectId | 関連付けの変更が行われたレコードのID。 |
toObjectId | 関連付けイベントのセカンダリーレコードのID。 |
associationRemoved | 以下を表すブール値:
|
isPrimaryAssociation | 以下を表すブール値:
|
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が返されます。