Webhook

連携機能がインストールされている場合、Webhook APIを使用して、HubSpotアカウント上で発生したイベントを受信できます。接続されたアカウントでイベントが発生したときにAPI呼び出しを実行する代わりに、設定したエンドポイントにHubSpotからHTTPリクエストを送信します。受信を登録するイベントは、アプリの設定、または以下で詳述するエンドポイントを使用して設定できます。場合によっては、定期的に変更をポーリングするよりも、Webhookを使用する方法のほうが拡張性に優れています(特にインストールベースが大規模なアプリの場合)。

Webhook APIの使用にあたり、次の要件を満たす必要があります。

  • 通知を受ける対象のイベントに登録し、通知の送信先URLを指定することにより、Webhookを使用するHubSpotアプリを設定してあること。アプリの作成方法の詳細については、前提条件に関するドキュメント(英語)をご覧ください。
  • このドキュメントに規定されたWebhookペイロードを処理できる、公開URLのセキュア(HTTPS)エンドポイントが展開されていること。

Webhookは、アカウント単位ではなくHubSpotアプリ(英語)に対して設定されます。OAuthフロー(英語)に従ってアプリをインストールする全てのアカウントが、そのフローのWebhookサブスクリプションに配信登録されます。

CRMオブジェクト(コンタクト、会社、取引、チケット、製品、商品項目など)のイベントとコミュニケーションイベントに対して配信登録できます。

Please note: to subscribe to conversations webhooks, you need access to the conversations inbox and messages APIs, which is currently in beta.

スコープ

Webhookを使用してCRMイベントの配信登録を行うには、crm.objects.contacts.readスコープを求めるようにアプリを設定する必要があります。また、コミュニケーションイベントの配信登録を行うには、conversations.readスコープを求めるようにアプリを構成する必要があります。

Webhookサブスクリプションを作成するには、その前に、これらのスコープを設定する必要があります。スコープの詳細(英語)およびアプリの認証認証URLの設定(英語)については、OAuthのドキュメントをご覧ください。

アプリが既にWebhookを使用している場合、アプリから全てのWebhookサブスクリプションを削除するまでは、crm.objects.contacts.readスコープまたはconversations.readスコープを削除できません。

Webhookの設定

Please note: webhook settings can be cached for up to five minutes. When making changes to the webhook URL, concurrency limits, or subscription settings, it may take up to five minutes to see your changes go into effect.

Webhookサブスクリプションを設定する前に、これらの通知の送信先URLを指定する必要があります。また、イベントスロットリング制限も調整できます。これは、エンドポイントで処理できる同時リクエスト数の上限です。

スロットル制限は同時処理の制限であるため、リクエストに対するレスポンスが返されると同時にアクティブなリクエストの合計数が1つ減り、別のリクエストを送信できるようになります。例えば、10秒あたり1リクエストという制限を設けている場合、HubSpotが1つのリクエストを送信してから次のリクエストを送信するのは、レスポンスを受け取った時点、または別のリクエストが送信されてから10秒経過した時点のどちらかの内の早い方となります。

このレート制限の設定は、HubSpotがAPIに過大な負荷をかけずに通知をできるだけ早く送信するために役立ちます。

  • この制限を低く設定しすぎると、APIに送信される通知の数が多い場合は上限数に達した状態が数秒以上続いて、通知の送信がタイムアウトする可能性があります。その場合、通知に遅延が発生します。 
  • 制限が高すぎると、エンドポイントで利用可能なリソースが飽和状態になり、レスポンスの低速化、通知の遅延、またはエンドポイントの応答不可といった問題が発生することがあります。

開発者アカウントでの設定の管理

 開発者アカウントのアプリの設定ページでは、URLとスロットリング制限を管理できます。

  • 開発者アカウントで、[アプリ]ダッシュボードに移動します。
  • Webhookを設定する対象のアプリの名前をクリックします。 
    app_id_list
  • 左のサイドバーメニューで[Webhook]に移動します。
  • [ターゲットURL]フィールドに、イベントがトリガーされたときにHubSpotでPOSTリクエストを送信する宛先のURLを入力します。
  • [イベントの抑制]設定を使用して、HubSpotで送信を試みるイベントの最大数を調整します。 

webhook_settings

  • [保存]をクリックします。 

APIによる設定の管理

以下のエンドポイントと開発者APIキーを使用することで、アプリのWebhook設定をプログラムによって構成できます。

アプリに現在構成されているWebhookの設定を表示するには、GETリクエストをwebhooks/v3/{appId}/settingsに送信します。

リクエストにはアプリID(英語)を含める必要があります。アプリIDは、[アプリ]ダッシュボード内のアプリの名前の下、またはアプリの設定の[認証]タブで確認できます。

