タイムラインイベント

CRM拡張機能を使用すると、HubSpotのコンタクト/会社/取引オブジェクトについて外部のシステムからの情報を表示できます。そのためにはカスタム タイムライン イベントを作成し、タイムライン イベント エンドポイントを活用します。 

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

タイムライン イベント テンプレートの削除に関する注意事項

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

タイムラインイベントの設定


タイムラインイベントの例を以下に示します。

event_expanded.png

1. イベントテンプレートの作成

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

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

イベントテンプレートごとに、トークンとテンプレートの固有のセットがあります。コンタクトに対して作成されたイベントは、新しいコンタクトリストまたはワークフローを作成する際の条件として使用できます。例:動画名にXYZが含まれる動画にいいね!を付けたコンタクトすべてのリストを作成する(イベントトークン「video name」が設定されたイベントテンプレート「Video Like」を作成)

APIによるイベントテンプレートの作成

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

Shell script
curl -X POST -H "Content-Type: application/json" -d '
{ 
  "name": "Example event template", 
  "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 script
curl -X GET 'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates?hapikey=<<developerAPIkey>>'

UIでのイベントテンプレートの作成

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

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

2-timeline_event_template

 

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

3-new_timeline_event_templ

 

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

4-data-tab-1


2. イベントトークンの定義

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

APIによるイベントトークンの作成

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

 

Shell script
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 script
curl -X GET -H "Content-Type: application/json" 'https://api.hubapi.com/crm/v3/timeline/<<appId>>/event-templates/<<eventTemplateId>>/tokens?hapikey=<<developerHapikey>>'
対応しているトークンのタイプ:
  • string
  • number
  • enumeration — 選択肢のセット。前述のwebinarTypeの例をご覧ください。
  • date — 日付には必ずミリ秒単位のUnix時刻を使用します。

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


3. ヘッダーテンプレートおよび詳細テンプレートの定義

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

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

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

APIによるヘッダーテンプレートおよび詳細テンプレートの定義

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

Shell script
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ディレクティブの使用にも注目してください。ユーザーにとって分かりやすい日付形式にするために定義しています。

このようにコンタクトに関するイベントを作成すると(後述のイベントの作成を参照)、コンタクトのタイムラインに次のように表示されます。

event_collapsed.png

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

event_expanded.png

イベントの横に表示されるアイコンを設定するには、後述のカスタムアイコンの設定を参照してください。

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

 

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

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

Shell script
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>>'

5. イベントの作成

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

Shell script
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のタイムライン上にイベントが生成されます(前述の「テンプレートの定義」のテンプレートがある前提で)。

event_collapsed.png

開発者APIキーは開発者アカウントからの設定専用であるため、イベントの作成には使用できません。イベントを作成するためには、HubSpotアカウントから貴社のアプリにOAuth(英語)経由でアクセス権限を付与してもらう必要があります。アクセストークン(英語)を入手したら、アクセストークンを使用してアカウントのコンタクトにイベントを追加できます。

イベントタイムスタンプの設定

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

Shell script
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形式です。

 

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

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

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

Shell script
// {
  "eventTemplateId": "<<eventTemplateId>>",
  "email": "a.test.contact@email.com",
  "tokens": {
    "webinarName": "A Test Webinar",
    "webinarId": "001001",
    "webinarType": "regular"
  }
}

既存のコンタクトの場合、イベントの関連付けにコンタクトのvidを使用することもできます。その場合、リクエストJSONの中でobjectIdを使用します。これは既存のコンタクトのvidでなければならない点に注意してください。objectIdを使用してコンタクトを新規に作成することはできないためです。この例では、EメールではなくobjectIdを使用しています。

Shell script
// {
  "eventTemplateId": "<<eventTemplateId>>",
  "email": "a.test.contact@email.com",
  "tokens": {
    "webinarName": "A Test Webinar",
    "webinarId": "001001",
    "webinarType": "regular"
  }
}

ユーザートークンまたはutkにより、イベントをコンタクトに関連付けることもできます。ユーザートークンは、HubSpotトラッキングコードでの訪問者のトラッキングに使用され、hubspotutkのCookie内に格納されます。utkパラメーターは、ユーザートークンによってイベントをコンタクトに関連付ける際に使用します。注:匿名の訪問者にはユーザートークンを使用してイベントを関連付けることができません。したがってイベントの関連付けにutkのみが使用されていて、かつ提供されているユーザートークンがまだコンタクトに関連付けられていない場合は、新しいコンタクトが作成されず、イベントはHubSpot上で確認できなくなります。しかし、新しいコンタクトが別の手段(通常はhutkを含むフォーム送信(英語)、またはトラッキングコードAPIのidentifyメソッド(英語))によってユーザートークンに関連付けられていた場合は、イベントがタイムラインに表示されます。そのため、utkに加えてemailを含めることにより、イベントを新しいコンタクトまたは既存のコンタクトに関連付けることを強くお勧めします。

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

Shell script
// {
  "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 script
// {
  "eventTemplateId": "<<eventTemplateId>>",
  "objectId": "3001",
  "tokens": {
    "dealProperty": "Custom property for deal"
  }
}

7. タイムライン拡張機能

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

  • linkLabel - IFrameを表示するリンクの表示に使用するテキスト。
  • headerLabel - IFrameコンテンツを表示するモーダルウィンドウのラベル。 
  • url - IFrameコンテンツのURI。
  • width - モーダルウィンドウの幅。
  • height - モーダルウィンドウの高さ。

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

Shell script
// {
  "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」リンクを含む、次のイベントが作成されます。

external_data_link.png

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

iframe_modal.png

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

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

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

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

Shell script
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トークンを指定した新しいイベントを作成すると、関連するcontactzz_webinar_nameプロパティーも設定されます。この設定は、カスタムまたは事前定義済みのHubSpotプロパティーに対して行うことができます。

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

Shell script
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'

set_property.png

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

 

9. extraDataについて

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

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

Shell script
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 script
//
Registration occurred at {{#formatDate timestamp}}{{/formatDate}}
 
#### アンケートの質問
{{#each extraData.pollData}}
  **{{question}}**: {{answer}}
{{/each}}
 
#### 同僚
{{#each extraData.coWorkers}}
  * {{name}}
{{/each}}

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

extra_data.png

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

10. カスタムアイコンの設定

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

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

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

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

timeline_icon

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

timeline_icon.png


関連ドキュメント

CRMについて

CRMカード(英語)