日本語

HubSpotからクリーンにエクスポートする: ネイティブエクスポートが見落とすもの

あるRevOpsチームが模範的な移行を実施しました。4万件の連絡先がクリーンにエクスポートされ、会社も紐付き、Dealのステージも正しくマッピングされました。新しいCRMのday oneに、担当者がDealレコードを開くと、連絡先が一件も紐付いていませんでした。Deal-Contact間のリンクが1件も移行時に生き残っていなかったのです。

原因はHubSpotのネイティブエクスポートでした。ContactはエクスポートされH、CompanyもエクスポートされDealもエクスポートされますが、それらの間のアソシエーションはエクスポートされません。アソシエーションは標準のエクスポートツールが触れない別のデータレイヤーに存在します。誰もアソシエーションについて確認しなかったため、営業チームはday oneにPipelineのコンテキストを失いました。

このガイドでは、UIエクスポートが残していくすべてのデータと、移行前にそれらを取得する方法を説明します。


HubSpotのデータ構造を理解する

HubSpotはオブジェクトとアソシエーションでデータを整理しています。両方を理解することが、完全なエクスポートと不完全なエクスポートを分ける鍵です。

オブジェクト:

  • Contact: 個人
  • Company: 組織(HubSpotにおけるAccountに相当)
  • Deal: Pipelineにある営業機会
  • Ticket: サポートまたはサービスレコード
  • カスタムオブジェクト: 標準の4つを超えてポータルが構築したもの

アソシエーションは別のデータレイヤーです。ContactはCompany、Deal、Ticketと同時にアソシエートできます。しかし、それらのリンクはContactレコード自体には存在しません。HubSpotのアソシエーショングラフに保存されています。ContactをCSVにエクスポートしても、アソシエーションは含まれません。HubSpot CRMアソシエーションAPIのドキュメントでは、アソシエーションオブジェクトモデルの全体像とリレーションシップデータをプログラムで取得する方法を説明しています。

タイムラインイベントはアクティビティレコードです。送信されたすべてのメール、記録された通話、予約されたミーティング、フォームの送信はContactのタイムラインに存在します。これらもContactレコードとは別であり、異なるエクスポート方法が必要です。

このアーキテクチャを事前に理解することで、なぜ3ステップのエクスポートプロセスが任意ではなく必須なのかがわかります。また、HubSpotと移行先システム間のフィールドマッピングへのアプローチにも影響します。アソシエーションはオブジェクトプロパティとは別のマッピング上の課題です。


ステップ1: ネイティブエクスポートが対応する範囲と活用方法

HubSpotのネイティブエクスポート(Contact > エクスポート、Deal > エクスポートなど)は、オブジェクトレコードのフラットなCSVを提供します。レコード数とコアプロパティについては信頼性があります。適切な出発点です。

ネイティブエクスポートがカバーするもの:

  • すべての連絡先プロパティ(標準とカスタム)
  • すべての会社プロパティ
  • PipelineとステージをDealプロパティ
  • すべてのTicketプロパティ
  • あらゆるオブジェクトのカスタムプロパティ値

各エクスポートに含めるもの:

HubSpotがエクスポートするプロパティの選択を求めるとき、デフォルトの選択を受け入れないでください。「すべてのプロパティ」を選択するか、必要なすべてのプロパティを手動で選択します。標準のエクスポートは、明示的に含めない限り、カスタムプロパティを除外することがよくあります。

ネイティブエクスポートがカバーしないもの:

  • ContactとCompanyのアソシエーション
  • ContactとDealのアソシエーション
  • DealとCompanyのアソシエーション
  • マルチオブジェクトアソシエーション(複数のContactにアソシエートされたDeal)
  • エンゲージメントレコード(通話、メール、ミーティング、メモ)
  • カスタムオブジェクトレコード

ネイティブエクスポートはベースレコードファイルの取得に使います。その後、アソシエーションとエンゲージメント履歴を別途処理します。開始前にデータ移行前の準備のガイダンスでスコープを確認してください。そこでの判断が、どのHubSpotプロパティが実際に重要かを決めます。

エクスポート方法の比較:

方法 カバーする内容 カバーしない内容 最適な用途
ネイティブUIエクスポート Contact/Company/Dealプロパティ アソシエーション、履歴 ベースレコードファイル
API(アソシエーションエンドポイント) すべてのアソシエーションペア なし(完全) アソシエーションデータ
API(エンゲージメント/タイムライン) 通話、メール、ミーティング、メモ UIエクスポートでは取得不可 活動履歴
サードパーティツール(Coupler、Censusなど) 複数オブジェクト+アソシエーション ツールの設定次第 開発リソースがないチーム

ステップ2: アソシエーションを別途エクスポートする

HubSpotのアソシエーションデータにはAPIまたは意図的なエクスポート設定が必要です。両方を説明します。

オプションA: HubSpot内のアソシエーションエクスポートを使う

