🟡 HubSpot Operations Hub(Data Hub)実践教科書 — 2026年版
Chapter 8

カスタムオブジェクトと
高度な CRM 設計(Enterprise)

HubSpot 標準の「コンタクト・会社・取引・チケット」では表現できないビジネスデータがある。契約書・プロジェクト・製品・資産・店舗・不動産——こうしたドメイン固有のデータを CRM に持ち込み、既存オブジェクトと関連付けることで、HubSpot を汎用 CRM から「自社のビジネスモデルに特化したシステム」へと進化させるのがカスタムオブジェクトの役割だ。本章ではカスタムオブジェクトの設計原則・プロパティ設計・アソシエーション(関連)設計・API による作成・業種別ユースケース・運用のベストプラクティスを解説する。

📖 読了目安 25分
🎯 対象:HubSpot 管理者・RevOps エンジニア・ソリューションアーキテクト
🔧 必要プラン:Operations Hub Enterprise(必須)

📋 この章の内容

  1. 8-1カスタムオブジェクトとは何か——標準オブジェクトとの違いと設計判断
  2. 8-2業種別ユースケース——SaaS・製造・不動産・教育での活用例
  3. 8-3プロパティ設計とアソシエーション(関連)の設計
  4. 8-4API による作成・読み書き・運用のベストプラクティス
Section 8-1

カスタムオブジェクトとは何か——標準オブジェクトとの違いと設計判断

HubSpot の標準オブジェクトは「コンタクト・会社・取引・チケット」の4種類だ。これらはほとんどの BtoB ビジネスで使えるが、自社固有のビジネスエンティティ(契約書・プロジェクト・機器・資産など)は表現できない。カスタムオブジェクトはこの制約を取り除く。

🗂️ HubSpot CRM オブジェクトモデル——標準 + カスタムの全体像
標準オブジェクト
👤
Contacts
firstname / lastname
email / phone
lifecyclestage
lead_score
標準オブジェクト
🏢
Companies
name / domain
industry / employees
annualrevenue
city / country
標準オブジェクト
💰
Deals
dealname / amount
dealstage / pipeline
closedate
hubspot_owner_id
標準オブジェクト
🎫
Tickets
subject / content
hs_pipeline_stage
hs_ticket_priority
hs_resolution
★ カスタムオブジェクト例
📄
Contracts(契約書)
contract_number
start_date / end_date
contract_value
auto_renew
★ カスタムオブジェクト例
🏗️
Projects(プロジェクト)
project_name
status / phase
kickoff_date
budget / actual_cost
★ カスタムオブジェクト例
🏠
Properties(物件)
property_address
property_type
asking_price
listing_date
★ カスタムオブジェクト例
⚙️
Equipment(機器)
serial_number
model / manufacturer
install_date
warranty_expiry
🔗 アソシエーション(関連)——オブジェクト間を自由に結合できる
Contract ↔ Company(多対1)
Contract ↔ Deal(1対1)
Project ↔ Contact(多対多)
Equipment ↔ Company(多対1)
Equipment ↔ Ticket(多対多)
Property ↔ Contact(多対多)

「カスタムオブジェクトを作るべきか」の判断基準

判断基準カスタムオブジェクトを作る別の方法で対応する
データの独立性 そのエンティティ独自のプロパティが10個以上あり、コンタクトや取引とは明らかに別物 コンタクトや取引にカスタムプロパティを追加するだけで表現できる
1対多の関係 1つの会社に対して複数の「契約書」がある・1つのコンタクトが複数の「プロジェクト」に紐づく 常に1対1(1社に1契約)なら取引オブジェクトのカスタム化で対応できる場合が多い
WF・レポートでの活用 そのオブジェクトを起点にワークフローを動かしたい・レポートで集計したい 閲覧するだけなら Notes や添付ファイルで管理する方法もある
外部システムとの同期 ERP・基幹システムの「契約」「製品」「注文」を HubSpot に同期して活用したい 外部システムが正であり、HubSpot は参照するだけなら連携だけで十分な場合もある
⚠️ カスタムオブジェクトは「作り直しが困難」——設計に時間をかける

