> ## 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.

# マーケティング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>;

export const ScopesList = ({scopes = [], description = "この API には、次のいずれかのスコープが必要です。"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

<Card title="Run in Postman" href="https://app.getpostman.com/run-collection/26126890-66991673-f7f9-4430-8c49-ddd3b01141b9" icon={postmanIcon} horizontal={true} />

マーケティングイベントは、コンタクトおよび会社と同じCRMオブジェクトです。ウェビナーなどのマーケティングイベントを、イベントに登録・参加したコンタクトと共にトラッキングすることができます。この記事では、マーケティングイベントAPIを使用してマーケティングイベントをアプリと連携させる方法について詳しく説明します。

<Accordion title="スコープ要件">
  <ScopesList
    scopes={[
  'crm.objects.marketing_events.read',
  'crm.objects.marketing_events.write'
]}
  />
</Accordion>

## この記事では、以下の内容について説明します。

* [スコープの要件](#scope-requirements)
* [内部IDエンドポイントと外部IDエンドポイントの相違点](#differences-between-internal-id-and-external-id-endpoints)
* [イベント管理エンドポイント](#create-and-update-events)
* [イベント参加エンドポイント](#event-attendance-endpoints)
* [参加者状態エンドポイント](#participant-state-endpoints)
* [リストの関連付けエンドポイント](#list-association-endpoints)
* [アプリ設定の構成](#configure-app-settings)
  * [ステップ1：アプリでAPIを作成する](#step-1-create-an-api-in-your-app)
  * [ステップ2：HubSpotにAPIへのURLパスを提供する](#step-2-provide-hubspot-with-the-url-path-to-your-api)

## スコープの要件

いずれかのマーケティング イベント エンドポイントにAPIリクエストを送信するには、次の[スコープ](/apps/legacy-apps/authentication/working-with-oauth#scopes)が必要です。

* `crm.objects.marketing_events.read`：マーケティングイベントおよび参加データを取得する権限を付与します。
* `crm.objects.marketing_events.write`：マーケティングイベント情報を作成、削除、変更する権限を付与します。

アプリによって行われた呼び出しを認証する際は、[非公開アプリのアクセストークン](/apps/legacy-apps/private-apps/overview)または[OAuth](/api-reference/auth-oauth-v1/guide)のいずれかを使用できます。[認証方式](/apps/legacy-apps/authentication/intro-to-auth)の詳細をご確認ください。利用可能なエンドポイントの完全なリストについては、[リファレンスドキュメント](/api-reference/marketing-marketing-events-v3/guide)をご確認ください。

## 内部IDエンドポイントと外部IDエンドポイントの相違点

以下に示す多くのエンドポイントでは、フェッチ（取得）または更新するイベントを識別する2つの異なる方法を提供しています。類似したエンドポイントの最終結果は同じである可能性がありますが、主に指定する関連IDが異なります。

* **外部IDを使用するエンドポイント**: `externalEventId`パラメーターと`externalAccountId`パラメーターを必要とするエンドポイントは、イベントを最初に作成した同じアプリでのみ機能します。例えば、アプリAとアプリBという2つの公開アプリを作成し、アプリAに関連付けられた認証とIDを使用してマーケティングイベントを作成した場合、アプリAのみがイベントの読み取り、更新、または新しい参加者の追加を行うことができます。\* \_\_ \_\_ \_\_ \*同じexternalEventIdとexternalAccountIdを使用して、アプリBで同じイベントにアクセスしようとすると、404エラーが返されます。\_ \_
* **objectIdを使用するエンドポイント**: `objectId`を必要とするエンドポイントを使用すると、イベントを最初に作成したアプリに関係なく、上記のセクションに記載されている関連スコープを持つ任意のアプリからイベントにアクセスできます。アプリAがマーケティングイベントを作成した場合、アプリBは引き続き`objectId`ベースのエンドポイントを介して参加者の読み取り、更新、または追加を行うことができます。\_ \_\_ \_

## イベント管理エンドポイント

次のセクションでは、一般的なイベントプロパティーに関するコンテキストを提供し、さまざまなイベント管理エンドポイントを使用してイベントを作成、読み取り、更新、およびアーカイブする方法について詳しく説明します。

### イベントプロパティー

イベント管理エンドポイントの使用時に、フェッチおよび更新できるプロパティーを以下に示します。

| パラメーター             | 型    | 説明                              |
| ------------------ | ---- | ------------------------------- |
| `eventName`        | 文字列  | イベントのタイトル。                      |
| `eventType`        | 文字列  | イベントのタイプ（ウェビナー、展示会など）。          |
| `eventOrganizer`   | 文字列  | イベントを主催する個人または組織。               |
| `eventDescription` | 文字列  | イベントの説明。                        |
| `eventUrl`         | 文字列  | ユーザーが詳細を確認したり、イベントに登録したりできるURL。 |
| `eventCancelled`   | ブール値 | イベントがキャンセルされるかどうかを表す値。          |
| `eventStartTime`   | 文字列  | イベントの開始時刻を示すISO 8601形式のタイムスタンプ。 |
| `eventEndTime`     | 文字列  | イベントの終了時刻を示すISO 8601形式のタイムスタンプ。 |

### イベントを作成する

マーケティングイベントを作成するには、`/marketing/v3/marketing-events/events`に`POST`リクエストを送信して、リクエストの本文に`eventName`、`externalEventId`、`externalAccountId`、`eventOrganizer`を指定します。必要に応じて、\[上記の表]\(#イベントプロパティー

)に記載されている追加のプロパティーをリクエストに指定できます。

例えば、アプリの`externalAccountId`が`"12345"`で、アプリ内のイベントの`externalEventId`が`"67890"`の場合、次のようなリクエストで`"Winter webinar"`という名前の新しいイベントを作成できます。

```json theme={null}
{
  "externalAccountId": "12345",
  "externalEventId": "67890",
  "eventName": "Winter webinar",
  "eventOrganizer": "Snowman Fellowship",
  "eventCancelled": false,
  "eventUrl": "https://example.com/holiday-jam",
  "eventDescription": "Let's get together to plan for the holidays",
  "eventCompleted": false,
  "startDateTime": "2024-08-07T12:36:59.286Z",
  "endDateTime": "2024-08-07T12:36:59.286Z",
  "customProperties": [
    {
      "name": "eventSeason",
      "value": "winter"
    }
  ]
}
```

### 外部IDを使用したイベントプロパティーを更新する

`/marketing/v3/marketing-events/events/upsert`エンドポイントに`POST`リクエストを送信することで、マーケティングイベントを更新できます。任意の`customProperties`、イベントのその他の詳細（イベントの名前、開始時刻、説明など）を含めることができます。

リクエストで指定されたIDを持つマーケティングイベントが既に存在する場合、そのマーケティングイベントが更新されます。存在しない場合は、新しいイベントが作成されます。

例えば、次のリクエストは、「Virtual cooking class」という名前で、IDが`4`のイベントを作成します。

```json theme={null}
{
  "inputs": [
    {
      "customProperties": [
        {
          "name": "property1",
          "value": "1234"
        }
      ],
      "eventName": "Virtual cooking class",
      "startDateTime": "2023-11-30T17:46:20.461Z",
      "eventOrganizer": "Chef Joe",
      "eventDescription": "Join us for a virtual cooking class! Yum."
      "eventCancelled": false,
      "externalAccountId": "CookingCo",
      "externalEventId": "4"
    }
  ]
}
```

### objectIdを使用してイベントプロパティーを更新する

イベントが作成されたら、`/marketing/v3/marketing-events/{objectId}`に`PATCH`リクエストを送信して、そのプロパティーを更新できます。

* 特定のマーケティングイベントの`objectId`を取得するには、[ナレッジベース記事](https://knowledge.hubspot.com/ja/integrations/use-marketing-events#view-and-analyze-marketing-events)の手順に従ってHubSpotアカウント上のイベントの詳細を表示し、レコードIDフィールドの下にあるIDを見つけます。\_ \_イベントが正常に作成されると、レスポンスで`objectId`も返されます。
* 次のセクションで説明する`/marketing/v3/marketing-events`エンドポイントに`GET`リクエストを送信することもできます。
* イベントの`externalEventId`が分かっている場合は、`/marketing/v3/marketing-events/{externalEventId}/identifiers`への`GET`リクエストを送信する際に、そのパスとして含めることができます。レスポンスには、全てのマーケティングイベントと各イベントに関連付けられたID（イベントの`objectId`、`appInfo`、`marketingEventName`、`externalAccountId`など）が含まれます。

### イベントの詳細を取得する

全てのマーケティングイベントとそのプロパティーのリストを取得するには、`/marketing/v3/marketing-events`に`GET`リクエストを送信します。

HubSpot内のレコードで特定のマーケティングイベントの詳細を取得する必要がある場合は、`/marketing/v3/marketing-events/{objectId}`への`GET`リクエストでIDをobjectIdとして指定できます。\_ \_

```json theme={null}
{
  "eventName": "Test Marketing Event",
  "eventType": "test-type",
  "startDateTime": "2024-05-22T12:29:50.734Z",
  "endDateTime": "2024-05-25T12:29:50.734Z",
  "eventOrganizer": "testEventOrganizer",
  "eventDescription": "testDescription",
  "eventUrl": "testURL",
  "eventCancelled": true,
  "eventCompleted": false,
  "customProperties": [
    {
      "name": "test_custom_prop",
      "value": "1"
    },
    {
      "name": "test_prop",
      "value": "2"
    }
  ],
  "objectId": "58237132332",
  "externalEventId": null,
  "eventStatus": "CANCELLED",
  "appInfo": {
    "id": "111",
    "name": "Zoom"
  },
  "registrants": 1,
  "attendees": 1,
  "cancellations": 2,
  "noShows": 0,
  "createdAt": "2024-08-07T12:58:40.635Z",
  "updatedAt": "2024-10-15T13:35:03.353Z"
}
```

### イベントを削除する

マーケティングイベントを削除するには、イベントに関連付けられている`objectId`を使用して、`/marketing/v3/marketing-events/{objectId}`に`DELETE`リクエストを送信します。

リクエストが正常に完了すると、`204 No Content`レスポンスが返されます。

### 複数のイベントを一括更新する

複数のマーケティングイベントを一括で更新するには、`/marketing-events/v3/marketing-events/batch/update`に`POST`リクエストを送信し、リクエスト本文のinputs配列内で各イベントについて更新するプロパティーを指定します。

例えば、オブジェクトIDが58237132332と54073507364を持つ2つのマーケティングイベントの複数のプロパティーを1つのリクエストで更新する場合、リクエストの本文は次のようになります。

```json theme={null}
{
  "inputs": [
    {
      "objectId": "58237132332",
      "eventCancelled": true,
      "eventOrganizer": "testEventOrganizer",
      "eventUrl": "testURL",
      "eventDescription": "testDescription",
      "eventName": "Test Marketing Event Update",
      "eventType": "test-type"
    },
    {
      "objectId": "54073507364",
      "eventCancelled": true,
      "eventOrganizer": "testEventOrganizer",
      "eventUrl": "testURL",
      "eventDescription": "testDescription",
      "eventName": "Test Marketing Event Update 2",
      "eventType": "test-type"
    }
  ]
}
```

## イベント参加エンドポイント

イベント参加状態エンドポイントを使用すると、イベントに登録したか、出席したか、登録をキャンセルしたかなど、コンタクトの登録アクティビティーを記録できます。例えば、このエンドポイントを使用して、HubSpotのコンタクトがマーケティングイベントに登録したことを記録できます。

### イベントのobjectIdを使用して参加状態を更新する

マーケティングイベントの`objectId`を使用する場合は、参加状態を記録するコンタクトの コンタクトIDを使用するか、Eメールアドレスを使用できます。

* コンタクトのIDを使用するには、POSTリクエストを`/marketing/v3/marketing-events/{objectId}/attendance/{subscribeState}/create`に送信し、リクエスト本文の`inputs`配列内の`vid`フィールドを使用してコンタクトのIDを指定します。例えば、次のリクエスト本文は、IDが`47733471576`のコンタクトの出席データを更新し、`joinedAt`と`leftAt`プロパティーを介して出席者がイベントに参加および退出した時間を指定する例を示しています。

```json theme={null}
{
  "inputs": [
    {
      "vid": 47733471576,
      "properties": {
        "joinedAt": "2024-05-22T13:38:16.500Z",
        "leftAt": "2024-05-22T15:40:16.500Z"
      },
      "interactionDateTime": 1716382579000
    }
  ]
}
```

* コンタクトのEメールを使用するには、POSTリクエストを`/marketing/v3/marketing-events/{objectId}/attendance/{subscribeState}/email-create`に送信し、リクエスト本文の`inputs`配列内の`email`フィールドを使用してコンタクトのEメールを指定します。
  * 新しいコンタクトを作成する場合は、リクエスト本文の`inputs`配列に`contactProperties`フィールドを含めることにより、関連付ける任意のプロパティーを新規作成されたコンタクトに設定することができます。それ以外の場合、コンタクトが既に存在する場合は、リクエストで指定されている`contactProperties`は<u>更新されません</u> 。
  * 例えば、次のリクエスト本文は、Eメールアドレスが`john@example.com`のコンタクトの参加データを更新し、`inputs`配列の`properties`オブジェクト内の`joinedAt`フィールドと`leftAt`フィールドを使用して、出席者がイベントに参加および退出した時間を指定する例を示しています。

```json theme={null}
{
  "inputs": [
    {
      "contactProperties": {
        "additionalProp1": "string",
        "additionalProp2": "string"
      },
      "properties": {
        "joinedAt": "2024-05-22T13:38:16.500Z",
        "leftAt": "2024-05-22T15:40:16.500Z"
      },
      "email": "john@example.com",
      "interactionDateTime": 1716382579000
    }
  ]
}
```

上記のエンドポイントの両方について、対応するパスパラメーターに次の値を指定します。

* `objectId`：HubSpotアカウントのマーケティングイベントのレコードID。\_ \_イベントのobjectIdの使用と外部IDの使用の詳細については、[前述のセクション](#内部idエンドポイントと外部idエンドポイントの相違点)をご確認ください。
* `subscriberState`：コンタクトの新しい参加ステータスと一致する以下の列挙値。
* `REGISTERED`：HubSpotコンタクトがイベントに登録したことを示します。
* `ATTENDED`：HubSpotコンタクトがイベントに出席したことを示します。コンタクトのステータスをATTENDEDに更新する場合は、リクエスト本文のパラメーターとして、ISO 8601インスタント形式で指定した`joinedAt`および`leftAt`タイムスタンプを含めることもできます。
* `CANCELLED`：以前イベントに登録したHubSpotコンタクトが登録をキャンセルしたことを示します。

### イベントの外部IDを使用して参加情報を更新する

<Warning>
  ### 注：

  以前に`/upsert`または`/email-upsert`エンドポイントを使用して出席者のステータスを更新していた場合は、代わりに以下に示す代替エンドポイントを使用できます。ただし、上記のイベント出席エンドポイントと比較すると、これらのエンドポイントを使用しても、次のサポートは<u>提供されません</u>。

  * 新しいコンタクトがまだ存在しない場合、コンタクトを新規作成する
  * コンタクトのレコードページでタイムラインイベントを表示する
  * `joinedAt`または`leftAt`プロパティーを指定する
  * リクエストが正常に完了した際に詳細なレスポンスを提供する
</Warning>

アプリからの`externalEventId`を必要とするエンドポイントを使用する場合は、既存のコンタクトコンタクトIDまたはEメールアドレスのいずれかを使用できます。

* 既存のコンタクトのコンタクトIDを使用する場合：
  * 外部アプリケーションのイベントのIDを`externalEventId`として使用し、`/marketing/v3/marketing-events/attendance/{externalEventId}/{subscriberState}/create`に`POST`リクエストを送信します。
  * リクエスト本文で、次のフィールドを含む`inputs`オブジェクトを指定します。
    * `interactionDateTime`：コンタクトがイベントに登録した日時。
    * `vid`：既存のコンタクトのコンタクトID。
* イベント参加者の1人のEメールアドレスを使用する場合：
  * `POST`リクエストを`/marketing/v3/marketing-events/attendance/{externalEventId}/{subscriberState}/email-create`に送信します。
  * リクエスト本文で、次のフィールドを含む`inputs`オブジェクトを指定します。
    * `interactionDateTime`：コンタクトがイベントに登録した日時。
    * `email`：inputs内のemailフィールドの値として指定する、参加者のEメールアドレス
  * 指定したEメールアドレスが既存のコンタクトのアドレスと一致しない場合は、新しいコンタクトが作成されます。

上記のエンドポイントの両方について、対応するパスパラメーターに次の値を指定します。

* `externalEventId`：[マーケティングイベント](https://knowledge.hubspot.com/ja/integrations/use-marketing-events#view-edit-and-analyze-marketing-events)のID。イベントのobjectIdの使用と外部IDの使用の詳細については、 [前述のセクション](#differences-between-internal-id-and-external-id-endpoints)をご覧ください。
* `subscriberState`：コンタクトの新しい参加ステータスと一致する以下の列挙値。
  * `REGISTERED`：HubSpotコンタクトがイベントに登録したことを示します。
  * `ATTENDED`：HubSpotコンタクトがイベントに出席したことを示します。コンタクトのステータスをATTENDEDに更新する場合は、リクエスト本文のパラメーターとして、ISO 8601インスタント形式で指定した`joinedAt`および`leftAt`タイムスタンプを含めることもできます。
  * `CANCELLED`：以前イベントに登録したHubSpotコンタクトが登録をキャンセルしたことを示します。

<Warning>
  ### 注：

  これらのAPIは、コンタクトのIDとイベントの`interactionDateTime`値が変更されていない限り、べき等性があります。これにより、重複したイベントがマーケティング イベント プロパティーにHubSpotによって作成されることなく、参加状態を複数回安全に設定できます。
</Warning>

## 参加者状態エンドポイント

参加エンドポイントを使用して、マーケティングイベントのイベント参加者データを取得します。特定のイベントの集計指標などのデータや、特定のコンタクトまたはイベントの参加者データをクエリーできます。

以下で利用可能な参加エンドポイントを確認してください。各エンドポイントで使用できる全パラメーターの一覧は、[リファレンスドキュメント](/api-reference/marketing-marketing-events-v3/guide)でご参照いただけます。

<Warning>
  ### 注：

  ご使用のHubSpotアカウントの[マーケティングイベントページ](https://knowledge.hubspot.com/ja/integrations/use-marketing-events)に表示されるアクティビティー数は、参加カウンターAPIエンドポイントで取得できる、対応する集計指標と異なる場合があります。

  例えば、参加者がイベントに登録してからキャンセルした後で、同じイベントに再登録した場合、ご使用のアカウントのマーケティングイベントUIに表示される合計数には、これらのアクティビティー全てが含められます。以下の参加者状態エンドポイントを使用している場合、各測定指標の関連するカウンターには、参加者の現在の状態のみが含められます（例：`attended`、`registered`、`cancelled`、`noShows`）。
</Warning>

### 特定のコンタクトの参加を読み取る

特定のコンタクトのイベント参加データを取得するには、コンタクトのIDまたはEメールアドレスを`contactIdentifier`パスパラメーターとして使用して、`GET`リクエストを`/marketing/v3/marketing-events/participations/contacts/{contactIdentifier}/breakdown`に送信します。

レスポンスの`properties`フィールドには、コンタクトのイベント参加の概要が含まれています。

```json theme={null}
{
  "results": [
    {
      "associations": {
        "marketingEvent": {
          "externalAccountId": "4",
          "marketingEventId": "123",
          "externalEventId": "456",
          "name": "Virtual baking workshop"
        },
        "contact": {
          "firstname": "Jane",
          "contactId": "156792341",
          "email": "jdoe@example.com",
          "lastname": "Doe"
        }
      },
      "createdAt": "2024-05-21T18:35:04.838Z",
      "id": "string",
      "properties": {
        "occurredAt": "2024-05-22T10:35:04.838Z",
        "attendancePercentage": "string",
        "attendanceState": "REGISTERED",
        "attendanceDurationSeconds": 3600
      }
    }
  ]
}
```

### 参加内訳データを読み取る

特定のイベントの参加データの内訳を取得するには、自分の`externalAccountId`とイベントの`externalEventId`を使用して、`GET`リクエストを`/marketing/v3/marketing-events/participations/{externalAccountId}/{externalEventId}/breakdown`に送信します。

### 参加カウンターを読み取る

イベントの参加集計の概要を取得するには、自分の`externalAccountId`とイベントの`externalEventId`を使用して、`GET`リクエストを`/marketing/v3/marketing-events/participations/{externalAccountId}/{externalEventId}`に送信します。

レスポンスには合計参加数が含まれます。

```json theme={null}
{
  "attended": 152,
  "registered": 200,
  "cancelled": 3,
  "noShows": 8
}
```

### 参加内訳データを絞り込む

特定のコンタクトの内訳データまたはイベント参加データを取得するには、リクエストでcontactIdentifier、state、limit、またはafterフィールドをクエリーパラメーターとして使用して、返されるデータを絞り込めます。

| クエリーパラメーター          | 型   | 説明                                                                                                                                                                                                  |
| ------------------- | --- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `contactIdentifier` | 文字列 | 特定のコンタクトのEメールアドレスまたはID                                                                                                                                                                              |
| `state`             | 列挙  | イベントの参加状態。使用可能な参加状態は、次の通りです。<ul><li>`REGISTERED`：コンタクトがイベントに登録した。</li><li>`CANCELLED`：コンタクトの登録がキャンセルされた。</li><li>`ATTENDED`：コンタクトがイベントに参加した。</li><li>`NO_SHOW`：コンタクトが登録したが、イベントには参加しなかった。</li></ul> |
| `limit`             | 数値  | 返される結果数の上限を設定します。デフォルトでは、上限は10に設定されています。有効な範囲は1-100です。                                                                                                                                              |
| `after`             | 数値  | レスポンスの結果間のページングに使用されます。レスポンスデータの前のページに指定されたオフセットを調べて、次に返す結果のインデックスを決定します。                                                                                                                           |

## リストの関連付けエンドポイント

下記のセクションで説明するエンドポイントを使用して、リストとマーケティングイベント間の関連付けを管理できます。

これらのエンドポイントの多くでは、パスパラメーターとして`listId`が必要です。詳細は、HubSpotアカウントのリストの詳細ページで確認できます。

* HubSpotアカウントで、［CRM］>［リスト］に移動します\*\*。 \*\*\*\* \*\*
* リストの**名前**をクリックします。
* 右上の［詳細］をクリックします\*\*。 \*\*
* 右側のパネルで［API連携のリストID］の下にリストIDが表示されます。\_ \_［リストIDをコピー］をクリックすると、IDをクリップボードにコピーできます\*\*。 \*\*

<Frame>
  <img src="https://www.hubspot.jp/hubfs/Knowledge_Base_2023_2024/list-details-panel-list-associations-api.png" alt="リストの詳細パネルのリストの関連付け-api" />
</Frame>

リストをマーケティングイベントに関連付けると、HubSpotアカウントのマーケティングイベントの詳細ページに表示されます。

* HubSpotアカウントで、［CRM］>［コンタクト］に移動します\*\*。 \*\*\*\* \*\*
* 左上の［コンタクト］をクリックし、ドロップダウンメニューから［マーケティングイベント］を選択します\*\*。 \*\*\*\* \*\*
* マーケティングイベントの**名前**をクリックします。
* ［パフォーマンス］タブで、［リスト］をクリックしてセクションを展開し、**［関連付け］タブから追加したリスト**をクリックします。\_ \_\*\* \*\*

<Frame>
  <img src="https://www.hubspot.jp/hubfs/Knowledge_Base_2023_2024/review-list-associations-for-marketing-events-api.png" alt="マーケティングイベントapiのリストの関連付けの確認" />
</Frame>

### マーケティングイベントIDを使用してリストの関連付けを作成する

マーケティングイベントと既存のリストの間に新しい関連付けを作成するには、`PUT`リクエストを`/marketing/v3/marketing-events/associations/{marketingEventId}/lists/{listId}`に送信します。

リクエストが正常に完了すると、`204 No content`レスポンスが返されます。

### 外部イベントIDとアカウントIDを使用してリストの関連付けを作成する

外部アカウントIDと外部イベントIDを使用して、マーケティングイベントと既存のリストの間に新しい関連付けを作成するには、`PUT`リクエストを`/marketing/v3/marketing-events/associations/{externalAccountId}/{externalEventId}/lists/{listId}`に送信します。

リクエストが正常に完了すると、`204 No content`レスポンスが返されます。

### マーケティングイベントIDを使用してマーケティングイベントに関連付けられたリストを取得する

マーケティングイベントに関連付けられている全てのリストを取得するには、`/marketing/v3/marketing-events/associations/{marketingEventId}/lists`に`GET`リクエストを送信します。

レスポンスは次のようになります。

```json theme={null}
{
  "total": 1,
  "results": [
    {
      "listId": "string",
      "listVersion": 0,
      "createdAt": "2024-05-10T08:58:35.769Z",
      "updatedAt": "2024-05-10T08:58:35.769Z",
      "filtersUpdatedAt": "2024-05-10T08:58:35.769Z",
      "processingStatus": "string",
      "createdById": "string",
      "updatedById": "string",
      "processingType": "string",
      "objectTypeId": "string",
      "name": "string",
      "size": 0
    }
  ]
}
```

### 外部イベントIDとアカウントIDを使用してイベントに関連付けられたリストを取得する

また、外部アカウントIDと外部イベントIDを使用してマーケティングイベントに関連付けられたリストを取得し、`GET`リクエストを`/marketing/v3/marketing-events/associations/{externalAccountId}/{externalEventId}/lists`に送信することもできます。

### マーケティングイベントIDを使用してリストの関連付けを削除する

マーケティングイベントIDを使用してマーケティングイベントのリスト関連付けを削除するには、`DELETE`リクエストを`/marketing/v3/marketing-events/associations/{marketingEventId}/lists/{listId}`に送信します。

リクエストが正常に完了すると、`204 No content`レスポンスが返されます。

### 外部イベントIDとアカウントIDを使用してリストの関連付けを削除する

外部アカウントIDと外部イベントIDを使用してマーケティングイベントのリストの関連付けを削除するには、`DELETE`リクエストを`/marketing/v3/marketing-events/associations/{externalAccountId}/{externalEventId}/lists/{listId}`に送信します。

リクエストが正常に完了すると、`204 No content`レスポンスが返されます。

## アプリ設定を構成する

マーケティングイベントがHubSpotと適切に同期するためには、いくつかの設定が必要です。

HubSpotに参加状態の変更（登録やキャンセルなど）を送信すると、HubSpotはまず、指定されたイベントIDに対応するマーケティングイベントが存在するかどうかを確認します。存在しない場合、HubSpotはアプリに設定されたエンドポイントを呼び出してマーケティングイベントの詳細を取得し、HubSpotでイベントを作成してから、参加状態の変更を公開します。

これは利便性を目的に提供されている機能ですが、HubSpotでマーケティングイベントを作成するこの機能には依存せず、[リファレンスドキュメント](/api-reference/marketing-marketing-events-v3/guide)に記載されているCRUDメソッドを使用して、マーケティングイベントを自分で作成することをお勧めします。

### ステップ1：アプリでAPIを作成する

マーケティングイベントをサポートするためにHubSpotでは、マーケティングイベントを使用する各アプリでAPIを定義し、特定のマーケティングイベントに関する情報を取得することを要件としています。

要件：

* 許容値：
  * `externalAccountId`：外部アプリの顧客のaccountIdを指定するクエリーパラメーター。
  * `appId`：イベントの詳細をリクエストしているHubSpotアプリケーションのIDを指定するクエリーパラメーター。これはアプリのIDになります。
  * `externalEventId`：HubSpotが詳細な情報をリクエストしている外部アプリのイベントのIDを指定する、リクエストのURL内のパスパラメーター。
* 戻り値：
  * マーケティングイベントの詳細を提供するJSONオブジェクト。以下の表で詳しく説明しているフィールドを含みます。

\| フィールド名       | 必須  | 型                   | フィールドの説明                                                                  |
\| ------------------ | ----- | -------------------- | --------------------------------------------------------------------------------- | ---------------- |
\| `eventName`        | true  | 文字列               | マーケティングイベントの名前。                                                    |
\| `eventOrganizer`   | true  | 文字列               | マーケティングイベントの主催者の名前。                                            |
\| `eventType`        | false | 文字列               | このイベントのタイプを説明します。`WEBINAR`、`CONFERENCE`、`WORKSHOP`             | など。           |
\| `startDateTime`    | false | 文字列（$date-time） | マーケティングイベントの開始日時。                                                | | `endDateTime`      | false | 文字列（$date-time） | マーケティングイベントの終了日時。                                                |
\| `eventDescription` | false | 文字列               | マーケティングイベントの説明。                                                    |
\| `eventUrl`         | false | 文字列               | 外部イベントアプリケーションでマーケティングイベントが存在するURL。               |
\| `eventCancelled`   | false | ブール値             | マーケティングイベントがキャンセルされたかどうかを示します。デフォルトでは`false` | に設定されます。 |

HubSpotは`X-HubSpot-Signature-v3`ヘッダーも送信します。これは、リクエストがHubSpotから送信されたことを確認するために使用できます。署名の詳細とその検証方法については、[リクエスト署名](/apps/legacy-apps/authentication/validating-requests)を参照してください。

### ステップ2：HubSpotにAPIへのURLパスを提供する

特定のマーケティングイベントの詳細を提供するオブジェクトを返すAPIをアプリで作成したので、次は`/marketing/v3/marketing-events/{appId}/settings`に`POST`リクエストを送信して、HubSpotにAPIへのURLパスを提供する必要があります。これにより、HubSpotはアプリにリクエストを送信してマーケティングイベントの詳細を取得する方法を決定できます。

`POST`リクエストの本文で、`eventDetailsURL`フィールドを使用してURLを指定します。`eventDetailsURL`は次の2つの要件を満たす必要があります。

* `%s`文字列を含んでいること。HubSpotはこの文字列をパスパラメーターとして使用し、イベントのID（`externalEventId`）に代入します。
* `https://`プレフィックスとドメイン名（例：`my.event.app`）を含む、APIリソースへのフルパスであること。

例えば、`https://my.event.app/events/%s`の`eventDetailsURL`を設定し、IDが`1234-event-XYZ`のイベントの詳細を取得するリクエストを送信する必要がある場合、HubSpotアプリのIDが`app-101`で、アカウントのIDが`ABC-account-789`だとすると、HubSpotは次のURLに`GET`リクエストを送信します。

`https://my.event.app/events/1234-event-XYZ?appId=app-101&externalAccountId=ABC-account-789`