Contactをエクスポートする際、エクスポートダイアログに「関連レコードを含める」オプションを探します。一部のポータルバージョンでは、HubSpotがContactエクスポートに関連するCompany名とDeal名を含めることができます。お使いのポータルバージョンがこれに対応しているか確認してください。対応していれば、APIを呼ぶ必要がなくなります。

ただし、「関連する名前を含める」ことは、完全なアソシエーショングラフのエクスポートとは異なります。ContactレコードにCompany.NameとDeal.Nameが含まれますが、どのContactがどのDealに紐付いているかの多対多マッピングは取得できません。

オプションB: HubSpot APIを使ってアソシエーションを取得する

アソシエーションAPIは指定したオブジェクトタイプのすべてのアソシエーションペアを返します。技術担当のチームメンバー(またはPostmanなどのAPIツールに慣れたRevOps担当者)がこれをプログラムで取得できます。

主なエンドポイント:

  • GET /crm/v4/associations/contacts/companies/batch/read: Contact-Companyペア
  • GET /crm/v4/associations/contacts/deals/batch/read: Contact-Dealペア
  • GET /crm/v4/associations/deals/companies/batch/read: Deal-Companyペア

これらを別々のファイルとしてエクスポートし、結合テーブルとして扱います。移行先CRMでは、ベースレコードのインポート後にこれらを使ってリレーションシップを再構築します。

開発リソースがない場合:

Coupler.io、Supermetrics、HubSpot独自のData Sync機能などのツールは、APIプログラミングなしでアソシエーションデータを含む構造化エクスポートを取得できます。時間がかかり、追加費用が発生することもありますが、非技術系のチームにとっては本当に有用です。アソシエーションデータが揃ったら、シャドーインポートによる移行テストで本番への切り替え前にアソシエーションが正しく維持されているかを検証できます。


ステップ3: エンゲージメントと活動履歴をエクスポートする

HubSpotは記録されたアクティビティを「エンゲージメント」と呼び、Contactレコードとは別のタイムラインに保存します。このデータは標準のUIエクスポートではエクスポートできません。APIが必要です。

エンゲージメントデータとは:

  • 記録された通話(メモや結果を含む)
  • 記録されたメール
  • 予約・完了したミーティング
  • 担当者が手動で追加したメモ
  • 完了データ付きのタスク
  • フォーム送信

タイムラインに含まれるもの(通常はスキップ):

  • メール開封とクリックイベント(HubSpotのトラッキングで自動記録)
  • ページビューイベント
  • ワークフローの登録履歴

最初のカテゴリは担当者が入力したデータで、実際の営業コンテキストです。2番目のカテゴリはシステムが生成したイベントデータです。ほとんどの移行では最初のカテゴリが必要で、2番目はスキップすべきです。数十万件のページビューイベントを移行すると、移行先CRMのタイムラインにノイズが発生し、業務価値は生まれません。

APIエンドポイント:

GET /crm/v3/objects/engagements は、タイプ(CALL、EMAIL、MEETING、NOTE、TASK)、関連するContact/Company/Deal ID、エンゲージメント本文コンテンツとともにエンゲージメントレコードを返します。

技術系でないチームへの現実的な対処法:

APIにアクセスできない場合は、決定を明示的に記録します: エンゲージメント履歴は移行しない、移行後90日間はソースのHubSpotポータルをread-onlyモードで参照可能な状態にしておく、という方針です。CRMデータ移行に関するForresterの調査では、エンゲージメント履歴の完全性がCRM切り替え後の担当者の定着速度を左右する上位5要因の1つとして挙げられています。これは正当なビジネス上の判断です。すべての移行でエンゲージメント履歴をフルに移行する必要はありません。重要なのは、go-live後にギャップを発見するのではなく、意図的に決定することです。移行しないことにしたデータについては、レガシーCRMデータの長期アーカイブでHubSpotの全ライセンスを永続的に払い続けずにアクセスを維持する方法を説明しています。


ステップ4: カスタムオブジェクトを処理する

HubSpotポータルにカスタムオブジェクトがある場合(特定の業界ワークフロー向けにカスタマイズされたポータルでは一般的)、それらのオブジェクトには独自のエクスポートプロセスが必要です。

ポータルにカスタムオブジェクトがあるか確認する方法:

「設定 > オブジェクト > カスタムオブジェクト」を確認します。何もなければこのセクションはスキップしてください。

カスタムオブジェクトのエクスポート:

HubSpotのカスタムオブジェクトは標準のUIエクスポートではエクスポートできません。選択肢:

  1. HubSpot API: 標準オブジェクトと同じパターン。GET /crm/v3/objects/{customObjectType} をカスタムオブジェクトの内部名とともに使用します。
  2. HubSpot Data Sync: HubSpotのネイティブ同期ツールで、カスタムオブジェクトを含めてspreadsheetやデータベースにエクスポートできます。
  3. サードパーティコネクター: AirbyteやFivetranなどのツールはカスタムオブジェクトをネイティブで処理するHubSpotコネクターを備えています。