settingsオブジェクトは、以下のフィールドからなります。

Use this table to describe parameters / fields
フィールドDescription
webhookUrl

HubSpotがWebhook通知を送信する宛先のURL。このURLはHTTPS経由で提供する必要があります。 

maxConcurrentRequests

Webhook URLでの同時処理の制限。このフィールドには5より大きい値を設定する必要があります。 

上記の設定を編集するには、PUTリクエストをwebhooks/v3/{appId}/settingsに送信します。このリクエスト本文には、以下のフィールドを含めます。

Use this table to describe parameters / fields
フィールドDescription
targetUrl

HubSpotがイベントペイロードを配信するために呼び出す、一般公開されたURL。

throttling

このオブジェクトでWebhookスロットリングの詳細を構成します。throttlingオブジェクト内にはperiodフィールドとmaxConcurrentRequestsフィールドがあります。 

period

この設定で使用する時間の単位。SECONDLY(1秒あたり)またはROLLING_MINUTE(1分あたり)のいずれかの値を指定できます。

maxConcurrentRequests

periodで指定された一定の期間にHubSpotがアプリへの送信を試行するHTTPリクエストの最大数。

以下に、リクエストの例を示します。

// PUT request to https://api.hubapi.com/webhooks/v3/{appId}/settings { "throttling": { "period": "SECONDLY", "maxConcurrentRequests": 10 }, "targetUrl": "https://www.example.com/hubspot/target" }

Webhookサブスクリプション

Webhook URLとイベントスロットリングを設定したら、1つ以上のサブスクリプションを作成する必要があります。WebhookサブスクリプションでHubSpotに対し、特定のアプリで受信するイベントを指示します。

サブスクリプションは、貴社の連携機能をインストールした全ての顧客に適用されます。つまり、必要なサブスクリプションを指定するのは一度だけでよいことになります。アプリケーションでサブスクリプションを有効にすると、そのアプリケーションをインストールした全ての顧客のWebhookの受信が自動的に開始されます。また、連携機能によって新しい顧客からのWebhookトリガーの受信も開始されます。

サポートされているサブスクリプションタイプは次のとおりです。API経由でサブスクリプションを作成する際に、これらのタイプを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 顧客のアカウント上の商品項目のいずれかで、指定したプロパティーが変更された場合に通知を受け取ります。

 

 

現在ベータ版となっているコミュニケーション受信トレイおよびメッセージAPIを使用している場合は、以下のコミュニケーション サブスクリプション タイプの配信登録を行うことができます。 

 
サブスクリプションタイプ スコープ 説明
conversation.creation conversations.read アカウントで新しいスレッドが作成された場合に通知を受け取ります。 
conversation.deletion アカウントでスレッドがアーカイブされた場合、またはソフト削除された場合に通知を受け取ります。
conversation.privacyDeletion アカウントからスレッドが完全に削除された場合に通知を受け取ります。
conversation.propertyChange スレッドのプロパティーが変更された場合に通知を受け取ります。
conversation.newMessage スレッドで新しいメッセージを受信した場合に通知を受け取ります。

プロパティー変更サブスクリプションの場合、通知の対象とするプロパティーを指定する必要があります。複数のプロパティー変更サブスクリプションを指定できます。サブスクリプションで指定されているプロパティーが顧客のアカウントに存在しない場合、顧客からそのプロパティーに関するWebhookを受け取ることはありません。

一部のプロパティーは、CRMプロパティー変更サブスクリプションでは使用できません。該当するプロパティーは次の通りです。

  • num_unique_conversion_events
  • hs_lastmodifieddate

現在ベータ版となっているコミュニケーション受信トレイおよびメッセージAPIを使用している場合、以下のプロパティーを使用できます。

  • assignedToスレッドが再割り当てまたは割り当て解除されたコミュニケーション。propertyValueは、スレッドが再割り当てされた場合はWebhookのペイロードに含まれるアクターIDとなり、スレッドが割り当て解除された場合は空白となります。
  • statusスレッドによって変更されたコミュニケーションのステータス。Webhookペイロード内のpropertyValueは、OPENまたはCLOSEDのいずれかになります。
  • isArchivedスレッドが復元されたコミュニケーション。Webhookペイロード内のpropertyValueは、常にFALSEとなります。 

開発者アカウントでのサブスクリプションの作成

HubSpot開発者アカウント内でWebhookサブスクリプションを作成できます。 

  • HubSpotの開発者アカウントで、[アプリ]ダッシュボードに移動します。 
  • アプリの名前をクリックします。 
  • 左のサイドバーメニューで[Webhook]に移動します。 
  • [サブスクリプションを作成]をクリックします。 
  • 右側のパネルで[どのオブジェクトタイプを選びますか?]のドロップダウンメニューをクリックし、サブスクリプションを作成する対象のオブジェクトを選択します。 
  • [どのイベントについて知りたいですか?]のドロップダウンメニューをクリックし、イベントタイプを選択します。 

