Webhook APIの概要をご紹介しています。連携機能がインストールされている場合、このAPIを使用してHubSpotアカウント上で発生するイベントの通知を登録できます。
crm.objects.contacts.read
スコープをリクエストする必要があります。
POST
リクエストを/webhooks/v3/{appId}/subscriptions
エンドポイントに送信してサブスクリプションを作成する場合、レスポンスに含まれるエラーに、公開アプリの設定UIで設定する必要があるスコープの名前が示されます。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リクエストの最大数。 |
associationChange
Webhookサブスクリプションに共通して、Webhookは関連付けの両方の対象に対する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
となります。フィールド | 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}
に送信します。
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が同じ通知を複数回送信する場合があります。
contact.privacyDeletion
配信カテゴリー(サブスクリプションタイプ)の配信登録を行うことにより、ユーザーがプライバシーに準拠するためにコンタクトを削除した時点で、Webhook通知を受信できます。
プライバシー削除通知には特別な動作があります。
X-HubSpot-Signature
ヘッダーに、アプリのクライアントシークレットと、HubSpotが送信するリクエスト本文を連結して作成したSHA-256ハッシュを取り込みます。
この署名を検証するには、アプリケーションのアプリシークレットと、処理中のリクエストに含まれる未解析のリクエスト本文を連結して生成されたSHA-256ハッシュを取得します。生成されたハッシュとX-HubSpot-Signature
の値を比較します。これらの値が一致する場合、リクエストはHubSpotから送信されたことが検証されます。一致しない場合、アプリシークレットを知っている他のユーザーからリクエストが送信されたことになります。従って、この値の機密保持には十分ご注意ください。
これらの値が一致しない場合、転送中のリクエストの改ざん、またはエンドポイントに対してWebhook通知を用いたなりすましが発生した恐れがあります。
署名の検証について詳細を確認してください。
POST
リクエストは、お客様のアプリのAPIレート制限には計上されません。
1つのアプリあたり最大1,000件のサブスクリプションを作成できます。この制限を超えて作成しようとすると、以下の本文を含む400 bad requestが返されます。