最終更新日: 2025年9月11日
この機能を使用するには、HubSpotからの承認が必要です。アプリオブジェクトへのアクセスの申請に関心がある場合、または機能について詳しく知りたい場合は、こちらのフォームをお送りください。
以下で、アプリオブジェクトを使用した開発者プラットフォームのアプリ機能のリファレンス情報(設定ファイルの定義、スコープの詳細など)を紹介します。

プロジェクトの構成

  • 全てのプロジェクトコンポーネントは、hsproject.json設定ファイルに指定されているsrcディレクトリー内に配置されている必要があります。
  • アプリの全ての機能とコンポーネントはapp/ディレクトリー内に配置される必要があります。
  • アプリオブジェクトの関連付けは、app-object-associations/ディレクトリー内で定義されます。
  • Webhook配信登録はwebhooks/ディレクトリー内で定義されます。
  • カスタム ワークフロー アクションはworkflow-actions/ディレクトリー内で定義されます。
  • 全てのカード機能はcards/ディレクトリー内に配置されている必要があります。
  • 全てのコンポーネントと機能のインスタンスは、*-hsmeta.jsonファイルを使用して宣言されます。ファイル名の前に意味のあるプレフィックスを付ける必要があります(例:my-app-hsmeta.json)。これらのファイルは、該当するフォルダーのルートレベルに配置されている必要があります(例:app/my-app-hsmeta.jsoncards/my-card-hsmeta.json)。
以下のディレクトリー構造の例は、利用可能な全ての機能の概要を示しています。
my-folder/
├── hsproject.json
├──src
   ├── app/
   └── app-hsmeta.json/
   └── app-objects/
     └── my-app-object-hsmeta.json
   └── app-object-associations/
     └── my-app-object-association-hsmeta.json
   └── webhooks/
     └── webhooks-hsmeta.json
   └── cards/
     └── my-app-card-hsmeta.json
     └── MyCard.jsx
└──

GitHubでサンプルを表示

アプリオブジェクト

アプリオブジェクトを作成するには、プロジェクトに、設定ファイルを格納したapp-objectsコンポーネントディレクトリーを含めます。
...
├──src
   ├── app/
   └── app-hsmeta.json
   └── ...
   └── app-objects/
     └── my-app-object-hsmeta.json
└──
*-object-hsmeta.jsonで使用できる設定オプションを以下に示します。
{
  "uid": "car-app-object",
  "type": "app-object",
  "config": {
    "name": "CAR",
    "appPrefix": "Vroom",
    "description": "An automobile in our warehouse.",
    "singularForm": "Car",
    "pluralForm": "Cars",
    "primaryDisplayLabelPropertyName": "model",
    "secondaryDisplayLabelPropertyNames": ["make"],
    "settings": {
      "hasRecordPage": true,
      "allowsUserCreatedRecords": true,
      "hasEngagements": true
    },
    "properties": [
      {
        "type": "string",
        "fieldType": "text",
        "name": "model",
        "label": "Model",
        "description": "The model of the car"
      },
      {
        "type": "enumeration",
        "fieldType": "select",
        "name": "make",
        "label": "Make",
        "description": "The manufacturer of the car.",
        "options": [
          {
            "label": "Ford",
            "value": "ford",
            "displayOrder": 0
          },
          {
            "label": "Toyota",
            "value": "toyota",
            "displayOrder": 1
          },
          {
            "label": "Chevrolet",
            "value": "chevrolet",
            "displayOrder": 2
          }
        ]
      }
    ]
  }
}

GitHubでサンプルを表示

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

