> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.jp/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks journal API

export const postmanIcon = <svg xmlns="http://www.w3.org/2000/svg" width={25} height={25} preserveAspectRatio="xMidYMid" viewBox="0 0 256 256">
    <path fill="#FF6C37" d="M254.953 144.253c8.959-70.131-40.569-134.248-110.572-143.206C74.378-7.912 10.005 41.616 1.047 111.619c-8.959 70.003 40.569 134.248 110.572 143.334 70.131 8.959 134.248-40.569 143.334-110.7Z" />
    <path fill="#FFF" d="m174.2 82.184-54.007 54.007-15.229-15.23c53.11-53.11 58.358-48.503 69.236-38.777Z" />
    <path fill="#FF6C37" d="M120.193 137.47c-.384 0-.64-.128-.895-.384l-15.358-15.229a1.237 1.237 0 0 1 0-1.792c54.007-54.006 59.638-48.887 71.028-38.649.255.256.383.512.383.896s-.128.64-.383.896l-54.007 53.878c-.128.256-.512.384-.768.384Zm-13.437-16.509 13.437 13.438 52.087-52.087c-9.47-8.446-15.87-11.006-65.524 38.65Z" />
    <path fill="#FFF" d="m135.679 151.676-14.718-14.718 54.007-54.006c14.46 14.59-7.167 38.265-39.29 68.724Z" />
    <path fill="#FF6C37" d="M135.679 152.956c-.384 0-.64-.128-.896-.384l-14.718-14.718c-.256-.256-.256-.512-.256-.896s.128-.64.384-.895L174.2 82.056a1.237 1.237 0 0 1 1.791 0 15.58 15.58 0 0 1 4.991 11.902c-.256 14.206-16.38 32.25-44.28 58.614-.383.256-.767.384-1.023.384Zm-12.926-15.998c8.19 8.319 11.646 11.646 12.926 12.926 21.5-20.476 42.36-41.464 42.488-55.926.128-3.327-1.152-6.655-3.327-9.214l-52.087 52.214Z" />
    <path fill="#FFF" d="m105.22 121.345 10.878 10.878c.256.256.256.512 0 .768-.128.128-.128.128-.256.128l-22.524 4.863c-1.152.128-2.175-.64-2.431-1.791-.128-.64.128-1.28.512-1.664l13.053-13.054c.256-.256.64-.384.768-.128Z" />
    <path fill="#FF6C37" d="M92.934 139.262c-1.92 0-3.327-1.536-3.327-3.455 0-.896.384-1.792 1.024-2.432l13.053-13.054c.768-.64 1.792-.64 2.56 0l10.878 10.878c.768.64.768 1.792 0 2.56-.256.256-.512.384-.896.512l-22.524 4.863c-.256 0-.512.128-.768.128Zm11.902-16.51-12.542 12.543c-.256.256-.383.64-.128 1.024.128.383.512.511.896.383l21.116-4.607-9.342-9.342Z" />
    <path fill="#FFF" d="M202.739 52.238c-8.191-7.935-21.373-7.679-29.307.64-7.935 8.318-7.679 21.372.64 29.306A20.678 20.678 0 0 0 199.155 85l-14.59-14.59 18.174-18.172Z" />
    <path fill="#FF6C37" d="M188.405 89.223c-12.158 0-22.012-9.854-22.012-22.012 0-12.158 9.854-22.012 22.012-22.012 5.631 0 11.134 2.176 15.23 6.143.255.256.383.512.383.896s-.128.64-.384.895L186.357 70.41l13.566 13.566c.512.512.512 1.28 0 1.792l-.256.256c-3.327 2.047-7.295 3.199-11.262 3.199Zm0-41.337c-10.75 0-19.452 8.703-19.324 19.453 0 10.75 8.702 19.452 19.452 19.324 2.944 0 5.887-.64 8.575-2.047l-13.438-13.31c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l17.149-17.15c-3.456-2.943-7.807-4.479-12.414-4.479Z" />
    <path fill="#FFF" d="m203.122 52.622-.255-.256-18.301 18.044 14.461 14.462c1.408-.896 2.816-1.92 3.967-3.072a20.51 20.51 0 0 0 .128-29.178Z" />
    <path fill="#FF6C37" d="M199.155 86.28c-.384 0-.64-.128-.896-.384l-14.589-14.59c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l18.173-18.173a1.237 1.237 0 0 1 1.791 0l.384.256c8.575 8.574 8.575 22.396.128 31.098-1.28 1.28-2.687 2.432-4.223 3.328-.384.128-.64.256-.768.256Zm-12.798-15.87 12.926 12.926c1.024-.64 2.048-1.536 2.816-2.304 7.294-7.294 7.678-19.196.64-26.875L186.357 70.41Z" />
    <path fill="#FFF" d="M176.375 84.488a7.879 7.879 0 0 0-11.134 0l-48.247 48.247 8.063 8.063 51.062-44.792c3.328-2.816 3.584-7.807.768-11.134-.256-.128-.384-.256-.512-.384Z" />
    <path fill="#FF6C37" d="M124.929 142.077c-.384 0-.64-.128-.896-.383l-8.063-8.063a1.237 1.237 0 0 1 0-1.792l48.247-48.247a9.115 9.115 0 0 1 12.926 0 9.115 9.115 0 0 1 0 12.926l-.384.384-51.063 44.792c-.128.255-.384.383-.767.383Zm-6.143-9.342 6.27 6.271 50.167-44.024c2.816-2.304 3.072-6.527.768-9.342-2.303-2.816-6.526-3.072-9.342-.768-.128.128-.256.256-.512.384l-47.351 47.48Z" />
    <path fill="#FFF" d="M80.009 187.637c-.512.256-.768.768-.64 1.28l2.175 9.214c.512 1.28-.256 2.816-1.663 3.2-1.024.384-2.176 0-2.816-.768l-14.077-13.95 45.943-45.943 15.87.256 10.75 10.75c-2.56 2.175-18.045 17.149-55.542 35.961Z" />
    <path fill="#FF6C37" d="M78.985 202.61c-1.024 0-2.048-.383-2.688-1.151l-13.95-13.95c-.255-.256-.383-.512-.383-.896 0-.383.128-.64.384-.895l45.944-45.944c.256-.256.64-.384.895-.384l15.87.256c.383 0 .64.128.895.384l10.75 10.75c.256.256.384.64.384 1.024s-.128.64-.512.896l-.895.767c-13.566 11.902-31.995 23.804-54.902 35.194l2.175 9.086c.384 1.664-.384 3.456-1.92 4.352-.767.384-1.407.512-2.047.512Zm-14.078-15.997 13.182 13.054c.384.64 1.152.896 1.792.512.64-.384.896-1.152.512-1.792l-2.176-9.214c-.256-1.152.256-2.176 1.28-2.688 22.652-11.39 40.952-23.163 54.39-34.81l-9.47-9.47-14.718-.256-44.792 44.664Z" />
    <path fill="#FFF" d="m52.11 197.62 11.006-11.007 16.38 16.381-26.107-1.791c-1.151-.128-1.92-1.152-1.791-2.304 0-.512.128-1.024.512-1.28Z" />
    <path fill="#FF6C37" d="m79.497 204.146-26.236-1.791c-1.92-.128-3.199-1.792-3.071-3.712.128-.768.384-1.535 1.024-2.047L62.22 185.59a1.237 1.237 0 0 1 1.792 0l16.38 16.38c.385.385.512.897.257 1.408-.256.512-.64.768-1.152.768Zm-16.381-15.74-10.11 10.11c-.384.255-.384.895 0 1.151.127.128.255.256.511.256l22.652 1.536-13.053-13.054ZM104.452 146.557c-.768 0-1.28-.64-1.28-1.28 0-.384.128-.64.384-.896l12.414-12.414a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-20.477 4.352h-.256Zm12.414-11.902-8.446 8.446 13.821-2.943-5.375-5.503Z" />
    <path fill="#FFF" d="m124.8 140.926-14.077 3.071c-1.024.256-2.048-.384-2.303-1.408-.128-.64 0-1.28.511-1.791l7.807-7.807 8.063 7.935Z" />
    <path fill="#FF6C37" d="M110.467 145.277a3.168 3.168 0 0 1-3.2-3.2c0-.895.385-1.663.897-2.303l7.806-7.807a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-14.078 3.072h-.64Zm6.399-10.622-6.91 6.91c-.257.257-.257.512-.129.768s.384.384.768.384l11.774-2.56-5.503-5.502ZM203.25 64.907c-.256-.767-1.151-1.151-1.92-.895-.767.255-1.151 1.151-.895 1.92 0 .127.128.255.128.383.768 1.536.512 3.455-.512 4.863-.512.64-.384 1.536.128 2.048.64.512 1.536.384 2.048-.256 1.92-2.432 2.303-5.503 1.023-8.063Z" />
  </svg>;

