最終更新日: 2025年9月11日
以下でイベントタイプのスキーマ、イベントタイムライン表示テンプレート、イベントオカレンスのフィールドなど、アプリイベントの使用に関する参照情報を紹介します。

プロジェクトの構成

プロジェクトのコンテキストで、イベントタイプの定義をapp/内のapp-eventsディレクトリーに配置します。app-eventsディレクトリーには、各イベントタイプのJSONスキーマ定義ファイル(*-hsmeta.json)が含まれている必要があります。
project-folder/
└── src/
    └── app/
        ├── app-hsmeta.json
        └── app-events/
            └── my-event-type-hsmeta.json
イベントタイプの定義をプロジェクトに含めるための要件を以下に示します。
  • アプリがOAuth認証を使用しており、アプリマーケットプレイスでの配布用に設定されている必要があります。また、アプリのrequiredScopestimelineが含まれている必要があります。アプリの設定についての詳細をご確認ください。
  • アプリ イベント コンポーネントを含めるには、その前にプロジェクトが正常にデプロイされている必要があります。

イベント タイプ スキーマ

イベント タイプ スキーマで使用できる設定オプションを以下に示します(*-hsmeta.json)。以下の属性の一部は、イベントタイプが作成された後に変更することはできません。
各アプリで使用できるイベントタイプは750個に制限されています。
{
 "uid": "customer_login_event",
 "type": "app-event",
 "config": {
   "name": "Customer login",
   "headerTemplate": "{{customerName}} logged in.",
   "detailTemplate": "{{customerName}} logged in via the {{loginLocation}}.",
   "objectType": "CONTACT",
   "properties": [
     {
       "name": "customerName",
       "label": "Customer Name",
       "type": "string"
     },
     {
       "name": "loginLocation",
       "label": "Login location",
       "type": "enumeration",
       "options": [
         {
           "value": "mobileApp",
           "label": "Mobile app"
         },
         {
           "value": "website",
           "label": "Website"
         }
       ]
     }
   ]
 }
}

*でマークされたフィールドは必須です。

フィールド説明
uid*文字列イベントタイプの内部固有ID。
type*文字列コンポーネントのタイプ。app-eventでなければなりません。
name*文字列HubSpotに表示されるラベル(最大50文字)。この値を作成後に更新することはできません。
objectType*文字列イベントオカレンスを関連付けることができるCRMオブジェクトタイプの完全修飾名。この値を作成後に変更することはできません。COMPANYCONTACTCUSTOM_OBJECTDEALTICKETAPP_OBJECTのいずれかを指定できます。
headerTemplate文字列CRMタイムライン アクティビティー カードのヘッダーの表示テンプレート。使用できる文字数は最大1,000文字です。
detailTemplate文字列CRMタイムライン アクティビティー カードの本文の表示テンプレート。使用できる文字数は最大10,000文字です。
properties配列イベント オカレンス データを格納する、イベントタイプ用に定義されたプロパティー。イベントタイプごとに最大500個のプロパティーを設定できます。イベントプロパティーの詳細については、以下をご確認ください。

イベントプロパティー

イベントスキーマを定義するときには、properties配列を使用して、イベント オカレンス データの送信先フィールドを定義します。イベントタイプごとに最大500個のプロパティーを設定できます。
 "properties": [
     {
       "name": "customerName",
       "label": "Customer Name",
       "type": "string"
     },
     {
       "name": "loginLocation",
       "label": "Login location",
       "type": "enumeration",
       "options": [
         {
           "value": "mobileApp",
           "label": "Mobile app"
         },
         {
           "value": "website",
           "label": "Website"
         }
       ]
     }
   ]

*でマークされたフィールドは必須です。

フィールド説明
name*文字列プロパティーの内部名。小文字で1~500文字にする必要があります。プロパティーはイベントタイプで重複しない名前にする必要がありますこの値は正規表現"[A-Za-z0-9_\\-.]+"と一致させることはできません。またhs_で始まる値にはできません。
label*文字列HubSpotに表示されるラベル。小文字で1~500文字にする必要があります。
type*文字列プロパティーで取得されるデータのタイプ。STRINGNUMBERDATEENUMERATIONのいずれかを指定できます。
options配列ENUMERATIONタイプのプロパティーの場合、このフィールドは使用可能なオプションを示します。1つ以上のオプションを含める必要があります。各オプションは、以下を含むオブジェクトです。
  • name:HubSpotに表示されるオプションのラベル。
  • value:イベントオカレンスによって提供される内部値
namelabelはイベントタイプ内で重複しないものである必要があります。
objectPropertyName文字列このフィールドが含まれている場合、イベントデータがHubSpotに送信される時点で更新されるCRMオブジェクトのプロパティーの名前です。このプロパティーの値によって、そのプロパティーの既存の値が上書きされます。CRMレコードのプロパティーにデータを付加する方法については、以下をご覧ください。

プロパティーへのデータの付加