フィールド説明
uid*文字列アプリオブジェクトの固有ID。プロジェクト全体で重複しないラベルにする必要があります。
type*文字列コンポーネントのタイプ。親フォルダーの名前(app-object)に一致している必要があります。
name*文字列アプリオブジェクトの名前。承認済みアプリの確認で受け取った承認済みの名前を使用します。大文字のスネークケース(MY_OBJECT_NAME)にする必要があります。
appPrefix文字列HubSpotのUIで、オブジェクトの単数形または複数形の名前の前に付ける文字列。これにより、他のオブジェクトと区別しやすくなります。この例では、appPrefixVroomsingularFormCarであるため、UIに「Vroom Car」と表示されます。
description*文字列HubSpotに表示されるオブジェクトの説明。
singularForm*文字列オブジェクト名の単数形。
pluralForm*文字列オブジェクト名の複数形。
properties*配列オブジェクトに対して定義されているCRMプロパティーのリスト。プロパティーは、プロパティーAPIと同じフィールドを使用して定義します。作成されるプロパティーには、作成時にa<appId>_が自動的に付加されます(例:a12345_make)。設定ファイルにプレフィックスを含めないでください。
primaryDisplayLabelPropertyName*文字列プライマリー表示プロパティーとして使用するプロパティーの名前。この値は、propertiesリストで指定される名前に一致している必要があります(つまり、生成されたa<appId>_プレフィックスを含めることはできません)。
secondaryDisplayLabelPropertyNames*配列セカンダリー表示プロパティーとして使用するプロパティーのリスト。この値は、propertiesリストで指定される名前に一致している必要があります(つまり、生成されたa<appId>_プレフィックスを含めることはできません)。
settings*オブジェクトオブジェクト設定を含むオブジェクト。
hasRecordPage*ブール値このアプリオブジェクトのインスタンスのレコードページが存在するかどうか。falseに設定すると、インデックスページは引き続き存在しますが、個々のレコードページへのリンクは含まれなくなります。
allowsUserCreatedRecords*ブール値エンドユーザーがオブジェクトを使用してレコードを作成できるかどうか。falseに設定すると、ユーザーがHubSpotでレコードを作成できなくなります
hasEngagements*ブール値アプリ オブジェクト レコードでアクティビティー/エンゲージメントをサポートするかどうか。falseに設定すると、アプリ オブジェクト レコード ページには、アクティビティーのタブやアクティビティー関連のタイムラインフィルターなどのエンゲージメント機能が一切含まれなくなります。
アプリオブジェクトの完全修飾名(FQN)はa<appId>_<objectName>です。例:appId16858319でアプリオブジェクト名がCARSの場合、FQNはa16858319_CARSになります。FQNは、アプリオブジェクトのスコープ値を設定する際に使用します。

アプリスキーマ

アプリオブジェクトを作成するには、app-hsmeta.json設定ファイルをappディレクトリーに含めます。
...
├──src
   ├── app/
   └── app-hsmeta.json/
└──
app-hsmeta.jsonで使用できる設定オプションを以下に示します。
{
  "uid": "app_object_poc_app",
  "type": "app",
  "config": {
    "description": "An example to demonstrate how to build an app with an app object on developer projects.",
    "name": "my first app object app",
    "distribution": "marketplace",
    "auth": {
      "type": "oauth",
      "redirectUrls": ["http://localhost:3000/oauth-callback"],
      "requiredScopes": [
        "crm.objects.contacts.read",
        "crm.objects.contacts.write"
      ],
      "optionalScopes": [],
      "conditionallyRequiredScopes": []
    },
    "permittedUrls": {
      "fetch": ["https://api.hubapi.com"],
      "iframe": [],
      "img": []
    },
    "support": {
      "supportEmail": "support@example.com",
      "documentationUrl": "https://example.com/docs",
      "supportUrl": "https://example.com/support",
      "supportPhone": "+18005555555"
    }
  }
}

GitHubでサンプルを表示

アプリスキーマ *-hsmeta.jsonのフィールド

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

