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

# CRM 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/e5a01a5644f5e061f744" icon={postmanIcon} horizontal={true} />

<RelatedApiLink />

<Accordion title="スコープ要件">
  <ScopesList
    scopes={[
  'crm.objects.companies.highly_sensitive.read.v2',
  'crm.objects.companies.highly_sensitive.write.v2',
  'crm.objects.companies.read',
  'crm.objects.companies.sensitive.read.v2',
  'crm.objects.companies.sensitive.write.v2',
  'crm.objects.companies.write',
  'crm.objects.contacts.highly_sensitive.read.v2',
  'crm.objects.contacts.highly_sensitive.write.v2',
  'crm.objects.contacts.read',
  'crm.objects.contacts.sensitive.read.v2',
  'crm.objects.contacts.sensitive.write.v2',
  'crm.objects.contacts.write',
  'crm.objects.deals.highly_sensitive.read.v2',
  'crm.objects.deals.highly_sensitive.write.v2',
  'crm.objects.deals.read',
  'crm.objects.deals.sensitive.read.v2',
  'crm.objects.deals.sensitive.write.v2',
  'crm.objects.deals.write',
  'crm.schemas.companies.read',
  'crm.schemas.companies.write',
  'crm.schemas.contacts.read',
  'crm.schemas.contacts.write',
  'crm.schemas.deals.read',
  'crm.schemas.deals.write',
  'tickets',
  'tickets.highly_sensitive.v2',
  'tickets.sensitive.v2',
  'timeline'
]}
  />
</Accordion>

CRM拡張機能を使用すると、HubSpotのコンタクト／会社／取引／チケットオブジェクトに関する外部のシステムからの情報を表示できます。そのためにはカスタム タイムライン イベントを作成し、タイムライン イベント エンドポイントを使用します。ユーザーによるデータ編集を可能にしたいが、既定のCRMオブジェクトの中にニーズに合うものがない場合は、[カスタムオブジェクト](/api-reference/crm-custom-objects-v3/guide)の使用を検討してください。

<Frame>
  <img src="https://www.hubspot.jp/hubfs/timeline_api/event_expanded-2.png" alt="event_expanded-2" />
</Frame>

例えば、自社とのやり取りやコンテンツに基づいてコンタクトのセグメンテーションを強化する必要があるとします。そのためには、さらに多くの情報が必要です。コンタクトとのやり取りに関して詳細なコンテキスト情報を示すカスタムイベント（最近のウェビナーへの登録のみで欠席したコンタクト、コンタクトが登録を完了したフローなど）を、アプリで作成することが考えられます。

## イベントテンプレートを作成する

イベントを作成するには、事前にイベントテンプレートを作成しておく必要があります。イベントテンプレートでは、HubSpotの中のコンタクト、会社、または取引オブジェクトのタイムラインにアプリが追加するアクションを記述します。アクションの例としては、動画表示、ウェビナー登録、アンケート記入などがあります。アプリごとに、最大750件のイベントテンプレートを作成できます。

既定では、イベントテンプレートはコンタクトに対して作成されますが、`objectType`フィールドを使用することによって会社や取引について作成することもできます。詳細は、タイムライン イベント テンプレートの作成に関する説明を参照してください。

イベントテンプレートごとに、トークンとテンプレートの固有のセットがあります。コンタクトに対して作成されたイベントを、新しいコンタクトリストまたはワークフローを作成する際の条件として使用できます。例えば、「動画名にXYZが含まれる動画にいいね！を付けた全てのコンタクトのリストを作成する」というように設定できます。この場合、イベントテンプレートは「Video Like」という名前が付けられ、「video name」というイベントトークンを持っています。"

### APIを使用してイベントテンプレートを作成する

この例では、新しいイベントテンプレート「Example Webinar Registration」を作成します。認証には開発者APIキーを使用します。これは、アプリ開発者アカウントで確認できます。

```shell theme={null}
curl -X POST
-H "Content-Type: application/json" -d '
{
  "name": "Example Webinar Registration",
  "objectType": "contacts"
}' \
'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates?hapikey=<<developerAPIkey>>''
```

`<appId>`は自分のアプリIDに置き換えてください。アプリIDは、開発者アカウントの［マイアプリ］またはアプリの詳細ページで確認できます。また、`<developerHapikey>`も自分の開発者APIキーに置き換える必要があります。APIキーは、［アプリ］＞［HubSpot APIキーを取得］の順に進むことで確認できます。