場合によっては、アプリ イベント オカレンス データに基づいてCRMレコードのプロパティー値を変更することがあります。例えば、コンタクトの姓名を、オカレンス(例:フォーム送信)によって設定された新しい値に更新することがあります。 イベントオカレンスによってCRMレコードプロパティーを更新するには、イベントプロパティーをイベント タイプ スキーマ内のCRMプロパティーにリンクします。特定のイベントプロパティーの定義フィールドに、objectPropertyNameフィールドを含め、リンクするCRMプロパティーを指定します。プロパティーがリンクされると、HubSpotは常にtimestampフィールドに基づく最新のオカレンスの値を使用して、CRMレコードのプロパティー値を更新します。 例えば以下のイベント タイプ スキーマは、イベントプロパティーcustomerNameをカスタム コンタクト プロパティーcustom_property_nameにリンクします。イベント オカレンス データにcustomerNameの値が含まれている場合、関連付けられているCRMレコードのcustom_property_nameが更新されます。
 "properties": [
     {
       "name": "customerName",
       "label": "Customer Name",
       "type": "string",
       "objectPropertyName": "custom_property_name"
     }
   ]

表示テンプレート

イベント タイプ スキーマにはheaderTemplateフィールドとdetailTemplateフィールドを含めることができます。これらのフィールドにより、イベントオカレンスがCRMレコードタイムラインにどのように表示されるかを設定できます。
  • headerTemplate:アクティビティーカードの上部に、イベントに関する1行の説明(最大1,000文字)として表示する。
  • detailTemplate:アクティビティカードの本文に、イベントの詳細(最大10,000文字)として表示する。
表示テンプレートは、MarkdownHandlebarsテンプレートを使用して作成されています。これらのテンプレートは、イベント オカレンス データを次のように表示できます。
  • どちらのテンプレートでも、構文{{propertyName}}を使用して、イベントオカレンスによって渡されるpropertyデータにアクセスできます。
  • detailTemplateでは、構文{{extraData.fieldName}}を使用して、イベントオカレンスによって渡されるextraData値にもアクセスできます。ドット表記(例:{{extraData.person1.preferredName}})を使用して、extraDataの任意の属性ティアにアクセスできます。
extraDataオブジェクトには有効なJSONのみを含めることができます。JSONの形式が正しくない場合、オカレンスは却下され、エラーレスポンスが返されます。
例えば以下のテンプレートでは、customerNameプロパティーとloginLocationプロパティーのデータと、イベントオカレンスにより送信されたextraDatasurveyDataフィールドが使用されています。 コンタクトタイムラインに表示テンプレートの例がどのように表示されるかを示すスクリーンショット。
"headerTemplate": "{{customerName}} logged in via the {{loginLocation}}.",
"detailTemplate": "#### Post-login survey\n{{#each extraData.surveyData}}\n- **{{question}}**: {{answer}}\n{{/each}}",
テンプレートはMarkdownとHandlebarsを使用して作成されるため、Handlebarsヘルパーを利用してコンテンツをより動的にできます。例えば次のdetailTemplateには、イベント オカレンス データのextraDatasurveyDataフィールドが含まれているかどうかに基づいて、コンテンツを条件付きで表示する#ifヘルパーが含まれています。
  • extraDatasurveyDataが含まれている場合は、ログイン後のアンケートの回答が表示されます。
  • イベントオカレンスにsurveyDataがない場合は、No additional information.が表示されます。
コンタクトタイムラインに以下のサンプルコードががどのように表示されるかを示すスクリーンショット。
"detailTemplate": "{{#if extraData.surveyData}}#### Post-login survey\n{{#each extraData.surveyData}}\n- **{{question}}**: {{answer}}\n{{/each}}{{else}}No additional information."

iframeの使用

イベント オカレンス データにtimelineIFrameフィールドが含まれている場合、タイムライン アクティビティー カードには、ユーザーがリンク先のコンテンツをiframeで表示できるハイパーリンクが含まれます。 timelineIFrameフィールドによってタイムライン アクティビティー カードに含まれるリンクのスクリーンショット
"timelineIFrame": {
    "linkLabel": "Click me",
    "headerLabel": "This is an iframe",
    "url": "https://hubspot.mintlify.io/en-us/apps/developer-platform/build-apps/overview",
    "width": 300,
    "height": 300
  }

フィールド説明
linkLabel文字列クリックするとiframeが表示されるハイパーリンクテキスト。
headerLabel文字列iframeコンテンツを表示するモーダルウィンドウのラベル。
url文字列iframeコンテンツのURL。
width整数iframeモーダルの幅。
height整数iframeモーダルの高さ。

イベントオカレンス

