営業データの活用は多くの企業が抱える課題です。商談履歴は CRM に蓄積されているものの、情報が分散し、次のアクションを決めるのに時間がかかる。レポート作成も手作業で、データの鮮度が保てない――。私たちが支援する企業でも、こうした声をよく耳にします。本記事では、Claude Code を主要な CRM プラットフォームと連携させる際の設計パターンと実装例を、実務の観点から整理します。Salesforce と HubSpot を中心に、API 接続のアーキテクチャ、データ同期の考え方、商談要約や次回アクション提案の具体的な実装方法を示していきます。

i

本記事の結論: Claude Code は REST API 経由で主要 CRM と接続可能。商談データの要約・次回アクション提案・レポート自動生成など、営業プロセスの各段階で人の判断を補完する仕組みを構築できる。

CRM 連携で Claude Code が果たす役割

Claude Code は、CRM に蓄積された商談履歴・顧客情報・活動ログを読み取り、自然言語で要約・分析する機能を提供します。営業担当者が毎朝確認する「今日対応すべき案件」を自動でリストアップしたり、商談後のフォローアップメール文案を過去のやり取りから生成したりといった用途が考えられます。

重要なのは、Claude Code が単なるデータ取得ツールではなく、コンテキストを理解して判断材料を提示する点です。たとえば、商談の進捗状況(ステージ)と過去の類似案件を比較し、「このタイミングで提案書を送ると受注率が高い傾向にある」といった示唆を返すことができます。

ただし、CRM のデータ構造は各プラットフォームで異なるため、連携の設計にはプラットフォーム固有の知識が必要です。また、営業プロセスに組み込む際は、人の判断を置き換えるのではなく、情報整理と次のアクションの提案に留める設計が現実的です。

一般的な API 連携の考え方については Claude Code の API 統合パターン で詳しく解説していますが、本記事では CRM 特有のデータ構造と営業業務への適合に焦点を当てます。

Salesforce との連携アーキテクチャ

Salesforce は REST API と SOAP API を提供しており、Claude Code からは REST API 経由での接続が一般的です。認証は OAuth 2.0 を使い、アクセストークンを取得してリクエストヘッダに含める形になります。

接続の基本構成

Claude Code の MCP サーバー内で、Salesforce の REST API クライアントを初期化します。具体的には、以下の情報を環境変数または設定ファイルで管理します。

  • Consumer Key / Consumer Secret: Salesforce の Connected App で発行
  • Username / Password: API 接続用のユーザー
  • Security Token: パスワードリセット時に発行される文字列

接続後は、/services/data/v59.0/sobjects/ エンドポイントを通じて、Account(取引先)、Opportunity(商談)、Task(活動)などの標準オブジェクトにアクセスできます。

商談データの取得と要約

たとえば、「今週クローズ予定の商談」を取得し、Claude Code で要約する処理は次のような流れになります。

1. SOQL クエリで商談を抽出SELECT Id, Name, StageName, Amount, CloseDate FROM Opportunity WHERE CloseDate = THIS_WEEK のようなクエリを実行し、JSON で結果を取得