専任のデータエンジニアがいないほとんどのチームには、サードパーティコネクターがカスタムオブジェクトのエクスポートとして最も信頼性の高いアプローチです。


ステップ5: HubSpotを離れる前にエクスポートの完全性を検証する

整理やインポートを始める前に、エクスポートがすべてをカバーしているかを確認します。今ここで30分かければ、6週間後の調整作業を防ぐことができます。

検証チェックリスト:

  • CSVのContact数がHubSpotのContact総数と一致(「設定 > アカウントのデフォルト > 連絡先」)
  • CSVのCompany数がHubSpotのCompany総数と一致
  • CSVのDeal数がHubSpotのDeal総数と一致(複数のPipelineがある場合はPipelineごとに確認)
  • 以下のアソシエーションエクスポートファイルが存在: Contact-Company、Contact-Deal、Deal-Company
  • カスタムプロパティ定義のエクスポート(「設定 > プロパティ」でプロパティリストを別途エクスポート)
  • エンゲージメントエクスポートが主要なタイプをカバー: 通話、メール、ミーティング、メモ
  • ContactエクスポートにGDPR/オプトアウトフィールドが含まれている(「メールオプトアウト」「処理の法的根拠」「GDPR同意」フィールドを探す)
  • Contactエクスポートにライフサイクルステージフィールドが含まれている

アソシエーションのサンプル確認:

エクスポートからDeal10件を選びます。各Dealについて:

  1. アソシエーションファイルのContact IDがContactエクスポートの連絡先と一致するか確認
  2. Company IDがCompanyエクスポートと一致するか確認
  3. 各DealのContact数を確認: HubSpotのUI表示と一致しているか?

不一致があればアソシエーションエクスポートが不完全です。整理前に修正します。

カスタムプロパティの完全性:

プロパティ定義をエクスポート(「設定 > プロパティ > ダウンロード」)し、プロパティ名とCSVの列ヘッダーを比較します。列が欠けていれば、エクスポートにそのプロパティが含まれていないことを意味します。そのプロパティを追加して再実行します。


よくある失敗パターン

**Companyなしで連絡先をエクスポートする。**Companyレコードがエクスポートに含まれていなければ、すべてのContactが会社のアソシエーションを失います。Companyを先にエクスポートし、次にCompany.Nameを含めたContactをエクスポートします。

**ライフサイクルステージの履歴を失う。**ライフサイクルステージフィールドは時間とともに更新されますが、HubSpotが保存するのは現在の値のみで、いつ変更されたかの履歴は保存しません。ライフサイクルステージの遷移が移行先CRMのセットアップに重要な場合は、エクスポート時点の現在の値を記録しておきます。履歴は後から復元できません。

**カスタムプロパティ定義を見落とす。**移行先CRMにインポートする際、すべてのカスタムプロパティを再作成する必要があります。HubSpotではプロパティ定義リスト(値だけでなく)もエクスポートできます。これをダウンロードしておくと、フィールドマッピング時の何時間もの作業を省けます。

**GDPRの同意フラグを忘れる。**ポータルがメール同意またはGDPRの法的根拠を追跡している場合、それらのフィールドはエクスポートに含める必要があります。デフォルトのエクスポート列には含まれていません。明示的に追加してください。同意レコードを失うと、移行先システムでコンプライアンス上の問題が発生する可能性があります。GDPRのWikipedia概要は、CRMの連絡先データに適用される法的根拠のカテゴリと削除権の義務を説明しています。

**削除されたレコードを考慮しない。**HubSpotには標準エクスポートで簡単にアクセスできるごみ箱がありません。移行に必要な削除済みレコードがある場合は、HubSpotサポートと連携するか、APIのアーカイブ済みレコードエンドポイントを使う必要があります。


次に取るべき行動

検証済みのHubSpotエクスポートが揃ったということは、ベースレコードファイルに加えてアソシエーションとエンゲージメントデータが手に入ったということです。しかし、それらはまだインポートできる状態ではありません。

次のステップはデータクレンジング: 重複排除、正規化、エンリッチメントです。HubSpotの環境は長年の使用を経て重複、不整合なプロパティ値、フォーマットの問題を蓄積しています。インポートの前に整理します。Statistaが公開しているCRM市場データによれば、11名以上の従業員を持つ企業の91%以上がCRMを使用しており、長期間稼働しているCRM環境で蓄積されるデータ品質の課題はベンダーを問わず共通しています。

エンゲージメント履歴を移行先に持ち込む場合は、過去の活動履歴、メモ、メールの取り扱いで実際に移行するものとアーカイブするものの判断フレームワークを確認してください。

移行前のインベントリがまだ完了していない場合は、データ移行前の準備でエクスポートが始まる前にそれらの判断を行います。


関連ガイド