create-contact-create-subscription

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

Webhook設定にサブスクリプションが表示されます。新しいサブスクリプションは一時停止状態で作成されるため、Webhookが送信されるようにするためにはサブスクリプションを有効にする必要があります。

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

activate-subscription

APIを使用したサブスクリプションの作成

以下のエンドポイントを使用すれば、プログラムに従ってサブスクリプションを作成できます。これらのエンドポイントにリクエストを送信する際は、開発者APIキーを使用する必要があります。 

subscriptionオブジェクトには、以下のフィールドを格納できます。

Use this table to describe parameters / fields
フィールドDescription
id

サブスクリプションごとのIDを表す数値。 

createdAt

サブスクリプションが作成された時間(ミリ秒単位)。 

createdBy

サブスクリプションを作成したユーザーに関連付けられているユーザーID。 

active

サブスクリプションが有効になっており、アクティブに通知をトリガーしているかどうかを示します。値にはtrueまたはfalseを指定できます。 

eventType

サブスクリプションのタイプ。このセクションの冒頭のに、利用可能なサブスクリプションタイプが記載されています。 

propertyName

サブスクリプションで変更をリッスンする対象のプロパティーの名前。これはプロパティー変更サブスクリプションタイプにのみ必要です。 

サブスクリプションの取得

サブスクリプションのリストを取得するには、GETリクエストをwebhooks/v3/{appId}/subscriptionsに送信します。

レスポンスとして、サブスクリプションを表すオブジェクトの配列が返されます。各オブジェクトには、サブスクリプションに関する情報(ID、作成日、タイプ、現在有効になっているかどうかなど)が格納されています。レスポンスの例を次に示します。

// Example GET request to https://api.hubapi.com/webhooks/v3/{appId}/subscriptions [ { "id": 25, "createdAt": 1461704185000, "createdBy": 529872, "eventType":"contact.propertyChange", "propertyName": "lifecyclestage", "active": false }, { "id": 59, "createdAt": 1462388498000, "createdBy": 529872, "eventType":"company.creation", "active": false }, { "id": 108, "createdAt": 1463423132000, "createdBy": 529872, "eventType": "deal.creation", "active": true } ]

新規サブスクリプションの作成

新しいサブスクリプションを作成するには、POSTリクエストをwebhooks/v3/{appId}/subscriptionsに送信します。

リクエスト本文には、以下のフィールドを含めることができます。

Use this table to describe parameters / fields
フィールドDescription
eventType

サブスクリプションのタイプ。 

propertyName

サブスクリプションで変更をリッスンする対象のプロパティーの名前。これはプロパティー変更サブスクリプションタイプにのみ必要です。 

active

サブスクリプションが有効になっており、アクティブに通知をトリガーしているかどうかを示します。値にはtrueまたはfalseを指定できます。 

idcreatedAtcreatedByの各フィールドは自動的に設定されるため、リクエスト本文に含める必要はありません。

以下のリクエスト本文の例をご参照ください。 

// Example POST request to https://api.hubapi.com/webhooks/v3/{appId}/subscriptions { "eventType":"company.propertyChange", "propertyName": "companyname", "active": false }

eventTypeには、前のセクションで定義されている有効なサブスクリプションタイプを指定する必要があります。また、propertyNameは有効なプロパティー名でなければなりません。顧客がこの値に一致するプロパティーを定義していない場合、このサブスクリプションによる通知は行われません。

サブスクリプションの更新

サブスクリプションを有効化または一時停止するには、PUTリクエストをwebhooks/v3/{appId}/subscriptions/{subscriptionId}に送信します。

リクエスト本文には、以下のフィールドを含めます。

Use this table to describe parameters / fields
フィールドDescription
active

サブスクリプションが有効になっており、アクティブに通知をトリガーしているかどうかを示します。値にはtrueまたはfalseを指定できます。 

サブスクリプションの削除

サブスクリプションを削除するには、DELETEリクエストをwebhooks/v3/{appId}/subscriptions/{subscriptionId}に送信します。

Webhookペイロード

アプリのWebhook設定で指定したターゲットURLにあるエンドポイントでは、HubSpotから送信される、JSON形式のデータを含むPOSTリクエストを受信します。