2. 商談ごとに活動履歴を取得 — Opportunity ID を使って関連する Task や Event を取得(SELECT Subject, ActivityDate, Description FROM Task WHERE WhatId = '商談ID'

3. Claude Code で自然言語要約 — 商談情報と活動履歴を結合したテキストを Claude API に送信し、「商談の現状」「次に必要なアクション」を要約させる

4. 結果を Slack や Email で通知 — 要約結果を営業担当者の Slack DM やメールで配信する

この設計では、Claude Code は「データを読んで整理する」役割に徹します。商談のステージ変更や活動の登録といった書き込み操作は、人が Salesforce 上で行う前提です。

カスタムオブジェクトへの対応

Salesforce では、業種固有の情報をカスタムオブジェクトで管理することが多くあります。たとえば、契約更新管理や製品構成情報などです。Claude Code でこれらを扱う場合は、カスタムオブジェクトの API 名(末尾が __c)を指定して SOQL を実行します。

注意点として、カスタムオブジェクトのフィールド名は企業ごとに異なるため、連携ロジックは組織のスキーマ定義を読み取って動的に構築するか、設定ファイルでフィールドマッピングを管理する必要があります。

HubSpot との連携アーキテクチャ

HubSpot は REST API v3 を提供しており、認証は Private App のアクセストークンまたは OAuth を使います。Claude Code からは、Private App トークンを使った接続がシンプルで推奨されます。

接続の基本構成

HubSpot の API クライアントは、以下のエンドポイントを基点にします。

  • https://api.hubapi.com/crm/v3/objects/contacts(コンタクト)
  • https://api.hubapi.com/crm/v3/objects/deals(取引)
  • https://api.hubapi.com/crm/v3/objects/companies(会社)

リクエストヘッダに Authorization: Bearer <アクセストークン> を含めることで、各オブジェクトの取得・作成が可能です。

取引パイプラインの可視化

HubSpot の取引(Deal)は、パイプラインとステージで管理されます。Claude Code で「今月成約見込みの取引」を抽出し、進捗状況を要約する処理は以下のように設計します。

  1. 取引の一覧取得: /crm/v3/objects/deals にフィルタを指定して、特定のステージ(例: “Proposal Sent”)と成約予定日でフィルタ
  2. 関連するコンタクトと会社情報を取得: 各取引の associations エンドポイントで紐づくコンタクト・会社を取得
  3. 活動履歴の取得: Engagement API(/engagements/v1/engagements/associated/deal/<dealId>/paged)で、取引に紐づくメール・電話・ミーティングのログを取得
  4. Claude Code で要約: 取引情報+活動履歴を結合し、「この取引で最近のやり取り」「次に提案すべき内容」を生成

HubSpot は Salesforce に比べて API のレスポンスがシンプルなため、初回の実装は比較的スムーズです。ただし、カスタムプロパティ(独自フィールド)を多用している場合は、プロパティ名の一覧を取得して動的に扱う仕組みが必要です。

ワークフロー連携の考え方

HubSpot のワークフローで「取引がステージ変更されたらトリガー」を設定し、Webhook 経由で Claude Code を呼び出す構成も可能です。たとえば、取引が “Negotiation” ステージに進んだタイミングで、Claude Code が過去の商談メモを要約し、営業担当者に Slack で通知する、といった使い方が考えられます。

この場合、Webhook のペイロードに取引 ID を含め、Claude Code 側で HubSpot API を叩いて詳細情報を取得する流れになります。

データ同期の設計パターン

CRM と Claude Code を連携させる際、データの同期タイミングとキャッシュ戦略が設計の鍵になります。リアルタイム同期が必要な場合と、定期バッチで十分な場合を区別することが重要です。

リアルタイム同期(Webhook トリガー)

CRM 側のイベント(商談作成・ステージ変更・活動登録など)をトリガーに、Claude Code を即座に呼び出す構成です。Salesforce では Platform Events や Change Data Capture、HubSpot では Workflow の Webhook アクションを使います。

この方式のメリットは、営業担当者が CRM を更新した直後に Claude Code の要約や提案を受け取れる点です。デメリットは、API 呼び出しの頻度が高くなり、レート制限に注意が必要な点です。

定期バッチ同期(スケジュール実行)

1日1回や毎時といった頻度で、CRM のデータを一括取得して Claude Code で処理する構成です。「毎朝8時に今日の商談一覧を Slack に配信」といった用途に適しています。

実装は cron や AWS Lambda のスケジュールトリガーで実行します。データ量が多い場合は、前回実行時刻以降に更新されたレコードだけを取得する差分同期の仕組みが必要です。Salesforce であれば SystemModstamp、HubSpot であれば hs_lastmodifieddate を条件に含めます。

キャッシュ戦略

Claude Code で生成した要約結果をデータベース(PostgreSQL や DynamoDB など)にキャッシュしておくことで、同じ商談に対する重複処理を避けられます。キャッシュの有効期限は、データの鮮度要件に応じて設定します。たとえば、「商談の要約は6時間キャッシュ」「顧客情報は24時間キャッシュ」といった具合です。

キャッシュを使う場合は、CRM 側でデータが更新されたときにキャッシュを無効化する仕組みも併せて検討します。Webhook で更新通知を受け取り、該当レコードのキャッシュを削除する処理が典型的です。

商談情報の自動要約実装例

ここでは、Salesforce の商談データを取得し、Claude Code で要約を生成する処理の具体的なコード例を示します。言語は TypeScript を想定しますが、他の言語でも同様のロジックが適用できます。

import { Anthropic } from '@anthropic-ai/sdk';
import jsforce from 'jsforce';

// Salesforce 接続
const conn = new jsforce.Connection({
  loginUrl: process.env.SF_LOGIN_URL,
});
await conn.login(process.env.SF_USERNAME, process.env.SF_PASSWORD + process.env.SF_SECURITY_TOKEN);

// 今週クローズ予定の商談を取得
const opportunities = await conn.query<{
  Id: string;
  Name: string;
  StageName: string;
  Amount: number;
  CloseDate: string;
}>(`
  SELECT Id, Name, StageName, Amount, CloseDate
  FROM Opportunity
  WHERE CloseDate = THIS_WEEK
`);

for (const opp of opportunities.records) {
  // 商談に紐づく活動を取得
  const tasks = await conn.query<{
    Subject: string;
    ActivityDate: string;
    Description: string;
  }>(`
    SELECT Subject, ActivityDate, Description
    FROM Task
    WHERE WhatId = '${opp.Id}'
    ORDER BY ActivityDate DESC
    LIMIT 10
  `);

  // Claude Code で要約
  const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
  const prompt = `
以下の商談情報と活動履歴をもとに、商談の現状と次に必要なアクションを200字以内で要約してください。

商談名: ${opp.Name}
ステージ: ${opp.StageName}
金額: ${opp.Amount}
成約予定日: ${opp.CloseDate}

最近の活動:
${tasks.records.map(t => `- ${t.ActivityDate} ${t.Subject}: ${t.Description}`).join('\n')}
`;

  const message = await client.messages.create({
    model: 'claude-3-5-sonnet-20241022',
    max_tokens: 300,
    messages: [{ role: 'user', content: prompt }],
  });

  const summary = message.content[0].type === 'text' ? message.content[0].text : '';
  console.log(`商談 ${opp.Name} の要約:\n${summary}\n`);

  // 要約結果を Slack に送信(別途 Slack API クライアントを使う)
  // await slackClient.chat.postMessage({ channel: '#sales', text: summary });
}

この例では、商談ごとに Claude Code を呼び出していますが、複数商談をまとめて1回のプロンプトに含める方法もあります。ただし、プロンプトの長さが増えるとトークン数が増加するため、コスト面での検討が必要です。

次回アクション提案の実装例

Claude Code を使って、「この商談で次にすべきこと」を提案する機能も実装できます。たとえば、商談が “Proposal Sent” ステージに3日以上留まっている場合、「提案書の内容について電話でフォローする」といった提案を生成します。

実装の流れは以下の通りです。

  1. ステージ滞在日数を計算: 商談の LastStageChangeDate フィールドと現在日時を比較
  2. 過去の類似商談を検索: SOQL で同じステージ・同じ業種・同じ商談規模の商談を抽出し、成約に至ったパターンを取得
  3. Claude Code で提案生成: 現在の商談情報+類似商談の活動履歴を渡し、「次のアクション候補」を生成

プロンプト例:

以下の商談は "Proposal Sent" ステージに3日間留まっています。
過去の類似商談(同じステージで成約したもの)の活動履歴を参考に、
次にとるべきアクションを3つ提案してください。

現在の商談:
- 商談名: ABC社 新規システム導入
- 金額: 500万円
- 業種: 製造業
- ステージ: Proposal Sent(3日経過)

類似商談の成功パターン:
- DEF社(成約): 提案送付後2日で電話フォロー → 追加資料送付 → 1週間後に成約
- GHI社(成約): 提案送付後3日でオンライン打ち合わせ設定 → 質疑応答 → 5日後に成約

提案してください。

Claude Code の応答例:

次のアクション候補:
1. 提案書の内容について電話でフォローアップし、不明点や追加要望がないか確認する
2. 類似事例の導入効果レポートを追加資料として送付し、ROI の具体的なイメージを提供する
3. オンライン打ち合わせの日程を提案し、経営層を含めた質疑応答の場を設ける

この提案をそのまま営業担当者に通知することで、判断の材料を提供できます。実際にどのアクションを選ぶかは人が決めますが、情報整理の手間を大幅に削減できます。

営業活動の自動化全般については Claude Code による営業業務の自動化 でも詳しく解説しています。

レート制限とエラーハンドリング

CRM の API には、1時間あたりのリクエスト数や1日あたりの API コール数に制限があります。Salesforce は組織のエディションによって上限が異なり、HubSpot は無料プランで1日250リクエスト、有料プランで10,000リクエストといった具合です。

Claude Code を使った連携では、以下の対策が必要です。

!

レート制限対策: バッチ処理の頻度を調整し、1回の処理で複数レコードをまとめて取得する。API レスポンスのヘッダで残り回数を確認し、上限に近づいたら処理を一時停止する。

エラーハンドリングでは、API 呼び出しの失敗(ネットワークエラー・認証エラー・レート制限エラーなど)に対して、リトライロジックを実装します。指数バックオフ(1秒、2秒、4秒…と待機時間を延ばす)を使うことで、一時的な障害を吸収できます。

また、Claude API の呼び出しが失敗した場合は、元の CRM データをログに残し、あとから再処理できるようにします。商談の要約生成に失敗しても、CRM のデータ自体は影響を受けないため、処理の冪等性(何度実行しても結果が同じ)を保つ設計が重要です。

カスタマーサポート部門との連携

CRM 連携は営業部門だけでなく、カスタマーサポート部門でも活用できます。たとえば、Salesforce Service Cloud や HubSpot Service Hub に蓄積された問い合わせ履歴を Claude Code で要約し、サポート担当者に「この顧客の過去の問い合わせ傾向」を提示する仕組みが考えられます。

具体的には、Case オブジェクト(Salesforce)や Ticket オブジェクト(HubSpot)から、特定の顧客に紐づく問い合わせを時系列で取得し、Claude Code で「頻出する問題」「未解決の課題」を整理します。

この用途については Claude Code によるカスタマーサポート業務の効率化 で詳細を解説していますが、CRM 連携の設計パターンは営業部門とほぼ共通です。違いは、扱うオブジェクトとフィールドの種類にあります。

まとめ

Claude Code と CRM の連携は、営業プロセスの各段階で情報整理と判断支援を提供する仕組みです。Salesforce や HubSpot といった主要プラットフォームとは REST API 経由で接続し、商談データ・活動履歴を取得して自然言語で要約・分析できます。

2つ
主要な同期パターン
(リアルタイム/バッチ)
3ステップ
基本的な実装プロセス
(取得→要約→通知)
複数
対応可能な部門
(営業・サポート)

重要なのは、Claude Code を「人の判断を置き換える」のではなく、「情報を整理して選択肢を提示する」役割に位置づけることです。商談の要約や次回アクションの提案は、あくまで営業担当者が意思決定する際の材料であり、最終的な判断は人が行う前提で設計します。

また、レート制限やエラーハンドリングといった運用面の考慮も欠かせません。API 呼び出しの頻度を適切に管理し、障害時の再処理の仕組みを整えることで、安定した連携を維持できます。


株式会社デジライズでは、Claude Code を活用した CRM 連携の設計から実装まで、法人向けの導入支援を提供しています。Salesforce や HubSpot といった既存システムとの接続設計、データ同期の最適化、営業プロセスへの組み込み方を、お客様の業務実態に合わせてご提案します。

私たちの支援は 研修コンサルティング の2本柱です。研修では、貴社の IT 部門や SalesOps チームが自走できるよう、実装パターンの解説とハンズオンを実施します。コンサルティングでは、要件定義から本番運用まで、技術面・運用面の両方をサポートします。

まずは 無料相談 で、現在の CRM 運用の課題と Claude Code 導入の可能性についてお聞かせください。貴社に最適な連携パターンをご提案いたします。

👉 無料相談を予約する

関連記事