kintoneの複数アプリをHubSpotへ移行する際は、まず「1テーブル(kintoneアプリ)=1オブジェクト(HubSpot)」でそのまま移行し、アプリ間の横断マッピングは次フェーズに切り分けます。関連付け(アソシエーション)は表示用の関連レコード一覧ではなく実キーで張り、事前にカバー率を実測してから設計するのが失敗しない進め方です。
kintoneの複数アプリをHubSpotへ移行する際は、まず「1テーブル(kintoneアプリ)=1オブジェクト(HubSpot)」でそのまま移行し、アプリ間の横断マッピングは次フェーズに切り分けます。関連付け(アソシエーション)は表示用の関連レコード一覧ではなく実キーで張り、事前にカバー率を実測してから設計するのが失敗しない進め方です。
ブログ目次
HubSpotゴールドパートナーのStartLinkが、HubSpot導入・AI活用・CRM整備・業務効率化までをまとめて支援しています。記事で気になったテーマを、そのまま相談ベースで整理できます。
kintoneの複数アプリをHubSpotへ移行する際は、まず「1テーブル(kintoneアプリ)=1オブジェクト(HubSpot)」でそのまま移行し、アプリ間の横断マッピングは次フェーズに切り分けます。関連付け(アソシエーション)は表示用の関連レコード一覧ではなく実キーで張り、事前にカバー率を実測してから設計するのが失敗しない進め方です。
「案件管理、顧客管理、活動履歴、候補者管理……気づいたらkintoneのアプリが10個近くに増えていて、どこから手をつければいいか分からない」——複数アプリで運用しているkintone環境をHubSpotへ移行しようとすると、こうした声をよく聞きます。
アプリが多い環境ほど、移行設計を最初から完璧に組もうとして手が止まりがちです。実際には、全アプリの関連付けを一度に厳密設計するよりも、まず「1テーブル=1オブジェクト」でデータを移し切ってしまい、アプリをまたぐ複雑なリレーションは動きながら詰めていく方が、結果的にプロジェクトは早く進みます。
本記事では、複数のkintoneアプリをHubSpotの標準オブジェクトへどう振り分けるか、関連付けの精度をどう見積もるか、フィールド型変換や重複名寄せの実務まで、実際の移行案件で確立した設計手順を解説します。kintoneのデータをAPIで全件エクスポートする実務手順、移行のCSVインポート手順は「kintoneからHubSpotへの移行ガイド」で解説していますので、あわせてご参照ください。
本記事はHubSpotゴールドパートナーのStartLinkの「HubSpot完全ガイド」関連記事です。
複数のkintoneアプリを運用しており、HubSpotへの移行でオブジェクト設計から手が止まっている情報システム担当者・経営者の方に向けた内容です。最後まで読むと、以下が具体的に分かります。
kintoneは1つの業務ごとに自由にアプリ(テーブル)を作れるノーコードプラットフォームです。案件管理、顧客管理、活動履歴、候補者管理と、業務が増えるたびにアプリが増殖し、気づけば10個近くのアプリが並行稼働している——というのは珍しい状態ではありません。
このアプリ群をHubSpotに移す際、最初にぶつかる壁が「このアプリはHubSpotのどのオブジェクトに対応させるべきか」という設計判断です。ここで全アプリの関連付けまで含めて一度に厳密に設計しようとすると、検討すべき組み合わせが指数関数的に増え、プロジェクトが着手前から止まってしまいます。
移行を止めないための大原則は、まず「1テーブル(kintoneアプリ)=1オブジェクト(HubSpot)」でそのまま移行することです。オブジェクト横断のマッピング(あるアプリのサブテーブルから別オブジェクトのレコードを起こす、といった複雑な変換)は初回の判断対象から外し、次フェーズに切り分けます。
この考え方は、今枝がHubSpot導入支援で一貫して伝えている「スモールスタートで始め、段階的に拡張する」という設計哲学とも重なります。いきなり理想形を作り切ろうとせず、まず動く状態を作ってから精度を上げていく方が、結果的に定着率も高くなります。
人材紹介業をはじめとした複数の移行案件で確立した、アプリの役割とHubSpotオブジェクトの対応関係を一般化すると、次のようになります。
| kintoneアプリ(役割) | HubSpotオブジェクト |
|---|---|
| 案件管理アプリ | 取引(Deal) |
| 取引先/クライアント管理アプリ | 会社(Company) |
| 活動履歴アプリ | アクティビティ(ミーティング/コール/メール/メモ) |
| 顧客/個人リストアプリ | コンタクト(Contact) |
| 候補者/人物アプリ | コンタクト(Contact) |
顧客リストアプリと候補者アプリのように、役割が違っても対応先のHubSpotオブジェクトが同じ(どちらもコンタクト)になるケースは頻出します。この場合、両アプリから同一人物のレコードが重複して流入することが多く、後述する名寄せ設計が結構ポイントになってきます。
アプリが10個近くあると、理論上の関連付けパターンは数十通りになります。「案件と会社」「案件と担当コンタクト」「活動と案件」「候補者とマッチング」——これらすべての紐付けロジックを、移行着手前に完璧に決め切ろうとすると、設計会議だけで数週間を消費してしまいます。
移行プロジェクトが止まる最大の要因は、技術的な難しさよりも「決めきれずに議論が長引く」ことです。企業様によって業務プロセスは異なりますし、実際にデータを移してみないと見えてこない粒度の課題も多くあります。そのため、まずは各アプリを対応するHubSpotオブジェクトへそのまま移し切り、関連付けの精度はデータが入った後に測って詰めていくのが現実的な進め方です。
kintoneのテーブルフィールド(サブテーブル)は、1レコードの中に複数行のデータを持てる機能です。案件管理アプリの中に「見積明細テーブル」を持つようなケースが典型例です。
このサブテーブルをHubSpotでどう再現するか(別オブジェクトのレコードとして展開するか、要約列にまとめるか)は、実は初回移行で判断する必要がありません。まずは1テーブル=1オブジェクトの原則どおり親アプリを移行し、サブテーブルの展開方式は次フェーズの検討事項として明確に切り離しておくことで、初回移行のスコープが肥大化するのを防げます。