フィールド説明
uid*文字列アプリの内部固有ID。プロジェクト全体で重複しないラベルにする必要があります。最大64文字の任意の文字列を指定できます。大文字または小文字を使用できます。数字、アンダースコア(_)、ダッシュ(-)、ピリオド(.)を含めることができます。
type*文字列コンポーネントのタイプ。親フォルダーの名前(app)に一致している必要があります。
description*文字列インストールを実行するユーザーに対するアプリの動作の説明。最大8192文字の任意の文字列を指定できます。
name*文字列HubSpotに表示されるアプリの名前。最大200文字までの任意の文字列を指定できます。先頭や末尾を空白文字にすることはできません。
distribution*文字列アプリの配布方法。アプリをアプリマーケットプレイスに掲載できるようにするには、marketplaceに設定する必要があります。
auth*オブジェクトアプリの認証方法の詳細を含むオブジェクト。詳細については、認証フィールドの表をご確認ください。
permittedUrlsオブジェクトアプリが呼び出すことができるURLを含む配列。URLではHTTPSスキームを使用する必要があります。また、URLにはオーソリティー、とその後に(必要に応じて)オプションのパスプレフィックスを含める必要があります。
supportEmail文字列ユーザーがサポートを受けるために連絡できる有効なEメールアドレス。
documentationUrl文字列ユーザーがサポートドキュメントを参照するためにアクセスできる外部URL。HTTPSを使用する必要があります。
supportUrl文字列ユーザーが追加のサポートを受けるためにアクセスできる外部URL。HTTPSを使用する必要があります。
supportPhone文字列ユーザーがサポートを受けるために連絡できる電話番号。プラス記号(+)で始まる必要があります。

認証フィールド

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

フィールド説明
type*文字列認証のタイプ。アプリでOAuth認証を使用するには、oauthに設定する必要があります。
redirectUrls*配列OAuthプロセスで再ルーティング先として許可されるURLのリスト。各アプリには少なくとも1つの認証リダイレクトURLが必要であり、このURLではHTTPSを使用する必要があります。唯一の例外として、テスト目的の場合はhttp://localhostを使用できます。
requiredScopes*配列アプリの必須スコープのリスト。各アプリには少なくとも1つのスコープが含まれる必要があります。アプリを正常にインストールするには、インストールを行うユーザーがこれらのスコープを付与する必要があります。スコープの詳細については、以下の説明をご確認ください
optionalScopes配列アプリの任意のスコープのリスト。アプリをインストールするアカウントまたはユーザーに適切な権限がない場合は、インストール時にこれらのスコープを認証から除外できます。その場合、作成されるリフレッシュトークンやアクセストークンにはスコープが含まれません。スコープの詳細については、以下の説明をご確認ください
conditionallyRequiredScopes配列インストールURLのscopeクエリーパラメーターに含まれている場合にのみ必須であるスコープのリスト。スコープの詳細については、以下の説明をご確認ください

スコープ

アプリ設定ファイルのauthフィールドでは、必須スコープ、条件次第で必須となるスコープ、任意のスコープという3種類のスコープを指定できます。ベータのこの段階では、アプリ オブジェクト スコープをconditionallyRequiredScopesとして含めるだけにしてください。これにより、インストールURLにアプリオブジェクトのスコープを含めることで、新機能の対象を特定の顧客のみに限定できます。 アプリ オブジェクト スコープでは次の形式が使用されます。 crm.app.schemas.<appObjectFullyQualifiedName>.read 例えばFQNがa16858319_carsのアプリオブジェクトの場合、readスコープは次のようになります: crm.app.schemas.a16858319_cars.read 顧客がオブジェクトにアクセスできるようにするには、少なくともアプリに上記のreadスコープを含める必要があります。次のように、アプリに全てのアプリ オブジェクト スコープを含めることをお勧めします。
"auth": {
      "type" : "oauth",
      "redirectUrls": ["http://localhost:3000/oauth-callback"],
      "requiredScopes": [
        "crm.objects.contacts.read",
        "crm.objects.contacts.write",
        "crm.app.objects.a12345_MY_APP_OBJECT.view",
        "crm.app.objects.a12345_MY_APP_OBJECT.create",
        "crm.app.objects.a12345_MY_APP_OBJECT.edit",
        "crm.app.schemas.a12345_MY_APP_OBJECT.read",
        "crm.app.objects.a12345_MY_APP_OBJECT.merge",
        "crm.app.objects.a12345_MY_APP_OBJECT.delete",
        "crm.app.schemas.a12345_MY_APP_OBJECT.properties.write"
      ],
      "optionalScopes": [],
      "conditionallyRequiredScopes": []
    },

