troccoでBigQueryからHubspotへデータ転送して、顧客データをマーケティングに活用する

## 1. はじめに

　デジタルマーケティングの世界では、**データ活用がポイント**です。そのため、基幹システムに眠る顧客データをマーケティングに利用できれば大きなアドバンテージとなります。この点で、[Hubspot](https://www.hubspot.jp/)はその多機能性と使いやすさから、多くの企業に選ばれているマーケティングオートメーション（MA）ツールの一つです。

　一方で、ETL（Extract, Transform, Load）ツールの[trocco](https://www.trocco.io/)は、異なるデータソース間でのデータの転送と統合を簡単に行うための**強力なツール**です。この記事では、troccoを使用して、Googleの[BigQuery](https://cloud.google.com/bigquery)に吐き出した基幹システムの顧客データをHubspotに転送する手順を解説します。


 
## 2. Hubspotの最新アップデートとその重要性

　最近（2023年11月）のHubspotの[アップデート](https://community.hubspot.com/t5/%E8%A3%BD%E5%93%81%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88/2023%E5%B9%B411%E6%9C%88-%E8%A3%BD%E5%93%81%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88-%E3%81%BE%E3%81%A8%E3%82%81/ba-p/879035#:~:text=%E3%89%94%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%A6%E3%83%8B%E3%83%BC%E3%82%AFID%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B3%E3%83%B3%E3%82%BF%E3%82%AF%E3%83%88%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99)により、**コンタクトのカスタムプロパティでも固有の値オプションが利用可能**になりました。

　固有の値とは、Hubspotで設定可能な特殊な[カスタムプロパティ](https://knowledge.hubspot.com/ja/crm-setup/manage-your-properties)のことで、これを用いると重複しない一意のデータ値を保持することができます。例えば、顧客IDや注文番号のように、各レコードでユニークであるべき値を設定することが可能になります。

　このアップデートにより、**顧客IDをユニークキーとして使用できるようになり**、Hubspotへのデータ転送が今まで以上に簡単になりました。これまでは、設定できるユニークキーがHubspotのRecordID（hs_object_id）かEメールアドレスのどちらかしかありませんでした。そのため、顧客IDをどちらかに紐付けたうえでインポートする必要がありましたが、このアップデートによりその手間が削減されました。



## 3. 既存の顧客管理システムとHubspotを統合する必要性

　コンテンツを配信して、リードを集め、それに対してナーチャリングを行う、といったようなHubspotの利用方法もありますが、すでにある顧客データベースを活用したい場合もあるかと思います。実際のケースとして、BtoCの宅配事業の事例を挙げることができます。この例では、会員登録したけどサービスを利用していないお客様のナーチャリングを行い、サービスの利用に繋げました。
 　今回の記事では、基幹システムのデータがBigQueryに格納されている想定で、troccoを使ってBigQueryからHubspotへ転送する際の設定手順を解説します。



## 4.BigQueryからHubspotへ転送する際のtrocco設定
**事前準備：** 必要に応じてHubspotの[カスタムプロパティ](https://knowledge.hubspot.com/ja/crm-setup/manage-your-properties)を作成してください。できるだけデフォルトで用意されているプロパティ（カラム）を使うのが望ましいですが、独自のフラグなどを転送したい場合は、あらかじめ作成しておく必要があります。

それでは実際の設定を行っていきましょう。
[trocco](https://trocco.io/lp/index.html)にアクセスして、転送設定の「新規追加」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/d1162eb1-bfb9-fe4d-618c-4aa08ab0eca9.png)

転送元に「BigQuery」、転送先に「Hubspot」を選び、「この内容で作成」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/0f3e884f-06bf-4d72-ecd4-efcd5abace18.png)

名前やメモを記入します。
命名規則を決めておくと後から見直しやすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/e28db955-ab1e-d782-eab2-77dbadde4010.png)

次に、BigQueryへの接続設定を入力します。
- Google BigQuery接続情報
転送元となるBigQueryへのアクセス権限のある接続情報を選んでください。接続情報がなければ、右上の「接続情報を追加」から作成することもできます。作成後は「接続情報を読み込む」ボタンを押して、再読み込みしてください。
- [カスタム変数](https://documents.trocco.io/docs/custom-variables)
SQLクエリやパスプレフィックスに、決まった文字列や日時を入れることができます。
- SQL
元のテーブルから整形・加工してからHubspotへインポートすることができます。顧客データの全項目をHubspotへインポートする必要はないのでマーケティングに必要な項目に絞ります。
- 一時テーブル作成先データセット
SQLの実行結果を一時的に保存する場所を選びます。BigQuery接続情報で設定したアカウントがアクセスできるデータセットの一覧が表示されます。
- データセットのロケーション
指定したデータセットのロケーションに合わせて設定してください。
- 一時データエクスポート先Google Cloud Storage URI
BigQueryから転送する際に、一時的にデータが格納されます。troccoでは、転送毎に指定されたフォルダの初期化を行うので、同じフォルダを複数の転送設定で共有しないようにしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/5941706c-66c5-e980-168d-70ccd57bc0f3.png)

BigQueryの接続設定が完了したら、接続確認を行って問題ないかを確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/1c3b0e01-861b-a992-d401-ff6c6b61b71a.png)

続いて、Hubspot側の接続設定です。
- Hubspot接続情報
データを入れたいHubspotへのアクセス権限のある設定を選んでください。接続情報がない場合は、「接続情報を追加」から作成してください。
- オブジェクトタイプ
データの転送先となるHubspotの[オブジェクト](https://developers.hubspot.jp/docs/api/crm/understanding-the-crm#:~:text=%E7%A2%BA%E8%AA%8D%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82-,%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88,-CRM%20API%E3%81%AF)（テーブル）を選択します。顧客データの場合はコンタクトを選択することになるかと思います。
- 転送モード
INSERT（追記）かUPSERT（レコードがあればデータを更新し、なければレコードを作成する）かを選べます。今回の場合は、顧客データを顧客ID（uuid）をキーに更新・追加するのでUPSERTです。
- UPSERTキー
転送モードでUPSERTを選んだ場合に、どのカラムをキーにするか設定します。レコード毎にユニークな値を持つカラムを指定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/97a997b7-b786-7d84-de50-235d8a9030a4.png)
ここまで設定できたら、右下の「次のSTEPへ」をクリックします。

プレビューの作成を待ちます…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/e476fc2b-ec04-0fcf-0560-0ccdf05b5f21.png)

プレビューを確認して、データを問題なく読み込めているかを確認します。
問題がある場合は、戻って接続情報を見直すか、次のカラム定義を変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/69e2c3ae-d728-b617-d6b8-3492b9580d29.png)

次に、カラム定義を確認します。定義を変更した後は、「変更をプレビュー」ボタンを押して確認してください。
- カラム名
Hubspotの[内部名](https://knowledge.hubspot.com/ja/crm-setup/manage-your-properties#:~:text=%E3%83%86%E3%82%A3%E3%83%BC%E3%83%A9%E3%83%99%E3%83%AB%E3%81%A7%E3%81%99%E3%80%82-,%E5%86%85%E9%83%A8%E5%90%8D,-%EF%BC%9Acode%E3%82%B3%E3%83%BC%E3%83%89)を入力してください。ここでHubspotへのマッピングを行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/34549da0-5333-fee9-0f65-e81f2b193eea.png)
問題が無ければ、右下の「確認画面へ」ボタンを押します。

内容を確認したうえで、「保存して適用」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/3c714da3-981f-1c66-76b3-7811a55eacd9.png)

変更内容を記入して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/366f6ecc-71f3-9b10-15c3-1284dfb4e244.png)