<Card title="Run in Postman" href="https://app.getpostman.com/run-collection/26126890-8f5582df-b553-403f-b001-6fe4cbafe4e4" icon={postmanIcon} horizontal={true} />

<DndSection>
  <DndModule numCols={10}>
    <div>
      # Webhook

      <RelatedApiLink />
    </div>
  </DndModule>

  <DndModule numCols={2} />
</DndSection>

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

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

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

Webhookは、アカウント単位ではなく[HubSpotアプリ](/apps/legacy-apps/public-apps/overview)（英語）に対して設定されます。[OAuthフロー](https://developers.hubspot.jp/docs/reference/api/app-management/oauth/tokens#initiate-an-integration-with-oauth-2.0)（英語）に従ってアプリをインストールする全てのアカウントが、そのフローのWebhookサブスクリプションに配信登録されます。

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

<Warning>
  **注：**

  * [非公開アプリでWebhookを管理する](/apps/legacy-apps/private-apps/create-and-edit-webhook-subscriptions-in-private-apps)こともできます。非公開アプリでは、非公開アプリのアプリ内設定でのみWebhookを編集できます。現在のところ、APIを介して編集することはできません。
  * コミュニケーションWebhookに登録するには、現在<u>ベータ版</u>となっている[コミュニケーション受信トレイおよびメッセージAPI](/api-reference/conversations-conversations-inbox-&-messages-v3/guide)にアクセスする必要があります
</Warning>

## スコープ

Webhookを使用してCRMイベントの配信登録を行うには、登録する対象のCRMオブジェクトタイプに対応する、イベントに関連付けられたスコープを求めるようにアプリを設定する必要があります。例えば、コンタクトイベントの配信登録を行う場合は、`crm.objects.contacts.read`スコープをリクエストする必要があります。

* 公開アプリの設定UIでサブスクリプションを作成する場合、サブスクリプションの作成を完了する前に、［新しいWebhook配信登録を作成］パネルで必要なスコープを追加するように求められます。
* `POST`リクエストを`/webhooks/v3/{appId}/subscriptions`エンドポイントに送信してサブスクリプションを作成する場合、レスポンスに含まれるエラーに、公開アプリの設定UIで設定する必要があるスコープの名前が示されます。
* アプリですでにWebhookを使用している場合、アクティブなWebhookサブスクリプションで必要とされているスコープを削除するには、その前に、該当するWebhookサブスクリプションを一時停止して削除する必要があります。
* Webhookサブスクリプションタイプごとに必要となるスコープは、[下にある表](#webhook-subscriptions)で確認できます。

[スコープの詳細](https://developers.hubspot.jp/docs/reference/api/app-management/oauth/tokens#initiate-an-integration-with-oauth-2.0#scopes)（英語）およびアプリの[認証認証URLの設定](https://developers.hubspot.jp/docs/reference/api/app-management/oauth/tokens#initiate-an-integration-with-oauth-2.0)（英語）については、OAuthのドキュメントをご覧ください。

## Webhookの設定

Webhookサブスクリプションを設定する前に、これらの通知の送信先URLを指定する必要があります。アプリのサブスクリプションを完全に設定する方法については、以下のセクションの手順に従ってください。

<Warning>
  **注：**

  * Webhook設定は最大5分までキャッシュできます。WebhookのURL、同時接続数上限、またはサブスクリプションの設定を変更すると、変更が適用されるまでに最大5分かかる場合があります。
  * HubSpotは、アプリをインストールしたアカウントに関連付けられたサブスクリプション イベント データを送信するときに、10件のリクエストの同時実行制限を設定します。この同時実行制限は、HubSpotが一度に試行する実行中リクエストの最大数です。各リクエストには最大100件のイベントを含めることができます。
</Warning>

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

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

* 開発者アカウントで、［アプリ］ダッシュボードに移動します。
* Webhookを設定する対象のアプリの**名前**をクリックします。

<Frame>
  <img src="https://developers.hubspot.com/hs-fs/hubfs/app_id_list.png?width=600&name=app_id_list.png" alt="app_id_list" />
</Frame>

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

<Frame>
  <img src="https://developers.hubspot.com/hs-fs/hubfs/webhook_settings.png?width=600&name=webhook_settings.png" alt="webhook_settings" />
</Frame>

* ［保存］をクリックします。

### APIによる設定の管理

以下のエンドポイントと[開発者APIキー](https://developers.hubspot.com/docs/apps/developer-platform/build-apps/authentication/overview)を使用することで、アプリのWebhook設定をプログラムによって構成できます。

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

リクエストには[アプリID](/apps/legacy-apps/public-apps/overview#find-an-app’s-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リクエストの最大数。                                               |

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

```json theme={null}
// 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トリガーの受信も開始されます。

全ての`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`を表します。

サポートされているサブスクリプションタイプは次のとおりです。API経由でサブスクリプションを作成する際に、これらのタイプを`eventType`フィールドの値として使用できます。

| サブスクリプションタイプ                  | 必要なスコープ                                                                                                                      | 説明                                                                                           |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| `contact.creation`            | `crm.objects.contacts.read`                                                                                                  | 顧客のアカウントでコンタクトが作成された場合に通知を受け取ります。                                                            |
| `contact.deletion`            | 顧客のアカウントからコンタクトが削除された場合に通知を受け取ります。                                                                                           |                                                                                              |
| `contact.merge`               | コンタクトが別のコンタクトとマージされた場合に通知を受け取ります。                                                                                            |                                                                                              |
| `contact.associationChange`   | コンタクトと他のサポート対象のWebhookオブジェクト（コンタクト、会社、取引、チケット、商品項目、または製品）との間の関連付けが追加または削除された場合に通知を受け取ります。                                    |                                                                                              |
| `contact.restore`             | 削除されたコンタクトが復元された場合に通知を受け取ります。                                                                                                |                                                                                              |
| `contact.privacyDeletion`     | [プライバシー規則への順守](https://developers.hubspot.jp/docs/guides/api/app-management/webhooks/overview)を理由としてコンタクトが削除された場合に通知を受け取ります。 |                                                                                              |
| `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`    | 顧客のアカウント上の商品項目のいずれかで、指定したプロパティーが変更された場合に通知を受け取ります。                                                                           |                                                                                              |

現在<u>ベータ版</u>となっている[コミュニケーション受信トレイおよびメッセージAPI](/api-reference/conversations-conversations-inbox-&-messages-v3/guide)を使用している場合は、以下のコミュニケーション サブスクリプション タイプの配信登録を行うことができます。

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

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

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

* `num_unique_conversion_events`
* `hs_lastmodifieddate`

現在<u>ベータ版</u>となっている[コミュニケーション受信トレイおよびメッセージAPI](/api-reference/conversations-conversations-inbox-&-messages-v3/guide)を使用している場合、以下のプロパティーを使用できます。

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

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

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

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

<Frame>
  <img src="https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/create-contact-create-subscription.png" alt="create-contact-create-subscription" />
</Frame>

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

<Frame>
  <img src="https://developers.hubspot.com/hs-fs/hubfs/webhook_select_properties.png?width=450&name=webhook_select_properties.png" alt="" />
</Frame>

* ［配信登録］をクリックします。

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

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

<Frame>
  <img src="https://www.hubspot.com/hubfs/Knowledge_Base_2021/Developer/activate-subscription.png" alt="activate-subscription" />
</Frame>

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

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

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

| フィールド          | Description                                                                                                                                                     |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`           | サブスクリプションごとのIDを表す数値。                                                                                                                                            |
| `createdAt`    | サブスクリプションが作成された時間（ミリ秒単位）。                                                                                                                                       |
| `createdBy`    | サブスクリプションを作成したユーザーに関連付けられているユーザーID。                                                                                                                             |
| `active`       | サブスクリプションが有効になっており、アクティブに通知をトリガーしているかどうかを示します。値には`true`または`false`を指定できます。                                                                                       |
| `eventType`    | サブスクリプションのタイプ。このセクションの冒頭の[表](https://developers.hubspot.jp/docs/guides/api/app-management/webhooks/overview#webhook-subscriptions)に、利用可能なサブスクリプションタイプが記載されています。 |
| `propertyName` | サブスクリプションで変更をリッスンする対象のプロパティーの名前。これはプロパティー変更サブスクリプションタイプにのみ必要です。                                                                                                 |

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

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

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

```json theme={null}
// 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`に送信します。

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

| フィールド          | Description                                                               |
| -------------- | ------------------------------------------------------------------------- |
| `eventType`    | サブスクリプションのタイプ。                                                            |
| `propertyName` | サブスクリプションで変更をリッスンする対象のプロパティーの名前。これはプロパティー変更サブスクリプションタイプにのみ必要です。           |
| `active`       | サブスクリプションが有効になっており、アクティブに通知をトリガーしているかどうかを示します。値には`true`または`false`を指定できます。 |

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

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

```json theme={null}
// 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}`に送信します。

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

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

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

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

## Webhookペイロード

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

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

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

| フィールド            | Description                                                                                                                                                   |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `objectId`       | 作成／変更／削除されたオブジェクトのID。コンタクトの場合はコンタクトID、会社の場合は会社ID、取引の場合は取引ID、コミュニケーションの場合は[スレッドID](/api-reference/conversations-conversations-inbox-&-messages-v3/guide)になります。 |
| `propertyName`   | プロパティー変更サブスクリプションの場合にのみ送信される、変更されたプロパティーの名前。                                                                                                                  |
| `propertyValue`  | プロパティー変更サブスクリプションの場合にのみ送信される、通知をトリガーしたプロパティーに新しく設定された値。                                                                                                       |
| `changeSource`   | 変更のソース。コンタクトプロパティー履歴に表示される変更ソースのいずれかを指定できます。                                                                                                                  |
| `eventId`        | この通知をトリガーしたイベントのID。この値が一意であることは保証されません。                                                                                                                       |
| `subscriptionId` | イベントに関する通知をトリガーしたサブスクリプションのID。                                                                                                                                |
| `portalId`       | イベントが発生した顧客の[HubSpotアカウントID](https://knowledge.hubspot.com/account-management/manage-multiple-hubspot-accounts#check-your-current-account)。                   |
| `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`      | 関連付けは、次のいずれかのタイプになります。<ul><li>`CONTACT_TO_COMPANY`</li><li>`CONTACT_TO_DEAL`</li><li>`CONTACT_TO_TICKET`</li><li>`CONTACT_TO_CONTACT`<br /><br /></li><li>`COMPANY_TO_CONTACT`</li><li>`COMPANY_TO_DEAL`</li><li>`COMPANY_TO_TICKET`</li><li>`COMPANY_TO_COMPANY`<br /><br /></li><li>`DEAL_TO_CONTACT`</li><li>`DEAL_TO_COMPANY`</li><li>`DEAL_TO_LINE_ITEM`</li><li>`DEAL_TO_TICKET`</li><li>`DEAL_TO_DEAL`<br /><br /></li><li>`TICKET_TO_CONTACT`</li><li>`TICKET_TO_COMPANY`</li><li>`TICKET_TO_DEAL`</li><li>`TICKET_TO_TICKET`<br /><br /></li><li>`LINE_ITEM_TO_DEAL`</li></ul> |
| `fromObjectId`         | 関連付けの変更が行われたレコードのID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `toObjectId`           | 関連付けイベントのセカンダリーレコードのID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `associationRemoved`   | 以下を表すブール値：<ul><li>`true`：関連付けの削除によってWebhookがトリガーされました。</li><li>`false`：関連付けの作成によってWebhookがトリガーされました。</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `isPrimaryAssociation` | 以下を表すブール値：<ul><li>`true`：セカンダリーレコードは、関連付けの変更を行ったレコードの[プライマリーの関連付け](https://knowledge.hubspot.com/records/associate-records#primary-company-information)です。</li><li>`false`：レコードは、関連付けの変更を行ったレコードのプライマリーの関連付けでは<u>ありません</u>。 </li></ul>\*\*注意：\*\*2つのオブジェクトレコード間にプライマリーの関連付けインスタンスを作成すると、対応する非プライマリーの関連付けも作成されます。これにより、2つのWebhookメッセージが生成される可能性があります。                                                                                                                                                                                                                                    |

```json theme={null}
//
[
  {
    "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に準拠した削除に関するナレッジベース記事](https://knowledge.hubspot.com/privacy-and-consent/how-do-i-perform-a-gdpr-delete-in-hubspot)をご覧ください。

`contact.privacyDeletion`配信カテゴリー(サブスクリプションタイプ)の配信登録を行うことにより、ユーザーがプライバシーに準拠するためにコンタクトを削除した時点で、Webhook通知を受信できます。

プライバシー削除通知には特別な動作があります。

* プライバシー削除イベントによってコンタクト削除イベントもトリガーされるため、両方のイベントの受信を登録している場合は2つの通知を受け取ります。
* これらの通知は、必ずしも特定の順序で送信されたり、同じ一括配信で送信されたりするわけではありません。個別のメッセージとの照合にはオブジェクトIDを使用する必要があります。

## セキュリティー

Webhookのエンドポイントで取得しているリクエストが実際にHubSpotから送信されたことを保証するために、HubSpotは`X-HubSpot-Signature`ヘッダーに、アプリのクライアントシークレットと、HubSpotが送信するリクエスト本文を連結して作成したSHA-256ハッシュを取り込みます。

この署名を検証するには、アプリケーションのアプリシークレットと、処理中のリクエストに含まれる未解析のリクエスト本文を連結して生成されたSHA-256ハッシュを取得します。生成されたハッシュと`X-HubSpot-Signature`の値を比較します。これらの値が一致する場合、リクエストはHubSpotから送信されたことが検証されます。一致しない場合、アプリシークレットを知っている他のユーザーからリクエストが送信されたことになります。従って、この値の機密保持には十分ご注意ください。

これらの値が一致しない場合、転送中のリクエストの改ざん、またはエンドポイントに対してWebhook通知を用いたなりすましが発生した恐れがあります。

[署名の検証](/apps/legacy-apps/authentication/validating-requests)について詳細を確認してください。

## 再試行

貴社のサービスで通知処理に問題が発生した場合、常に、HubSpotから失敗した通知の再送信が最大10回試行されます。

HubSpotが再試行する場合は次のとおりです。

* \*\*接続失敗：\*\*指定されたWebhook URLへのHTTP接続をHubSpotが開始できない場合。
* \*\*タイムアウト：\*\*貴社のサービスから一括の通知に対するレスポンスの返送に5秒を超える時間がかかった場合
* \*\*エラーコード：\*\*貴社のサービスがHTTPステータスコード（4xxまたは5xx）でレスポンスした場合

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

## 制限

HubSpotがWebhookサブスクリプションを介してお客様のサービスに送信する`POST`リクエストは、お客様の[アプリのAPIレート制限](/apps/legacy-apps/api-usage/usage-details)には<u>計上されません</u>。

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

```json theme={null}
//
{
  "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"
}
```