特定のイベントタイプのイベントオカレンスを送信するには、以下のエンドポイントに対するPOSTリクエストを送信します。アプリイベントAPIには、1件のイベントオカレンスを送信するためのエンドポイントと、複数のイベントオカレンスを一括送信するためのエンドポイントが含まれています。どちらのエンドポイントでも、イベント オカレンス データを既存のイベント タイプ スキーマに照らして検証する必要があります。これはリクエスト本文のeventTypeNameで指定します。
1件のイベントオカレンスを送信するには、/integrators/timeline/v4/eventsに対するPOSTリクエストを送信します。リクエスト本文に、イベントタイプの定義済みスキーマに従ってイベント オカレンス データを含めます。
{
  "eventTypeName": "ae000000_integrators-timeline-event-type-id-0000000",
  "objectId": "123456",
  "id": "login-1",
  "properties": {
    "customerName": "Mark S.",
    "loginLocation": "mobileApp"
  }
},
リクエスト本文に、定義されているイベント タイプ スキーマに基づくデータを含めます。リクエスト本文にeventTypeNameを含める必要があります。これは、APIを使用して取得できます。
  {
  "eventTypeName": "ae000000_integrators-timeline-event-type-id-0000000",
  "objectId": "8675309",
  "properties": {
    "customerName": "Mark S.",
    "loginLocation": "mobileApp"
  },
  "id": "login-1529a3gda23",
  "extraData": {
    "surveyData": [
      {
        "question": "How was your login experience?",
        "answer":"Fine!"
      },
      {
        "question": "How likely are you to recommend logging in to a co-worker?",
        "answer":"Extremely likely"
      }
    ]
  }
}

*でマークされたフィールドは必須です。

フィールド説明
eventTypeName*文字列イベントタイプの完全修飾名。APIを使用してイベントを識別するときに使用します。この値はHubSpotによって自動設定され、イベントタイプの作成後に、APIを使用して取得できます。この値を作成後に変更することはできません。
objectId*文字列イベントオカレンスに関連付けるCRMレコードのID。このフィールドはあらゆるタイプのCRMレコードに使用でき、識別子として推奨されます。CRMレコードの関連付けについて詳細をご確認ください。
email文字列コンタクトの関連付けの場合、関連付けるコンタクトのEメールアドレスを指定できます。CRMレコードの関連付けについて詳細をご確認ください。
utk文字列コンタクトの関連付けの場合、関連付ける既存のコンタクトのユーザートークンを指定できます。CRMレコードの関連付けについて詳細をご確認ください。
domain文字列会社の関連付けの場合、関連付ける既存の会社のウェブサイトのドメインを指定できます。CRMレコードの関連付けについて詳細をご確認ください。
timestamp文字列イベントオカレンスの時刻(ISO 8601形式)を設定します。指定しない場合、既定でイベント オカレンス データの送信時刻のタイムスタンプに設定されます。
propertiesオブジェクトイベントタイプで定義したプロパティーのプロパティー名と値のキーと値のペア。
extraData配列このフィールドが含まれている場合、タイムライン表示に関する追加情報を示します。有効なJSONである必要があります。表示テンプレートの追加データの詳細をご確認ください。
timelineIFrameオブジェクトこのフィールドが含まれている場合、ユーザーがリンク先のコンテンツをiframeで表示できるハイパーリンクがタイムラインカードに組み込まれます。iframeの使用についての詳細をご確認ください。
id文字列イベントオカレンスの固有ID。イベントタイプ内で重複しないようにする必要があります。指定しない場合、HubSpotによりランダムなUUIDが生成されます。複数のイベントのIDが同一である場合、最初のイベントのIDが受け入れられ、その他は全て拒否されます。
検証に失敗したオカレンスがある場合でも、正常に検証されたオカレンスは引き続き受け入れられ、保持されます。レスポンスに含まれるエラーメッセージには、修正が必要な内容に関する情報が記述されます。 イベント オカレンス データの送信時に表示されるエラーメッセージの例のスクリーンショット

CRMレコードの関連付け

各イベントオカレンスは、イベント タイプ スキーマで定義されたCRMオブジェクトタイプを持つCRMレコードに関連付けられている必要があります。アプリイベントAPIには、イベント オカレンス データをCRMレコードに関連付けるための複数のフィールドがあります。サポートされている全てのCRMオブジェクトでは、objectIdフィールドを使用することをお勧めします。ただし、場合によっては他のフィールドを使用することがあります。
  • utk/email:コンタクトのIDが不明な場合は、識別にutkフィールドとemailフィールドのいずれかまたは両方を使用します。両方の識別子を指定すると、コンタクトを作成および更新することもできます。以下に例を示します。
    • utkが既存のコンタクトに一致してもemailが一致しない場合、HubSpotは新しいEメールアドレスでコンタクトを更新します。
    • objectIdが指定されていない場合、イベントオカレンスはutk/emailに一致する既存のコンタクトに関連付けられ、一致するコンタクトが見つからない場合はHubSpotによって新しいコンタクトが作成されます。
    • utkのみでは新しいコンタクトレコードを作成できないことにご注意ください。適切な関連付けを確保するために、常にutkemailを含める必要があります。
  • domain:会社の関連付けの場合、objectIdを指定する必要があります。また、会社のdomainプロパティーを更新するためにdomainを含めることもできます。