標準オブジェクトの限界を理解し、カスタムオブジェクトで解決できる課題を整理する。
HubSpot に組み込まれた固定のオブジェクト。
Contacts / Companies / Deals / Tickets / Products / Line Items / Quotes など。
ほとんどのビジネスに対応できるが、業種固有のデータ構造には限界がある。
開発者が自由に定義できるオブジェクト。
「物件」「車両」「サブスクリプション」「イベント」「資格」など、
業種・業務に合わせた独自のデータ構造を HubSpot CRM に追加できる。
Enterprise 必須
不動産業:「物件」オブジェクト → Contacts(オーナー・入居者)と紐づけて管理
自動車販売:「車両」オブジェクト → Deals(商談)・Contacts(オーナー)と関連付け
SaaS:「サブスクリプション」オブジェクト → Contacts・Deals と紐づけてライフサイクル管理
教育:「コース」「受講履歴」オブジェクト → Contacts の学習進捗を追跡
製造業:「設備」「メンテナンス記録」オブジェクト → Tickets と連携してサポート管理
実装前にオブジェクト構造・プロパティ・アソシエーションを設計する。
① 管理したいエンティティを洗い出す → ② 標準オブジェクトで代替できるか確認 → ③ カスタムオブジェクトの名前・プロパティを定義 → ④ 標準オブジェクトとのアソシエーションを設計 → ⑤ API で実装
設計例:SaaS プロダクトのスキーマ
subscriptions(カスタム)が contacts・companies・deals を橋渡しする中心オブジェクト
| 設計の判断基準 | 標準オブジェクトを使う | カスタムオブジェクトを使う |
|---|---|---|
| データの性質 | 人・会社・商談・サポートに近い | 業種固有のエンティティ(物件・車両・契約など) |
| プロパティ数 | 既存プロパティで十分 | 専用プロパティが10個以上必要 |
| レポート要件 | 標準レポートで対応可能 | カスタムオブジェクト固有の集計が必要 |
| ワークフロー連携 | 標準ワークフローで対応可能 | カスタムオブジェクトをトリガーにしたい |
API を使ってカスタムオブジェクトのスキーマを定義・作成する。
objectTypeId(例:2-12345678)が返されます。
以降の API 呼び出しではこの ID を使います。
/crm/v3/objects/2-12345678 のようにパスに含めてアクセスします。
プロパティの type・fieldType の組み合わせと、各型のユースケースを整理する。
| type | fieldType | 格納値 | ユースケース |
|---|---|---|---|
string |
text |
テキスト | 名前・メモ・URL・コードなど |
string |
textarea |
長文テキスト | 説明・備考・メモ欄 |
number |
number |
数値 | 金額・スコア・数量・座標 |
enumeration |
select |
1つの選択肢 | ステータス・ランク・カテゴリ |
enumeration |
radio |
1つの選択肢 | Yes/No・優先度(見やすさ重視) |
enumeration |
checkbox |
セミコロン区切り複数値 | タグ・機能フラグ・複数選択 |
date |
date |
YYYY-MM-DD | 契約日・期限・誕生日 |
datetime |
date |
Unix ミリ秒 | タイムスタンプ・最終ログイン |
bool |
booleancheckbox |
true / false | フラグ・有効/無効・同意 |
phone_number |
phonenumber |
電話番号文字列 | 電話番号(国際形式対応) |
;)区切りの文字列として格納します。
例:"feature_a;feature_b;feature_c"
Search API でフィルターする場合は CONTAINS_TOKEN 演算子を使用してください。
カスタムオブジェクトと標準・他カスタムオブジェクト間の関係を定義する。
カスタムオブジェクト間のアソシエーションは Schemas API でスキーマ定義時に設定するか、 後から Associations Schema API で追加できます。 「1対多」「多対多」どちらの関係も表現可能です。 アソシエーションラベルを使うと、同じオブジェクト間でも「主担当」「副担当」のように関係の種類を区別できます。
標準オブジェクトと同じ API パターンで、カスタムオブジェクトのレコードを操作する。
batchApi.upsert() は、指定した一意プロパティ(idProperty)の値が一致するレコードがあれば更新し、
なければ新規作成します。外部システムとの定期同期に非常に便利です。
hasUniqueValue: true のプロパティのみ idProperty に指定できます。
作成済みのカスタムオブジェクトのスキーマを管理する。
Stripe などの外部サービスのサブスクリプションデータを HubSpot カスタムオブジェクトに同期する設計パターン。
① Stripe Webhook → サブスクリプション変更イベントを受信
② Node.js サーバー(または Serverless Function)→ イベントを処理
③ HubSpot Upsert API → カスタムオブジェクト subscriptions を更新
④ Associations API → Contacts・Deals と紐づけ
⑤ HubSpot Workflow → ステータス変更をトリガーに通知・タスク作成
次章(CMS Hub 開発——テーマ & テンプレート)に進む前に確認する。
✅ Chapter 4 チェックリスト
- カスタムオブジェクトが必要な状況(標準オブジェクトでは不十分なケース)を判断できる
- スキーマ設計の5ステップ(洗い出し→確認→定義→アソシエーション→実装)を理解した
- Schemas API でカスタムオブジェクトを作成できる
- objectTypeId の使い方を理解した(
2-XXXXXXXX形式) - プロパティ型(string/number/enumeration/date/bool)と fieldType の組み合わせを選択できる
- hasUniqueValue を使った一意制約を設定できる
- カスタムアソシエーションラベルを作成・適用できる
- カスタムオブジェクトに対して CRUD・Search・Batch 操作ができる
- Upsert API を使って外部システムとの差分同期を実装できる
- Stripe などの外部サービスと HubSpot カスタムオブジェクトを Webhook 経由で同期できる