使用可能な全てのスコープのリストについては、スコープリファレンスを参照してください。

Webhookコンポーネントの定義

アプリの一連のWebhook配信登録を定義するには、プロジェクトに、*-hsmeta.json設定ファイルを格納したwebhooksディレクトリーを含めます。
├──src
   ├── app/
   └── app-hsmeta.json
   └── ...
   └── webhooks/
     └── webhooks-hsmeta.json
└──
*-hsmeta.jsonファイルで使用できる設定オプションを以下に示します。
{
  "uid": "webhooks",
  "type": "webhooks",
  "config": {
    "settings": {
      "targetUrl": "https://example.com/webhook",
      "maxConcurrentRequests": 10
    },
    "subscriptions": {
      "crmObjects": [
        {
          "subscriptionType": "object.creation",
          "objectType": "contact",
          "active": true
        },
        {
          "subscriptionType": "object.propertyChange",
          "objectType": "car_app_object",
          "propertyName": "carProperty",
          "active": true
        }
      ],
      "legacyCrmObjects": [
        {
          "subscriptionType": "contact.propertyChange",
          "propertyName": "lastname",
          "active": true
        },
        {
          "subscriptionType": "contact.deletion",
          "active": true
        }
      ],
      "hubEvents": [
        {
          "subscriptionType": "contact.privacyDeletion",
          "active": true
        }
      ]
    }
  }
}

Webhook *-hsmeta.jsonのフィールド

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

フィールド説明
uid*文字列Webhookコンポーネントの内部固有ID。
type*文字列コンポーネントのタイプ。この場合はwebhooksにする必要があります。
settings*オブジェクト2つのフィールドを指定するオブジェクト。一方のtargetUrlフィールドで、HubSpotがイベントペイロードを配信するために呼び出す、一般公開されたURLを指定します。もう一方のmaxConcurrentRequestsフィールドでは、HubSpotが所定の時間枠内に送信するHTTPリクエスト数の上限しきい値を指定します。
subscriptions*オブジェクトアプリで配信登録する配信カテゴリーを指定するオブジェクト。
crmObjects配列イベント配信登録の定義からなる配列。これは標準で組み込まれる配列であり、新しい形式(object.*)の全てのイベントにはこの配列を使用する必要があります。イベントによっては、代わりにlegacyCrmObjects配列とhubEvents配列に、従来のWebhook配信カテゴリーを含める必要があります。
legacyCrmObjects配列従来の配信カテゴリー(contact.creationdeal.deletionなど)からなる配列。
hubEvents配列従来の配信カテゴリーcontact.privacyDeletionおよびconversation.*からなる配列。
subscriptionオブジェクトごとに、対象とする配信登録定義のタイプ(crmObjectslegacyCrmObjectshubEvents)や、特定のプロパティーの変更(contact.propertyChangeなど)に配信登録するかどうかに応じて、以下のフィールドを指定できます。
フィールド説明
subscriptionType文字列配信登録する対象のイベントのタイプ。
objectType文字列crmObjects配列内で指定されている配信登録の場合、このフィールドで、アプリの配信登録先のCRMオブジェクトを指定します。アプリオブジェクト変更に対する配信登録の場合は、このフィールドにアプリオブジェクト名を含めます(例:car_app_object)。
propertyName文字列プロパティー変更に対する配信登録の場合、このフィールドで、Webhookイベントをトリガーするプロパティーを指定します。
activeブール値この配信登録に対してWebhookイベントをトリガーするかどうかを示します。

アプリカードのスキーマ

アプリ オブジェクト レコード ページに表示されるアプリカードを作成するには、プロジェクトに、設定ファイルを格納したcardsコンポーネントディレクトリーを含めます。
├──src
   ├── app/
   └── app-hsmeta.json
   └── ...
   └── cards/
     └── my-app-card-hsmeta.json
     └── MyCard.jsx