カスタムオブジェクトは一度作ってデータが入り始めると、オブジェクト名の変更・プロパティの削除・アソシエーションの変更が難しくなる。本番で使い始める前に必ずサンドボックスで設計を検証し、「5年後もこの構造でいいか」を考えてから作成する。特にオブジェクト名(API 名)は一度設定すると変更できないため、命名規則を事前に決めておく。

Section 8-2

業種別ユースケース——SaaS・製造・不動産・教育での活用例

カスタムオブジェクトの用途はビジネスモデルによって大きく異なる。以下に代表的な4業種の具体的な設計例を示す。

💻
Contracts(契約書オブジェクト)
SaaS / サブスクリプション
「1社が複数プランを契約・部門ごとに別契約・中途解約や部分更新を管理したい。取引オブジェクトだけでは1社1取引になり複数契約を追えない」
カスタムオブジェクト:Contracts
contract_number
plan_type
mrr
arr
start_date
renewal_date
auto_renew
seats
contract_status
関連:Company(多対1)/ Deal(1対1)/ Contact(多対多・署名者)。更新日90日前にワークフローで CSM に更新タスクを作成。MRR の合計を会社レベルのプロパティに自動集計。
⚙️
Equipment(機器・設備オブジェクト)
製造業 / フィールドサービス
「顧客の工場に設置した機器を個体管理したい。どの機器でトラブルが多いか・保守期限が近い機器を一覧したい。今は Excel で管理して情報が CRM と分断している」
カスタムオブジェクト:Equipment
serial_number
model_name
install_date
last_maintenance
warranty_expiry
firmware_version
location
equipment_status
関連:Company(設置先)/ Ticket(多対多・この機器に関するサポートチケット一覧)。保守期限30日前に自動でフィールドサービス担当にタスク作成。
🏠
Properties(物件オブジェクト)
不動産 / 賃貸管理
「コンタクトは「買主・売主・オーナー・入居者」が混在し、物件は1つでも複数の当事者がいる。取引オブジェクトは1商談に1物件を想定しており、物件を中心とした管理ができない」
カスタムオブジェクト:Properties(物件)
property_address
property_type
floor_area
asking_price
listing_status
listing_date
year_built
rooms
関連:Contact(多対多・オーナー / 内見者 / 買主)/ Deal(多対多)。物件を中心に関連する全当事者・商談・内見履歴を一元管理。
🎓
Enrollments(受講オブジェクト)
教育 / eラーニング / スクール
「1人の生徒が複数コースを受講し、コースごとに進捗・成績・修了日が異なる。コンタクトに全コースのプロパティを追加すると列が爆発し、レポートも作れない」
カスタムオブジェクト:Enrollments(受講記録)
course_name
enrollment_date
completion_date
progress_pct
final_score
certificate_issued
instructor
enrollment_status
関連:Contact(多対1・生徒)/ Deal(1対1・販売取引)。進捗50%未満かつ受講開始から14日経過でフォローアップメールを自動送信。
Section 8-3

プロパティ設計とアソシエーション(関連)の設計

カスタムオブジェクトで使えるプロパティタイプ

カスタムオブジェクトのプロパティは、標準オブジェクトと同じプロパティタイプをすべて使える。適切なタイプを選ぶことが、後のレポート・フィルター・自動化の精度に直結する。

テキスト系
1行テキスト / 複数行テキスト
契約書番号・シリアル番号・住所・備考など。フリーテキストで柔軟に入力できる。
⚠ フィルター・グループ化に使うなら「選択肢」型の方が精度が高い
数値系
数値 / 通貨 / パーセント
MRR・ARR・進捗率・スコア・フロア面積など。レポートで合計・平均・最大値を計算できる。
✓ 集計・比較が必要な値は必ずこのタイプで
日付系
日付 / 日時
契約開始日・更新日・インストール日・修了日など。日付計算(経過日数・残り日数)が可能。
✓ WF の「〇日前にトリガー」に使うなら必須
選択肢系
ドロップダウン / チェックボックス / ラジオ
ステータス(Active/Inactive)・タイプ・フェーズ・優先度など。レポートで集計・絞り込みが確実にできる。
✓ ステータス系・カテゴリ系は必ずこのタイプで
真偽値系
チェックボックス(単一)
自動更新フラグ・証明書発行済み・レビュー完了・同意取得済みなど。Yes/No の2値管理。
✓ フラグ管理は Boolean で。テキストの「はい/いいえ」は避ける
計算系
計算プロパティ(Calculated)
「残り日数 = renewal_date - 今日」「残存価値 = contract_value × (remaining_months / total_months)」など。
✓ 他のプロパティから算出できる値は計算プロパティで自動化