kintoneのアプリ間リレーションは、画面上では「関連レコード一覧」という表示専用のテーブルとして見えていることが多くあります。しかしこの表示テーブルはレコードの値としては保持されておらず、エクスポートしても中身が出てきません。そのため、HubSpotの関連付け(アソシエーション)は、この表示用テーブルではなく実際にレコードが保持しているキー項目で再構築する必要があります。
ここで結構ミソになってくるのが、関連付けを設計する前に「そのキーがどれだけの精度で紐付くか」を実測しておくことです。案件管理アプリと取引先管理アプリが、双方に同じ数値キー(クライアントIDなど)を持っているケースでは、原則としてカバー率は100%になります。数値キーによる紐付けは、値の表記揺れや入力ミスの影響を受けにくいためです。
一方で、メールアドレスや氏名といった「人が手入力する」項目をキーにした紐付けは、事情が変わります。この場合のカバー率は、システムの限界ではなく、元データの入力率がそのまま反映されることになります。
実際の移行案件でカバー率を計測した例を一般化すると、次のようになります。
| 紐付けパターン | 使用キー | 実測カバー率 |
|---|---|---|
| 案件 ↔ 会社 | 共通の数値キー(クライアントID等) | 100% |
| コンタクトの名寄せ | メールアドレス(一意) | 99% |
| 案件 ↔ 担当コンタクト | メールアドレス経由 | 28% |
| 活動 ↔ 案件 | プロジェクトID経由 | 60% |
| 候補者 ↔ マッチング | 氏名照合(メールは37%のみ保有) | 氏名照合で補完 |
「案件↔担当コンタクト」のカバー率が28%というのは、決して珍しい数値ではありません。営業担当者が案件登録時に、担当者名だけ書いてメールアドレスまでは入力していない、といった運用が現場で常態化しているケースは多くあります。
この数値を見て「移行の仕組みに問題がある」と捉えるのは正確ではありません。数値の関連キーがあるアプリ間は完璧に移行できますが、メール・氏名頼みの箇所は元データの入力率がそのまま移行カバー率になるというのが実態です。これはシステムの限界ではなく運用の限界であり、正直にそのまま顧客・現場に共有することが、移行後の「なぜ紐付いていないのか」という混乱を防ぎます。
カバー率が低いキーで無理に個人単位の関連付けを追い求めると、移行作業の工数だけが膨らみ、結果的に精度も上がりません。案件↔担当コンタクトのカバー率が28%程度にとどまる場合は、「個人単位の紐付けは無理に埋めず、会社単位の関連付けまでを移行の完成形とする」という判断も現実的な選択肢です。
残りの72%は、HubSpot移行後の運用の中で、案件が動くたびに担当コンタクトを都度紐付けていく形に切り替えれば、データは自然と充実していきます。移行時点で100%を目指さず、運用に乗せてから精度を上げていくという発想は、スモールスタートの考え方と地続きです。
kintoneの単一ドロップダウンフィールドは、HubSpotのenum(選択肢)プロパティに対応します。選択肢の内容は、kintoneのfields API(/k/v1/app/form/fields.json)から取得できる選択肢一覧をそのままHubSpot側のenumプロパティ作成時に移植すれば、手入力による転記ミスを避けられます。
kintoneでは「氏名」を1フィールドで管理しているケースが多く見られます。この状態のままHubSpotに移行すると、標準プロパティのlastname(姓)・firstname(名)が空になり、コンタクトの一覧画面が名前ではなくメールアドレス表示になってしまいます。
姓名分割は「無理に割らない」ガードが結構ミソになってくる
氏名を姓・名に分割する際は、スペース区切り+実在名字辞書(ポータル内の既存名字+公開されている名字辞書)を突き合わせた確信度チェックを通します。1文字姓や辞書に存在しない曖昧なケースは、無理に分割せずフルネームをそのまま姓に格納する方針にします。誤分割によって「山田 太郎」が「山 田太郎」のように壊れるより、分割せず正確な情報を保つ方が、後工程での手直しコストが小さく済みます。
kintoneのサブテーブル(テーブルフィールド)は、CSVやAPIで取得すると1つのセルにJSON形式で複数行分のデータがまとめて格納されます。HubSpotにはこの構造をそのまま受け取る仕組みがないため、次のいずれかで再現します。
前述のとおり、この判断は初回移行の必須事項ではありません。まずは親アプリの1テーブル=1オブジェクト移行を完了させ、サブテーブルの展開方式は次フェーズで詳細設計するのが、プロジェクトを止めないコツです。
顧客リストアプリと候補者アプリのように、複数のkintoneアプリが同じHubSpotオブジェクト(コンタクト)に対応する場合、同一人物のレコードが重複して流入する問題が起きます。この重複は、メールアドレスをキーに名寄せして解消します。
具体的には、あるアプリのレコードを移行する際、既にHubSpot側に同じメールアドレスのコンタクトが存在するかを検索APIで確認し、存在すれば「新規作成」ではなく「既存レコードへの更新」に切り替えます。この判定を都度手作業で行うのは現実的ではないため、仕組みとして自動化しておくことが結構重要です。
移行を1回のバッチ処理で完璧に終わらせようとする必要はありません。むしろ複数アプリ・大量レコードの移行では、途中でエラーが起きて中断し、再実行することが前提になります。
そのために、移行元のデータシート(エクスポートしたkintoneデータ)には、次の2列を必ず持たせます。
| 列名 | 役割 |
|---|---|
| HubSpotレコードID | 投入後に発行されたHubSpot側のレコードIDを書き戻す。次回実行時はこのIDを見て「作成済み」と判定できる |
| 移行ステータス | 未移行/移行中/移行済/エラー/対象外の5段階で管理。エラー行だけを抽出して再実行できる |
この2列を持たせておくことで、移行スクリプトを何度実行しても「移行済み」の行は二重に作成されない、いわゆる冪等(べきとう)な設計になります。移行プロジェクトは初回で完璧に終わることの方が稀なので、再実行に強い仕組みを最初から組み込んでおくと、後の手戻りが大きく減ります。
複数アプリ・大量レコードをAPI経由でHubSpotに投入する際、見落としやすい実務上の注意点を整理します。
名寄せ判定のために検索APIを大量に呼び出すと、レート制限による429エラーが発生します。エラー発生時に処理を止めるのではなく、指数バックオフ(待機時間を段階的に伸ばす)でリトライし、一定回数失敗したら「エラー」ステータスとして前述の移行ステータス列に記録し、後でまとめて再処理する設計にしておくと安定します。
HubSpotのbatch作成APIでレコードを大量に登録した直後、そのレコードを検索APIで検索してもすぐには結果に出てこないことがあります。反映まで十数秒のラグがあるためで、これを考慮せずに「作成直後の検索」を前提に処理を組むと、実際には存在するレコードを重複作成してしまう事故につながります。作成と検索の間には数十秒の待機を挟むか、作成時に払い出されたレコードIDをその場で受け取って保持する設計にするのが安全です。
活動履歴アプリのレコードをHubSpotのアクティビティ(ミーティング・コール・メモ等)として移行する際は、それぞれに「kintone活動ID」のようなカスタムプロパティを冪等キーとして全件付与しておきます。アクティビティは標準では一意キーを持たないため、これがないと再実行時に重複登録を検知できません。
活動履歴の中でもEメールログをアクティビティとして登録する場合、通常のCRM書き込みスコープとは別に、Eメール活動専用のスコープ(sales-email-read等)が必要になります。事前にプライベートアプリの権限設定を確認しておかないと、他のアクティビティ種別は問題なく登録できるのにEメールだけ401エラーになる、という個別対応が発生します。
複数のkintoneアプリをHubSpotへ移行する際に押さえておきたい原則を整理します。
移行プロジェクトを止めないための最も重要なポイントは、「完璧な設計を最初に決め切ろうとしない」ことです。まずは1テーブル=1オブジェクトの原則で全アプリを移し、関連付けの精度はデータを実際に見ながら実測し、必要な箇所だけを深掘りしていく——この進め方であれば、アプリ数が多い環境でも移行を着実に前に進められます。
自社に最適な設計は、企業様の業務プロセスやアプリの使い方によって当然異なります。移行はコストではなく、データが一元管理され営業・マーケティングの動きが可視化される状態への投資と捉えていただくのがよいかと思います。HubSpotゴールドパートナーのStartLinkでは、kintoneの複数アプリ環境の棚卸しから、関連付けのカバー率実測、HubSpotオブジェクトへの再設計、API投入まで一気通貫で支援しています。移行設計にお悩みの際は、お気軽にご相談ください。
必ずしも別オブジェクトにする必要はありません。まずは各kintoneアプリをHubSpotの標準オブジェクト(コンタクト・会社・取引・チケット)に対応させる「1テーブル=1オブジェクト」の原則で移行するのが基本です。標準オブジェクトでカバーできない業務特化型のアプリのみ、カスタムオブジェクト(Enterpriseプラン以上)の検討対象にします。
数値キーがなくメールアドレスや氏名でしか紐付けられない場合、カバー率が元データの入力率に依存するのは避けられません。カバー率が低いキーで個人単位まで無理に追わず、会社単位の関連付けまでを移行時点の完成形とし、残りは運用の中でデータを充実させていく方が現実的です。
初回移行の必須事項ではありません。サブテーブルの展開方式(別オブジェクト化か要約列への集約か)を判断すると設計が複雑になり移行全体が止まりやすいため、まずは親アプリの移行を完了させ、サブテーブルの扱いは次フェーズの検討事項として切り分けることをおすすめします。
移行元シートに「HubSpotレコードID」列と「移行ステータス」列(未移行/移行中/移行済/エラー/対象外)を持たせておけば、再実行時に移行済みレコードを検知でき、二重作成を防げます。大量データの移行では、1回で完璧に終わらせるより、こうした冪等な設計にしておく方が安全です。
複数のkintoneアプリをHubSpotへ再設計する作業は、オブジェクトへの振り分けだけでなく、関連付けのカバー率実測、フィールド型変換、重複名寄せまで含めて初めて移行が完了します。アプリ数が多い環境ほど、設計の切り分け方がプロジェクトの成否を左右します。
移行計画の策定やお見積もりについて、まずはお気軽にご相談ください。
株式会社StartLinkは、事業推進に関わる「販売促進」「DXによる業務効率化(ERP/CRM/SFA/MAの導入)」などのご相談を受け付けております。 サービスのプランについてのご相談/お見積もり依頼や、ノウハウのお問い合わせについては、無料のお問い合わせページより、お気軽にご連絡くださいませ。
株式会社StartLink 代表取締役。累計150社以上のHubSpotプロジェクト支援実績を持ち、Claude CodeやHubSpotを軸にしたAI活用支援・経営基盤AXのコンサルティング事業を展開。
HubSpotのトップパートナー企業や大手人材グループにて、エンタープライズCRM戦略策定・AI戦略ディレクションを経験した後、StartLinkを創業。現在はCRM×AIエージェントによる経営管理支援を専門とする。