└──
  • アプリ オブジェクト コンポーネントと関連設定ファイルを作成した後にhs project uploadを実行していることを確認してください。
  • my-app-card-hsmeta.jsonファイルのobjectTypes配列にアプリオブジェクトUID(この例では"app_object_uid")を追加します。.jsonファイルで使用できる各フィールドの詳細については、以下のでご確認ください。
{
  "uid": "my-app-card",
  "type": "card",
  "config": {
    "name": "My app card",
    "description": "An example description of the card, which lives on contact records.",
    "previewImage": {
      "file": "./preview.png",
      "altText": "A short description of the preview image"
    },
    "entrypoint": "/app/cards/MyCard.jsx",
    "location": "crm.record.tab",
    "objectTypes": ["contacts", "app_object_uid"]
  }
}
  • example-card-hsmeta.jsonファイルの変更内容を保存したら、hs project uploadを実行します。
カードがアプリオブジェクトの既定のビューに自動的に追加されます。カードが自動的に表示されない場合は、CRMレコードにカードを追加する方法をご確認ください。

GitHubでサンプルを表示

アプリカード *-hsmeta.jsonのフィールド

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

フィールド説明
uid*文字列カードの固有ID。任意の文字列を指定できますが、カードを識別できる意味のある文字列である必要があります。HubSpotではこのIDでカードが識別されるため、CRMレコードの位置などの履歴データやステートフルデータを削除することなく、カードのタイトルを変更できます。
type文字列コンポーネントのタイプ。この場合はcardにする必要があります。
configオブジェクト設定の詳細を含むオブジェクト。
name*文字列HubSpotのUIに表示されるカードのタイトル。
description文字列カードの説明。
previewImageオブジェクトfileフィールドとaltTextフィールドを含むオブジェクト。fileフィールドは、プレビュー画像の相対パスです。有効なファイル拡張子はpng、jpeg、jpg、gifです。最大ファイルサイズは5.0MBです。altTextフィールドは、画像の簡単な説明です。
entrypoint*文字列カードのフロントエンドReactコードのファイルパス。
location*crm.record.tab | crm.record.sidebar | helpdesk.sidebarHubSpotのUIでカードが表示される場所。詳細については、拡張機能の場所をご確認ください。
objectTypes*配列このカードが表示されるCRMレコードのタイプ。

アプリオブジェクトの関連付け

アプリオブジェクトと他のCRMオブジェクトの間の関連付けを有効にするには、プロジェクトに、設定ファイルを格納したapp-object-associationsコンポーネントディレクトリーを含めます。
├── src
   ├── app/
   └── app-hsmeta.json
   └── ...
   └── app-object-associations/
     └── my-app-object-association-hsmeta.json
└──
使用できるアプリオブジェクト設定オプションを以下に示します(*-association-hsmeta.json)。
{
  "uid": "car_to_contact_association",
  "type": "app-object-association",
  "config": {
    "firstObjectType": "car-app-object",
    "secondObjectType": "CONTACT"
  }
}

関連付け *-association-hsmeta.jsonのフィールド

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

フィールド説明
uid*文字列アプリの内部固有ID。プロジェクト全体で重複しないラベルにする必要があります。
type*文字列コンポーネントのタイプ。親フォルダーの名前(app-object-association)に一致している必要があります。
config*オブジェクトオブジェクト関連付けの設定を含むオブジェクト。
firstObjectType*文字列関連付けの最初のオブジェクト。アプリオブジェクトまたはHubSpotのCRMオブジェクトのいずれかを指定できます。アプリオブジェクトは、ソースファイルに指定されたuidによって参照されます。標準オブジェクトは、そのfullyQualifiedNameによって参照されます。結果として得られる関連付けは双方向になるため、これらのフィールド値の順序は任意です。
secondObjectType*文字列関連付けの2番目のオブジェクト。詳細については、firstObjectTypeを参照してください。