visitor-identification について
HubSpot Conversationsのチャットウィジェット向けに、訪問者識別トークンを生成するCLIスキルです。サーバー側で利用し、既知の訪問者のチャットセッションをCRMのコンタクトに関連付けます。
主な機能
- 01メールアドレスからトークンを生成
- 02訪問者名を任意で追加
- 03チャット識別用の短期トークン
- 04ウィジェット設定とトークン管理の説明
活用シーン
- 01ログイン済み訪問者のチャットをCRMコンタクトに関連付け
- 02チャットウィジェットのプレビューにコンタクト情報を表示
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hubspot/ agent-cli-skills --skill visitor-identificationインストール後、Claude Code で/visitor-identificationを入力して読み込まれたか確認します。
詳細
hub-cli PR #251 の conversations コマンドグループが必要です。hubspot conversations visitor-identification --help が正式なリファレンスです。
訪問者識別とは
既知のコンタクト(メールアドレスを把握している相手)があなたのウェブサイトを訪問すると、HubSpot Conversations チャットウィジェットはその訪問者を識別できます — ライブチャットセッションをその CRM レコードに紐付けることができます。これを行うには、サーバーが短命の署名付きトークンを生成し、それを HubSpot Conversations JavaScript SDK に渡します。SDK はトークンを HubSpot に送信し、HubSpot がそれを検証して、チャットセッションをコンタクトに関連付けます。
トークンは一般的な認証情報ではありません。これは 1 回のチャットセッションに対して 1 人の訪問者を識別するものであり、Conversations SDK 以外では役に立ちません。
要件
| 要件 | 詳細 |
|---|---|
| アカウントティア | Professional または Enterprise |
| 必要なスコープ | conversations.visitor_identification.tokens.create |
| トークンの有効期間 | 12 時間。ページ読み込みをまたいでキャッシュし、少なくとも 12 時間ごとに更新してください |
| 生成側 | サーバーサイドのみ — ブラウザの JavaScript で生成しないでください。プライベートアプリのトークンは秘密に保つ必要があります |
トークンを生成する
# Minimal — email only
hubspot conversations visitor-identification create-token \
--email [email protected]
# With name (populates the contact preview in the widget)
hubspot conversations visitor-identification create-token \
--email [email protected] \
--first-name Jane \
--last-name Doe
出力:
{"ok":true,"data":{"token":"eyJhbGciOiJIUzI1NiJ9..."}}
プライベートアプリのトークンに必要なスコープがない場合、CLI はスコープのヒントとともに 403 を返します:
{"ok":false,"error":{"status":403,"message":"Missing scope: conversations.visitor_identification.tokens.create"}}
プライベートアプリのトークンを設定する
conversations.visitor_identification.tokens.create スコープは、HUBSPOT_ACCESS_TOKEN にトークンが設定されている HubSpot プライベートアプリに対して付与されている必要があります。スコープを追加するには:
- HubSpot で: 設定 → 連携 → プライベートアプリ → [あなたのアプリ] → スコープ
- 「CRM」の下で、
conversations.visitor_identification.tokens.createを有効にします - スコープ変更後に必要であれば、トークンをローテーションします
フロントエンドがトークンで行うべきこと
サーバーサイドでトークンを生成した後、ウィジェットが読み込まれる前に loadImmediately: false を設定します。次に識別プロパティを設定し、ウィジェットを読み込みます:
const { token } = await fetch('/api/hs-visitor-token').then(r => r.json());
window.hsConversationsSettings = {
loadImmediately: false,
identificationEmail: '[email protected]',
identificationToken: token,
};
window.HubSpotConversations.widget.load();
重要なルール:
- 認証済みユーザーに対してサーバーサイドでトークンを生成し、少なくとも 12 時間ごとに更新する場合にのみ、ページ読み込みをまたいでキャッシュしてください。
HUBSPOT_ACCESS_TOKEN(プライベートアプリのトークン)をフロントエンドに公開しないでください。identificationEmailは、トークンの生成に使用したメールアドレスと一致している必要があります。
Conversations SDK の完全なリファレンスについては、HubSpot の公開ドキュメントを参照してください。
既知の制約
- HubSpot の Professional または Enterprise サブスクリプションが必要です。Starter または Free では、API は 403 を返します。
- 1 回の呼び出しにつき、1 つのメールアドレスに対して 1 つのトークンです。一括生成はサポートされていません。
- トークンのペイロードは不透明です — SDK に渡す以外の目的でデコードしたり保存したりしないでください。