ここで`headerTemplate`と`detailTemplate`プロパティーも指定できます詳細については、下記の「ヘッダーおよび詳細テンプレートを定義する\_\_」を参照してください。

この`POST`リクエストは、保存されているイベントテンプレート定義全体を返します。レスポンス内にある`id`プロパティーに注目してください。これがイベントテンプレートIDで、今後このイベントテンプレートまたはトークンを更新する際に必要になります。

次のGETコマンドを使用すれば、アプリで定義されている全てのイベントテンプレートを確認できます。この場合も、イベントテンプレートIDが返されます。

```shell theme={null}
curl -X GET 'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates?hapikey=<<developerAPIkey>>'
```

### HubSpotでイベントテンプレートを作成する

APIによるタイムライン イベント テンプレートの作成および管理に加えて、HubSpot開発者アカウントでイベントテンプレートを管理することもできます。

アプリの設定から［タイムラインイベント］に進み、［イベントタイプを作成］をクリックしてこのアプリ用の新しいイベントテンプレートを作成します。以前に作成したイベントテンプレートがある場合は、ここに表示されます。

<Frame>
  <img src="https://www.hubspot.jp/hubfs/timeline-event-example-app.png" alt="example-app" />
</Frame>

新しいイベントテンプレートの下書きから始めます。イベントのオブジェクトタイプ、さらに詳細テンプレートとヘッダーテンプレートを設定したら、［作成］をクリックします\*\*。\*\*

<Frame>
  <img src="https://www.hubspot.jp/hubfs/new-timeline-event-template.png" alt="new-timeline-event-template" />
</Frame>

イベントテンプレートの作成または編集を行う際には、使用するトークンを［データ］タブで設定します。

<Frame>
  <img src="https://f.hubspotusercontent00.net/hubfs/53/data-tab-1.png" alt="data-tab-1" />
</Frame>

<Warning>
  ### 注：

  テンプレートを削除すると、そのテンプレートを使用していた既存のイベントが、アプリが接続されているアカウントから完全に削除されます。そのタイプのイベントは新規に作成できなくなりますが、リストやレポートでは従来から存在しているタイプのイベントデータは確認できます。この変更がHubSpotに反映されるまでに数時間かかる場合があります。
</Warning>

### イベントトークンを定義する

イベントテンプレートを定義したら、トークンも定義してみてください。イベント テンプレート トークンを使用すると、イベントにカスタムデータを添付し、それをタイムラインに表示したり、ワークフローの自動化に使用したりできます。また、コンタクトの場合はリストのセグメンテーションにも使用できます。1つのタイムライン イベント テンプレートにつき最大500件のトークンを作成できます。

#### APIを使用してイベントトークンを作成する

ステップ1で作成したイベントテンプレートIDを使用して、コンタクトが登録しているウェビナーを特定するためのトークンを追加します。

```shell theme={null}
curl -X POST -H "Content-Type: application/json" -d '
{
  "name": "webinarName",
  "label": "Webinar Name",
  "type": "string"
}' \
'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates/<<eventTemplateId>>/tokens?hapikey=<<developerHapikey>>'

curl -X POST -H "Content-Type: application/json" -d '
{
  "name": "webinarId",
  "label": "Webinar Id",
  "type": "string"
}' \
'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates/<<eventTemplateId>>/tokens?hapikey=<<developerHapikey>>'

curl -X POST -H "Content-Type: application/json" -d '
{
  "name": "webinarType",
  "label": "Webinar Type",
  "type": "enumeration",
  "options": [
    {
      "value": "regular",
      "label": "Regular"
    },
    {
      "value": "ama",
      "label": "Ask me anything"
    }
  ]
}' \
'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates/<<eventTemplateId>>/tokens?hapikey=<<developerHapikey>>'
```

同様に、`GET`からはイベントテンプレートに定義されている全てのトークンが返されます。

```shell theme={null}
curl -X GET -H "Content-Type: application/json" 'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates/<<eventTemplateId>>?hapikey=<<developerHapikey>>'
```

サポートされているトークンの種類は次のとおりです。

* `string`
* `number`
* `enumeration` — 選択肢のセットのうち1つ。上記のwebinarTypeの例を参照してください。
* `date` — 日付には必ずミリ秒単位のUnix時刻を使用します。