Webhookエンドポイントで取得しているリクエストが実際にHubSpotから送信されたものであることを保証するために、HubSpotは、X-HubSpot-Signatureヘッダーを、貴社のアプリのクライアントシークレットとリクエスト詳細の組み合わせに基づくSHA-256ハッシュにします。詳しくはリクエスト署名の検証方法をご覧ください。

以下の表を使用して、ペイロードに含まれる可能性のあるフィールドの詳細を確認してください。

General
フィールド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のいずれかを指定できます。

 

Merge events
フィールドDescription
primaryObjectId

マージ先のID。このIDに該当するレコードが、マージ後に残されます。これは、HubSpotのマージUIでは右側に表示されるレコードに該当します。

mergedObjectIds

マージ先にマージされるレコードを表すIDの配列。これは、HubSpotのマージUIでは左側に表示されるレコードに該当します。

newObjectId

マージの結果として作成されたレコードのID。場合によっては、マージの結果として新しいレコードが作成されることがあるため、これはprimaryObjectIdとは別のものです。

numberOfPropertiesMoved

マージ中に転送されたプロパティーの数を表す整数。

 

Association change events
フィールドDescription
associationType

関連付けは、次のいずれかのタイプになります。

  • CONTACT_TO_COMPANY
  • CONTACT_TO_DEAL
  • CONTACT_TO_TICKET
  • CONTACT_TO_CONTACT

  • COMPANY_TO_CONTACT
  • COMPANY_TO_DEAL
  • COMPANY_TO_TICKET
  • COMPANY_TO_COMPANY

  • DEAL_TO_CONTACT
  • DEAL_TO_COMPANY
  • DEAL_TO_LINE_ITEM
  • DEAL_TO_TICKET
  • DEAL_TO_DEAL

  • TICKET_TO_CONTACT
  • TICKET_TO_COMPANY
  • TICKET_TO_DEAL
  • TICKET_TO_TICKET

  • LINE_ITEM_TO_DEAL
fromObjectId

関連付けの変更が行われたレコードのID。

toObjectId

関連付けイベントのセカンダリーレコードのID。

associationRemoved

以下を表すブール値:

  • true:関連付けの削除によってWebhookがトリガーされました。
  • false:関連付けの作成によってWebhookがトリガーされました。
isPrimaryAssociation

以下を表すブール値:

  • true:セカンダリーレコードは、関連付けの変更を行ったレコードのプライマリーの関連付けです。
  • false:レコードは、関連付けの変更を行ったレコードのプライマリーの関連付けではありません。 

注意:2つのオブジェクトレコード間にプライマリーの関連付けインスタンスを作成すると、対応する非プライマリーの関連付けも作成されます。これにより、2つのWebhookメッセージが生成される可能性があります。

// [ { "objectId": 1246965, "propertyName": "lifecyclestage", "propertyValue": "subscriber", "changeSource": "ACADEMY", "eventId": 3816279340, "subscriptionId": 25, "portalId": 33, "appId": 1160452, "occurredAt": 1462216307945, "eventType":"contact.propertyChange", "attemptNumber": 0 }, { "objectId": 1246978, "changeSource": "IMPORT", "eventId": 3816279480, "subscriptionId": 22, "portalId": 33, "appId": 1160452, "occurredAt": 1462216307945, "eventType": "contact.creation", "attemptNumber": 0 } ]

上に示されているように、単一のリクエストによって複数のオブジェクトからなる配列が返されるはずです。一括処理のサイズはさまざまですが、通知は100件未満になります。短時間に多数のイベントが発生した場合に、HubSpotは複数の通知を送信します。例えば、新しいコンタクトの受信を登録している状態で、顧客が多数のコンタクトをインポートした場合、HubSpotはリクエストに対して1つではなく、一括でインポートされたコンタクトに対して複数の通知を送信します。

HubSpotは、ユーザーがこれらの通知をイベントの発生順に受信することを保証できません。イベントが通知の発生をトリガーしたタイミングを判定するには、各通知の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)でレスポンスした場合

通知の送信は最大で10回再試行されます。再試行は、24時間にわたりリクエストの送信間隔を変えながら実行されます。失敗が同時に多発した場合の再試行時刻が完全に同じにならないように、個々の通知にある程度のばらつきが確保されます。

制限

1つのアプリあたり最大1,000件のサブスクリプションを作成できます。この制限を超えて作成しようとすると、以下の本文を含む400 bad requestが返されます。

// { "status": "error", "message": "Couldn't create another subscription. You've reached the maximum number allowed per application (1000).", "correlationId": "2c9beb86-387b-4ff6-96f7-dbb486c00a95", "requestId": "919c4c84f66769e53b2c5713d192fca7" }

参考になりましたか?
こちらのフォームではドキュメントに関するご意見をご提供ください。HubSpotがご提供しているヘルプはこちらでご確認ください。