Skip to main content

概要

HubSpotツールはHubSpot CRM APIと連携し、ワークフローからコンタクトの管理と取引(Deal)の参照を行います。コンタクトツールはメールアドレスをキーにするため、Search API(レート制限あり)を経由せずにレコードを照合できます。取引ツールはIDでの取得のほか、名前・ステージ・担当者・クローズ予定日・作成日・任意のプロパティで検索できます。会社・担当者ツールは取引が持つID(関連会社、hubspot_owner_id)を会社名・ドメイン・メールアドレスに解決し、ノート・タスクツールは取引自体を変更せずにエンゲージメントを取引へ紐付けます。

主な機能

  • HUBSPOT_UPSERT_CONTACT
    • コンタクトを作成します。同じメールアドレスのコンタクトが既にある場合は更新します。カスタムプロパティにも対応しています。
  • HUBSPOT_GET_CONTACT
    • オブジェクトIDまたはメールアドレスでコンタクトを取得します。該当するコンタクトがない場合はエラーにせず found: false を返します。
  • HUBSPOT_GET_DEAL
    • オブジェクトIDで取引を取得します。関連するコンタクト・会社のIDも合わせて取得できます。該当する取引がない場合はエラーにせず found: false を返します。
  • HUBSPOT_SEARCH_DEALS
    • 名前・ステージ・パイプライン・担当者・クローズ予定日や作成日の範囲で取引を検索します。フリーテキスト検索と任意プロパティのフィルタにも対応し、ページ分割で返します。
  • HUBSPOT_GET_COMPANY
    • オブジェクトIDで会社を取得します。関連するコンタクト・取引のIDも合わせて取得できます。該当する会社がない場合はエラーにせず found: false を返します。
  • HUBSPOT_GET_OWNER
    • 担当者IDまたはメールアドレスで担当者を取得し、氏名・メールアドレス・ユーザーIDを返します。該当する担当者がない場合はエラーにせず found: false を返します。
  • HUBSPOT_LIST_OWNERS
    • アカウントの担当者を一覧します。メールアドレスでの絞り込みや、アーカイブ済み担当者のみの取得もできます。ページ分割で返します。
  • HUBSPOT_CREATE_NOTE
    • ノートを作成して取引・コンタクト・会社に紐付けます。タイムスタンプと作成者を指定できます。
  • HUBSPOT_CREATE_TASK
    • 期限・ステータス・優先度・担当者を指定してタスクを作成し、取引・コンタクト・会社に紐付けます。

認証

設定手順についてはHubSpot認証情報ページをご確認ください。

例: コンタクトを検索してから作成・更新する

例: 担当者の今月クローズ予定の取引を一覧する

例: 新規取引の担当者と会社を解決する

例: 取引に商談メモとフォローアップタスクを記録する

入力パラメータ

HUBSPOT_UPSERT_CONTACT

名前付きパラメータを空にした場合は送信されません。HubSpot は空文字を「プロパティをクリア」と解釈するため、クリアは properties から明示的に指定してください({"firstname": null})。キーが重複した場合、名前付きパラメータが properties より優先されます。properties.email に email パラメータと異なる値を指定するとエラーになります(大文字小文字の違いのみは同一として扱います)。 出力は result.id / result.created / result.properties と、生のレスポンス result.contact です。

HUBSPOT_GET_CONTACT

出力は result.found / result.id / result.properties / result.associations と、生のレスポンス result.contact です。

HUBSPOT_GET_DEAL

出力は result.found / result.id / result.properties / result.associations と、生のレスポンス result.deal です。

HUBSPOT_SEARCH_DEALS

すべて任意です。名前付きの条件はAND で結合されます。 出力は result.deals(各要素に id と properties)、result.count、result.total、result.next_after(最終ページでは null)です。

HUBSPOT_GET_COMPANY

出力は result.found / result.id / result.properties / result.associations と、生のレスポンス result.company です。

HUBSPOT_GET_OWNER

出力は result.found / result.id / result.email / result.first_name / result.last_name / result.user_id / result.archived と、生のレスポンス result.owner です。

HUBSPOT_LIST_OWNERS