必要に応じて、ラベルや実行スケジュール、通知設定などを行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625537/0aeebbd3-819e-27e4-1122-d5fccbbc4daf.png)


## 5. 転送設定を行う際の注意点

1. **転送速度：** troccoでHubspotに転送する際は、秒間10レコード程度の転送が可能です。一方で、アクセストークン仕様により[HubspotのAPIは連続で30分以上の接続ができません](https://developers.hubspot.jp/docs/api/oauth-quickstart-guide#:~:text=%E6%B3%A8%EF%BC%9A%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AF%E3%80%81%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B9%E3%81%AEexpires_in%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%A7%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%9F%E7%A7%92%E6%95%B0%E3%81%AE%E7%B5%8C%E9%81%8E%E5%BE%8C%E3%81%AB%E6%9C%9F%E9%99%90%E5%88%87%E3%82%8C%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%EF%BC%88%E7%8F%BE%E6%99%82%E7%82%B9%E3%81%A7%E3%81%AF30%E5%88%86%EF%BC%89%E3%80%82)。ですので、15,000レコード（秒間10件×25分）を超す転送を行う場合は、分割して転送することを検討してください。
2. **転送頻度：** データの転送頻度が5分に1回なのか1日1回なのかで、Hubspotで行える施策が変わりますので事前に、施策も含めて設計をしておくことをお勧めします。
3. **差分更新：** すべてのデータを毎回転送するとリソースを使ってしまい良くありません。そこでBigQuery上で差分を抽出し、必要な分だけの転送ができると理想的です。



## 6. まとめ

　この記事では、troccoを用いたBigQueryからHubspotへのデータ転送の方法と、Hubspotの最新アップデートによる影響について解説しました。

**主なポイント：**
- Hubspotのアップデートにより、コンタクトでも固有の値プロパティーの活用が可能に。
- 転送量とマーケティング施策を考慮して、速度と頻度に注意しながら転送設定を行う。
- 一時データエクスポート先Google Cloud Storage URIは転送設定ごとに用意する。


　マーケティング戦略において、データの活用は重要な役割を果たします。この記事が、troccoの活用するための一助となれば幸いです。