アソシエーション(関連)の設計パターン

🔗 アソシエーション設計の主要パターン
カスタムオブジェクトと標準オブジェクト・他カスタムオブジェクト間の関連定義
パターン 1:多対1(Many-to-One)
複数の契約書が1つの会社に紐づく
Contracts ×N
───→
Company ×1
(N : 1)
SaaS で1社が部門ごとに複数契約・複数プランを持つケース。会社レコードを開くと関連する全契約書が一覧表示される。会社の合計 MRR をレポートで集計可能。
パターン 2:1対1(One-to-One)
1つの取引に1つの契約書が対応する
Deal ×1
───→
Contract ×1
(1 : 1)
取引(Deal)がクローズした際に対応する契約書(Contract)を自動生成・紐付けするパターン。取引レコードから契約書の条件を即参照できる。
パターン 3:多対多(Many-to-Many)
複数のコンタクトが複数のプロジェクトに参加する
Contact ×N
──↔──
Project ×N
(N : N)
コンサルティング・ IT プロジェクトなどで1人が複数プロジェクトに、1プロジェクトに複数人が参加するケース。アソシエーションラベルで「PM / メンバー / クライアント」の役割も記録できる。
パターン 4:カスタム ↔ カスタム
機器(Equipment)に関するチケット(Ticket)を紐づける
Equipment ×1
──↔──
Ticket ×N
(1 : N)
特定の機器に関するサポート履歴を集約。「この機器はここ1年で何件のトラブルがあったか」をレポートで即確認できる。機器レコードを開くと関連チケット一覧が表示される。
💡 アソシエーションラベルでロールを記録する

HubSpot のアソシエーションにはラベル(役割)を付けられる。例えば Contract ↔ Contact のアソシエーションに「署名者 / 承認者 / 担当者」というラベルを設定することで、単なる「紐づいている」以上の文脈情報を記録できる。ラベルは後から追加できるが、設計時に「このアソシエーションでどんなロールを追跡したいか」を考えておくと後の活用が広がる。

Section 8-4

API による作成・読み書き・運用のベストプラクティス

カスタムオブジェクトの日常的な作成・更新は HubSpot の UI からも行えるが、外部システムとの連携・大量データのインポート・ワークフローからの自動作成には HubSpot API を使う。カスタムオブジェクトの API エンドポイントは標準オブジェクトと同じ構造で、スキーマ(オブジェクト定義)だけが異なる。

カスタムオブジェクトの作成(API)

POST /crm/v3/objects/{objectType} カスタムオブジェクトのレコード作成
// objectType には カスタムオブジェクトの API 名を指定(例:p_contracts) // HubSpot が自動付与するプレフィックス「p_」が付くことに注意 { "properties": { "contract_number": "CTR-2026-00142", "plan_type": "Enterprise", "mrr": 200000, "start_date": "2026-04-01", "renewal_date": "2027-03-31", "auto_renew": true, "seats": 50, "contract_status": "Active" }, "associations": [ { // 関連する会社(Company)に紐づける "to": { "id": "12345" }, "types": [{ "associationCategory": "USER_DEFINED", "associationTypeId": 1 // アソシエーションタイプ ID(設定画面で確認) }] }, { // 関連する取引(Deal)にも紐づける "to": { "id": "67890" }, "types": [{ "associationCategory": "USER_DEFINED", "associationTypeId": 2 }] } ] }

設計・命名・運用の6つのベストプラクティス