すべて任意です。 出力は result.owners(各要素に id、email、first_name、last_name、user_id、archived)、result.count、result.next_after(最終ページでは null)です。

HUBSPOT_CREATE_NOTE

出力は result.id / result.properties と、生のレスポンス result.note です。

HUBSPOT_CREATE_TASK

出力は result.id / result.properties と、生のレスポンス result.task です。

備考

  • 該当なしはエラーではない: HUBSPOT_GET_CONTACT、HUBSPOT_GET_DEAL、HUBSPOT_GET_COMPANY、HUBSPOT_GET_OWNER はレコードが見つからない場合に result.found = false を返します。「検索して、なければ作成する」を通常の条件分岐ステップとして組めます。
  • ノートとタスクは取引を編集しない: エンゲージメントは独立したレコードで、指定した取引・コンタクト・会社に関連付けられます。取引自体のフィールドは書き換えませんが、HubSpot がアクティビティ由来のプロパティ(最終アクティビティ日など)を更新するため、それらを条件にしたワークフローには影響します。Engagements API が作成に必要と案内しているスコープは crm.objects.contacts.write で、crm.objects.deals.write ではありません。
  • エンゲージメントの日時: timestamp と due_date はISO 8601またはエポックミリ秒を受け付けます。時刻のない日付はUTCの0時として扱うため、時刻が重要な場合はオフセット付きで時刻を明示してください(2026-10-08T09:00:00+09:00)。
  • ツールは作成をリトライしない: ノートやタスクの作成の HTTP 呼び出しは、失敗の理由を問わずツール自身は再送しません(再送するとレコードが二重に作成される可能性があるためです)。ステップに retry を設定した場合、429 のような明確な拒否の後はステップが再実行されますが、結果が不明な失敗(ツール内でのタイムアウト、接続断、HubSpot の 5xx)ではステップ側の retry も適用されません。ただし 1 点注意: ステップの timeout がリクエスト途中で発火した場合はツールでなくランナーがエラーを出すため、他のエラーと同様にリトライされます。そのようなステップには retry を付けないか、ステップの timeout をツール自身の 30 秒より十分長くしてください。ステップを再実行する前に、HubSpot上でレコードが作成されていないか確認してください。
  • 担当者IDとユーザーIDの違い: hubspot_owner_id は設定 → ユーザーに表示されるユーザーIDとは別の値です。担当者IDから氏名・メールアドレスを引くには HUBSPOT_GET_OWNER、特定の人の担当者IDを探すには HUBSPOT_LIST_OWNERS を使ってください。
  • 検索の制限: HubSpotの検索は1リクエストあたり最大6フィルタ(名前付き条件と filters の合計)、1ページ最大200件、1クエリ最大10,000件で、Search APIにはアカウントあたり毎秒5リクエストの独立したレート制限があります。検索インデックスは書き込みから数秒遅れることがあるため、直前に作成した取引が含まれない場合があります。
  • 日付プロパティ: HubSpotの closedate と createdate は日時型です。範囲指定の入力はエポックミリ秒へ自動変換されます。filters の値はそのまま送られるため、エポックミリ秒で指定するのが確実です。
  • 差分取得: create_date_from は「以上」(>=)で比較します。前回実行で取得した最新取引の createdate をそのまま渡すと、その取引が再度返るため、後続で id による重複排除をしてください。
  • 同時書き込みは後勝ち: HubSpotのCRM APIには楽観的ロックの仕組みがないため、更新が重なるとプロパティ単位で後勝ちになります。実行が重なりうる状況で「スコアを読んで加算して書き戻す」といった処理に HUBSPOT_UPSERT_CONTACT を使わないでください(HubSpotの計算プロパティを利用してください)。
  • アーカイブ済みコンタクト: HubSpotのゴミ箱にあるコンタクトはメールアドレスを予約したままのため、そのアドレスへのupsertは成功しません。ゴミ箱から復元するか、別のアドレスを使用してください。
  • タイムアウト: すべてのリクエストに30秒のタイムアウトが設定されており、レート制限や一時的なサーバーエラーには自動でリトライします(ノート・タスクの作成は上記のとおり例外です)。