**注**：イベントトークンにlogまたはlookupという名前を付けることはできません。これらのトークンは、Handlebars.js（アプリ内イベントのレンダリングに使用されるライブラリー）によるヘルパーとして予約済みです。詳細は、[こちら](http://handlebarsjs.com/builtin_helpers.html)のHandlebars.jsドキュメントを参照してください。

***

### ヘッダーテンプレートおよび詳細テンプレートを定義する

ヘッダーテンプレートと詳細テンプレートは、タイムラインイベントの表示方法を定義します。[Markdown](http://daringfireball.net/projects/markdown/syntax)ドキュメントを[Handlebars](http://handlebarsjs.com/)テンプレートで指定できます。ヘッダーテンプレートはイベントについての1行の説明文で、詳細テンプレートはイベントに関する具体的な情報です。以下に例を示します。

イベントトークンは、データとしてテンプレートに渡されます。この例では、テンプレートの中で`{{webinarName}}`を使用することによって`webinarName`トークンを参照できます。

イベントの`extraData`（後述の「extraData"について」を参照）は、詳細テンプレートの中でのみ参照できます。

#### APIを使用してヘッダーテンプレートおよび詳細テンプレートを定義する

ヘッダーテンプレートと詳細テンプレートは、イベント テンプレート エンドポイント経由でイベントテンプレートに定義できます。例えば、「Example Webinar Registration」の例では、`PUT`を使用して変更を加えることにより、テンプレートを追加できます。

```shell theme={null}
curl -X PUT -H "Content-Type: application/json" -d '
{
  "id": "<<eventTemplateId>>",
  "name": "Example Name Change",
  "headerTemplate": "Registered for [{{webinarName}}](https://mywebinarsystem/webinar/{{webinarId}})",
  "detailTemplate": "Registration occurred at {{#formatDate timestamp}}{{/formatDate}}"
}' \
'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates/<<eventTemplateId>>?hapikey=<<developerHapikey>>'
```

`#formatDate`ディレクティブの使用にも注目してください。ユーザーにとって分かりやすい日付形式にするために定義しています。

このようにコンタクトに関するイベントを作成すると（"後述の「[イベントの作成](#creating-an-event)"」を参照）、コンタクトのタイムラインに次のように表示されます。

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

［詳細を表示］をクリックすると、詳細テンプレートが表示されます。

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

イベントの横に表示されるアイコンを設定するには、"後述の「[カスタムアイコンの設定"](/api-reference/crm-timeline-v3/guide#customicon)」を参照してください。

ここでの「Example App Name」というテキストはアプリの名前です。CRMタイムライン内では、アプリ単位でイベントを絞り込むことができます。

### 1回の呼び出しでイベントテンプレートの全ての要素を定義する

ここまではイベントテンプレートの各要素を紹介してきましたが、1回の`POST`呼び出しで全ての要素を定義できます。

```shell theme={null}
curl -X POST -H "Content-Type: application/json" -d '
{
  "name": "Another Webinar Registration",
  "objectType": "contacts",
  "headerTemplate": "Registered for [{{webinarName}}](https://mywebinarsystem/webinar/{{webinarId}})",
  "detailTemplate": "Registration occurred at {{#formatDate timestamp}}{{/formatDate}}",
  "tokens": [
    {
      "name": "webinarName",
      "label": "Webinar Name",
      "type": "string"
    },
    {
      "name": "webinarId",
      "label": "Webinar Id",
      "type": "string"
    },
    {
      "name": "webinarType",
      "label": "Webinar Type",
      "type": "enumeration",
      "options": [
        {
          "value": "regular",
          "label": "Regular"
        },
        {
          "value": "ama",
          "label": "Ask me anything"
        }
      ]
    }
  ]
}' \
'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates?hapikey=<<developerAPIkey>>'
```

## イベントを作成する

トークンとテンプレートを備えたイベントテンプレートを設定できました。次は、顧客のコンタクト、会社、取引、およびチケットのイベントを作成します。ここまでで作成した`contacts`イベントテンプレートを、以降の例でも使用します。イベントテンプレートの設定に`webinarName`と`webinarId`のトークンが含まれていない場合は、イベントを作成する際にエラーが発生します。イベントを作成するための`POST`の例を次に示します。

<Warning>
  ### 注：

  開発者APIキーと非公開アプリのアクセストークンを、イベントの作成時に認証として使用することは<u>できません</u>。イベントを作成するには、関連するHubSpotアカウントから、[OAuth](/apps/legacy-apps/authentication/working-with-oauth)を使用してアプリにアクセス権を付与する必要があります。[OAuthアクセストークン](/api-reference/auth-oauth-v1/guide)を取得したら、それを使用してアカウントにイベントを追加できます。
</Warning>

```shell theme={null}
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer <<OAuth2AccessToken>>" \
-d '
{
  "eventTemplateId": "<<eventTemplateId>>",
  "email": "a.test.contact@email.com",
  "tokens": {
    "webinarName": "A Test Webinar",
    "webinarId": "001001",
    "webinarType": "regular"
  }
}' \
'https://api.hubapi.com/crm/v3/timeline/events'
```

これにより、`a.test.contact@email.com`'のタイムライン上にイベントが生成されます（前述の「テンプレートの定義」のテンプレートがある前提で）。

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

### イベントタイムスタンプを設定する

イベントがオブジェクト内のタイムラインに現れる位置は、イベントのタイムスタンプによって決まります。イベントタイムスタンプには、既定でPOSTコマンドの送信時刻が設定されます。イベント時刻は、タイムスタンププロパティーのリクエスト本文に明示することによりカスタマイズできます。

```shell theme={null}
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer <<OAuth2AccessToken>>" \
-d '
{
  "eventTemplateId": "<<eventTemplateId>>",
  "email": "a.test.contact@email.com",
  "timestamp": "2020-03-18T15:30:32Z",
  "tokens": {
    "webinarName": "A Test Webinar",
    "webinarId": "001001",
    "webinarType": "regular"
  }
}' \
'https://api.hubapi.com/crm/v3/timeline/events'
```

特定のアクションが発生した正確な時刻が分かっている場合は、明示することが適切です。この例の場合、このウェビナー登録のタイムスタンプが分かっていればPOST内で指定してください。

タイムスタンプは、ミリ秒単位のエポック時間、または[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)形式です。

### イベントをCRMオブジェクトに関連付ける

イベントを作成するには、顧客のアカウント内のコンタクト、会社、または取引に対し、イベントを関連付けなければなりません。

前述の例では、objectTypeにコンタクトを指定し、Eメールを使用してイベントをコンタクトに関連付けました。HubSpot上ではコンタクトのEメールアドレスは重複しないため、指定されたEメールのコンタクトがすでに存在する場合、そのコンタクトが更新されることになります。既存のコンタクトがない場合は、新しいコンタクトが作成されます。既定では、指定したEメール コンタクト プロパティーのみがこの新しいコンタクトに格納されます。コンタクトプロパティーにデータを追加する方法については、[コンタクトプロパティーに対するイベントデータの付加](#stamp-event-data-onto-crm-object-properties)に関する説明を参照してください。

```shell theme={null}
// {
  "eventTemplateId": "<<eventTemplateId>>",
  "email": "a.test.contact@email.com",
  "tokens": {
    "webinarName": "A Test Webinar",
    "webinarId": "001001",
    "webinarType": "regular"
  }
}
```

既存のコンタクトの場合、イベントの関連付けにコンタクトの`vid`を使用することもできます。その場合、リクエストJSONの中で`objectId`を使用します。`objectId`を使用してコンタクトを新規に作成することはできないため、既存のコンタクトのvidを含める必要があります。この例では、Eメールではなく`objectId`を使用しています。

```shell theme={null}
// {
  "eventTemplateId": "<<eventTemplateId>>",
  "objectId": "29851",
  "tokens": {
    "webinarName": "A Test Webinar",
    "webinarId": "001001",
    "webinarType": "regular"
  }
}
```

ユーザートークンまたは`utk`により、イベントをコンタクトに関連付けることもできます。ユーザートークンは、HubSpotトラッキングコードでの訪問者のトラッキングに使用され、`hubspotutk`のCookie内に格納されます。`utk`パラメーターは、ユーザートークンによってイベントをコンタクトに関連付ける際に使用します。注：匿名の訪問者にはユーザートークンを使用してイベントを関連付けることができません。したがってイベントの関連付けに`utk`のみが使用されていて、かつ提供されているユーザートークンがまだコンタクトに関連付けられていない場合は、新しいコンタクトが作成されず、イベントはHubSpot上で確認できなくなります。しかし、新しいコンタクトが別の手段（通常は[hutkを含むフォーム送信](https://developers.hubspot.jp/docs/reference/api/marketing/forms/v3-legacy#submit-data-to-a-form-supporting-authentication)（英語）、または[トラッキングコードAPIのidentifyメソッド](https://developers.hubspot.jp/docs/reference/api/analytics-and-events/tracking-code)（英語））によってユーザートークンに関連付けられていた場合は、イベントがタイムラインに表示されます。そのため、`utk`に加えて`email`を指定することにより、イベントを新しいコンタクトまたは既存のコンタクトに関連付けることをお勧めします。

コンタクトのイベントテンプレートの場合、イベントに複数の識別パラメーターを指定できるため、`email`、`objectId`、`utk`のパラメーターを組み合わせて指定することができます。複数のパラメーターを含めた場合、イベントに関連付けるコンタクトの判定ではobjectId（vid）が最も優先され、次に`utk`、そして最後に`email`が使用されます。したがって、既存のオブジェクトの`vid`を`objectId`に、また`email`パラメーターに新しいEメールアドレスを指定することによって、既存のオブジェクトのEメールアドレスを更新することができます。この例では、Eメールアドレスとユーザートークンを組み合わせています。

```shell theme={null}
// {
  "eventTemplateId": "<<eventTemplateId>>",
  "email": "a.test.contact@email.com",
  "utk": "89b5afb740d41f4cd6651ac5237edf09"
  "tokens": {
    "webinarName": "A Test Webinar",
    "webinarId": "001001",
    "webinarType": "regular"
  }
```

コンタクトだけでなく、会社や取引についてのイベントテンプレートも作成できます。その場合、イベントテンプレートに`objectId`を指定して、会社または取引にイベントを関連付ける必要があります。会社の場合、`objectId`にイベントを関連付ける会社の`companyId`を設定する必要があります。また、取引の場合、`objectId`に取引オブジェクトの`dealId`を設定します。

以下の例の場合、イベントテンプレートが`COMPANY` `objectType`に設定されているとすると、このイベントは`companyId` 528253914の会社オブジェクトに関連付けられることになります。

```shell theme={null}
// {
  "eventTemplateId": "<<eventTemplateId>>",
  "objectId": "3001",
  "tokens": {
    "dealProperty": "Custom property for deal"
  }
}
```

### タイムライン拡張機能

タイムライン拡張機能を使用すると、iFrameを使用して外部システムのデータを表示できるようになります。含まれている場合、イベントにモーダルウィンドウを開くリンクが表示されます。リンクをクリックすると、iFrameのコンテンツが表示されます。iFrameの詳細はtimelineIFrameフィールドに指定します。このオブジェクトには、次のフィールドがあります。

* `linkLabel`：iFrameを表示するリンクに示されるテキスト。
* `headerLabel`：iFrameコンテンツを表示するモーダルウィンドウのラベル。
* `url`：iFrameコンテンツのURI。
* `width`：モーダルウィンドウの幅。
* `height`：モーダルウィンドウの高さ。

例えば、イベントに次のデータを使用した場合：

```shell theme={null}
// {
  "eventTemplateId": "<<eventTemplateId>>",
  "email": "a.test.contact@email.com",
  "tokens": {
    "webinarName": "A Test Webinar",
    "webinarId": "001001",
    "webinarType": "regular"
  },
  "timelineIFrame": {
    "linkLabel":"View external data",
    "headerLabel":"Example iframe",
    "url":"https://www.example.com",
    "width":800,
    "height":300
  }
}
```

「View external data」リンクを含む、次のイベントが作成されます。

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

このリンクをクリックするとモーダルウィンドウが開き、`url`に設定されているページが表示されます。

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

### CRMオブジェクトのプロパティーに対してイベントデータを付加する

イベントを追加するコンタクト、会社、取引のプロパティーに、変更が必要になるケースは少なくありません。特に、イベントを追加することでコンタクトが作成される場合が該当します。Eメールアドレスとイベントだけのコンタクトを作成しないためにも、コンタクトの姓名のプロパティーを更新する必要があるはずです。

カスタム イベント トークンをコンタクト、会社、または取引のプロパティーにマッピングすることにより、イベントからの関連オブジェクトのデータを付加することができます。

カスタム イベント テンプレートを更新するための次の`PUT`コマンドで、`objectPropertyName`フィールドに注目してください。

```shell theme={null}
curl -X PUT -H "Content-Type: application/json" -d '
{
  "label" : "Updated Webinar Name",
  "objectPropertyName": "zz_webinar_name"
}' \
'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates/<<eventTemplateId>>/tokens/<<tokenName>>?hapikey=<<developerHapikey>>'
```

これは、`objectPropertyName`を使用して、このカスタム イベント トークンを`contact`オブジェクトの`zz_webinar_name`プロパティーにマッピングしています。つまり、`webinarName`トークンを指定した新しいイベントを作成すると、関連する`contact`の`zz_webinar_name`プロパティーも設定されます。この設定は、カスタムまたは事前定義済みのHubSpotプロパティーに対して行うことができます。

例えば、コンタクトの`zz_company_name`カスタムプロパティーを参照する`companyName`トークンを事前に作成しているとします。その場合に次のようなイベントを作成すると、Eメールアドレスが[a.test.contact@email.com](mailto:a.test.contact@email.com)のコンタクトに`zz_company_name`と`zz_webinar_name`プロパティーが設定されます。

```shell theme={null}
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer <<OAuth2AccessToken>>" \
-d '
{
  "eventTemplateId": "<<eventTemplateId>>",
  "email": "a.test.contact@email.com",
  "tokens": {
    "webinarName": "Test Webinar will update contact property",
    "companyName": "TestCo",
    "webinarId": "001001",
    "webinarType": "regular"
  }
}' \
'https://api.hubapi.com/crm/v3/timeline/events'
```

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

注：イベントトークンがカスタムプロパティーに付加される際に該当するカスタムプロパティーがHubSpotアカウント上に存在しない場合、イベントには値が設定されますが、対応するオブジェクト側では無視されます。

### `extraData`について

イベント テンプレート トークンによって使用される「トークンと値」の単純な構造が適さない詳細なデータを、イベントに追加することが必要になるかもしれません。あるいは連携のイベントに、リストまたは階層状の内訳が必要になる場合も考えられます。こうした状況で役立つのが`extraData`です。

`extraData`属性をイベントのJSON本文に追加することができます。この`extraData`の値として、任意の有効なJSONを指定できます。以下に例を示します。

```shell theme={null}
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer <<OAuth2AccessToken>>" \
-d '
{
  "eventTemplateId": "<<eventTemplateId>>",
  "email": "a.test.contact@email.com",
  "tokens": {
    "webinarName": "Test Webinar will update contact property",
    "companyName": "TestCo",
    "webinarId": "001001",
    "webinarType": "regular"
  },
  "extraData": {
    "pollData": [
      {
        "question": "How excited are you for this webinar?",
        "answer":"Quite!"
      },
      {
        "question": "How frequently do you use our product?",
        "answer":"Daily"
      }
    ],
    "coWorkers": [
      {
        "name": "Joe Coworker",
        "email":"joe.coworker@testco.com"
      },
      {
        "name": "Jane Coworker",
        "email":"jane.coworker@testco.com"
      }
    ]
  }
}' \
'https://api.hubapi.com/crm/v3/timeline/events'
```

詳細テンプレートでの`extraData`の使用例：

```shell theme={null}
//
Registration occurred at {{#formatDate timestamp}}{{/formatDate}}

#### Poll Questions
{{#each extraData.pollData}}
  **{{question}}**: {{answer}}
{{/each}}

#### Co-Workers
{{#each extraData.coWorkers}}
  * {{name}}
{{/each}}
```

タイムラインイベントには次のように表示されます。

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

注：`extraData`属性は、イベントの詳細テンプレート内でのみ参照できます。ヘッダーテンプレートやリストセグメンテーションの中では使用できません。

### カスタムアイコンを設定する

タイムライン上の項目にビジュアル効果を付けるために、必要に応じてカスタムアイコンを追加できます。

アイコンには、次のような画像ファイルを使用してください。

* ほぼ正方形に近い形
* 背景を透過にする
* コンテンツをアイコンの中央に配置する
* 30×30ピクセルにまで縮小可能
* ファイルサイズが5MB以下

タイムラインイベントに使用するアイコンを設定するには、［タイムラインイベント］に進みます。プレースホルダー画像または既存のアイコンをクリックして、設定または変更します。

<Frame>
  <img src="https://www.hubspot.jp/hubfs/timeline_assets.png" alt="timeline_assets" />
</Frame>

設定したアイコンは、アプリに関連する全てのタイムラインイベントの横に表示されます。

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

### イベントインスタンスの制限

イベントを作成するとき、シリアル化された各イベントインスタンスには、次のサイズ制限が適用されます。

* イベントインスタンスIDは500バイト
* プロパティー／トークンあたり510KB
* イベントインスタンスの合計サイズは1 MB

***

#### 関連ドキュメント

[CRMについて](/guides/crm/understanding-the-crm)

[CRMカード](/api-reference/crm-public-app-crm-cards-v3/guide)