01
API 名(内部名)は変更できない——命名規則を先に決める
カスタムオブジェクトの API 名(例:p_contracts)とプロパティの内部名(例:contract_number)は一度作成すると変更不可。表示名は後から変更できるが、API 名は永続する。
✗ NG:「test」「object1」「myobj」など意味のない名前
✓ OK:「p_contracts」「p_equipment」「p_enrollments」— 複数形・スネークケース
02
「レコード名」プロパティを分かりやすく設定する
カスタムオブジェクトには「レコード名として表示されるプロパティ」を1つ指定する。これが一覧画面で表示されるメインラベルになるため、一意性が高く意味のある値(契約書番号・機器シリアル番号)を選ぶ。
✗ NG:数値 ID(「12345」と表示されても人間に意味がない)
✓ OK:「CTR-2026-00142」「SN-XYZ-001」など一意で読める値
03
サンドボックスで設計を完全に検証してから本番作成
カスタムオブジェクトの削除はデータが入った後は困難。オブジェクト名・プロパティ構成・アソシエーション設計の3点をサンドボックスで完全に検証し、チームでレビューしてから本番に作成する。
✗ NG:思いついたらすぐ本番で作る(後で後悔する)
✓ OK:サンドボックス → 設計レビュー → 本番というプロセスを守る
04
プロパティは「少なく始めて後で追加」が基本
最初から100個のプロパティを作ると、入力負荷が上がり・データ品質が下がり・管理が難しくなる。まず本当に必要な10〜15個に絞り、運用しながら必要なプロパティを追加していく方が成功しやすい。
✗ NG:「将来使うかも」で大量のプロパティを初期作成
✓ OK:MVP(最小構成)で始めて運用しながら育てる
05
必須フィールドを絞って「入力しやすい」設計にする
必須プロパティが多すぎると、担当者が適当な値を入れてデータ品質が下がる。必須にするのは「これがないとオブジェクトとして意味をなさない」最小限の3〜5項目に留める。残りはデフォルト値や自動入力で補完する。
✗ NG:20項目必須にして「面倒くさいから使わない」と言われる
✓ OK:必須は5項目、残りは任意 or 自動補完
06
ワークフローからの自動作成で入力負荷をゼロにする
取引が Closed Won になったときに対応する Contract オブジェクトを自動作成・紐付けするワークフローを作る。これにより担当者が手動で Contract を作成・アソシエーションを設定する手間がなくなり、漏れもなくなる。
✗ NG:「受注したら担当者が Contract を手動で作る」ルールは必ず漏れる
✓ OK:Deal Closed Won WF → Contract を自動作成 → アソシエーション自動付与

📌 第8章 まとめ

カスタムオブジェクトは「HubSpot を自社モデルに特化させる」ための機能

標準の4オブジェクトで表現できないビジネスエンティティを CRM に追加できる。判断基準は「独自のプロパティが10個以上・1対多の関係がある・WF やレポートで活用したい」の3点。すべてに当てはまらない場合はカスタムプロパティの追加で対応できることが多い。

業種によってユースケースは大きく異なる——他社の設計を参考に

SaaS は Contracts(複数契約管理)、製造業は Equipment(機器追跡)、不動産は Properties(物件管理)、教育は Enrollments(受講記録)が典型例。自社のビジネスで「スプレッドシートで管理していて CRM から切り離されているデータ」がカスタムオブジェクト化の有力候補。

API 名と命名規則は「作成前」に決める——後から変更できない

カスタムオブジェクトの API 名・プロパティ内部名は一度設定すると変更不可。「p_contracts」「p_equipment」のように複数形スネークケースで統一する命名規則をチームで合意してから本番作成する。サンドボックスでの検証は必須。

アソシエーションはラベルで「関係の役割」まで記録する

単に「紐づける」だけでなく「Contract ↔ Contact」のアソシエーションに「署名者 / 承認者 / 担当者」というラベルを付けることで関係の文脈まで記録できる。多対多の関係はアソシエーションで表現し、中間テーブルを自前で作ろうとしない。

Next Chapter
第9章:セキュリティ・権限・ガバナンス設計 →