---
title: "Salesforce コネクター"
description: "Salesforce CRM のリード、コンタクト、アカウント、商談、カスタムオブジェクトを Tajo 経由で Brevo と同期するための完全統合ガイド。"
url: https://tajo.io/jp/docs/connectors/crm/salesforce/
markdown: https://tajo.io/jp/docs/connectors/crm/salesforce.md
lang: ja-JP
robots: noindex
---

先行利用を申し込む

お名前と会社のメールアドレスを入力してください。Tajoへのアクセス申請を確認するためのリンクをメールでお送りします。

# Salesforce コネクター

コネクターのステータス: 予定 まだ構築されていません。Tajo は現在このコネクターを実行していません。

| 送信元フィールド | 送信先フィールド | サンプル値 |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Salesforce CRM を Tajo 経由で Brevo に接続して、エンタープライズグレードのコンタクト同期、リード管理、商談追跡、CRM データを活用したマーケティングオートメーションを実現します。

## 概要

| 項目 | 値 |
| --- | --- |
| **プラットフォーム** | Salesforce |
| **カテゴリー** | CRM |
| **セットアップ難易度** | 高度 |
| **公式統合** | なし |
| **同期データ** | コンタクト、リード、アカウント、商談、イベント |
| **API ベース URL** | `https://yourInstance.salesforce.com/services/data/vXX.0` |

## 機能

- **双方向のコンタクト/リード同期** - Salesforce のコンタクトとリードを Brevo コンタクトリストと同期
- **商談追跡** - 売上ベースのセグメンテーションのために取引ステージと金額をマッピング
- **アカウント階層** - Brevo の ABM 向けに企業アカウントを同期
- **カスタムオブジェクトマッピング** - Salesforce カスタムオブジェクトを Brevo 属性とイベントにマッピング
- **キャンペーンメンバー同期** - Salesforce キャンペーンメンバーを Brevo リストと同期
- **アクティビティ追跡** - エンゲージメントスコアリング向けに、タスク、イベント、メール活動を同期
- **リアルタイムストリーミング** - Salesforce Streaming API を使用した即時データ更新
- **SOQL クエリ対応** - カスタム SOQL クエリで同期データをフィルタリング

## 前提条件

開始する前に、以下をご用意ください。

1. API アクセス可能な Salesforce org (エディション不問)
2. Salesforce Setup で設定した Connected App
3. Salesforce ユーザープロファイルで API アクセスが有効
4. API アクセス付きの Brevo アカウント
5. Tajo アカウント

## 認証

### OAuth 2.0 Web Server フロー (推奨)

ユーザー承認を伴う本番統合に最適です。

```bash
# Step 1: Authorize
https://login.salesforce.com/services/oauth2/authorize?
  response_type=code&
  client_id={consumer_key}&
  redirect_uri={callback_url}

# Step 2: Exchange code for tokens
curl -X POST https://login.salesforce.com/services/oauth2/token \
  -d "grant_type=authorization_code" \
  -d "code={auth_code}" \
  -d "client_id={consumer_key}" \
  -d "client_secret={consumer_secret}" \
  -d "redirect_uri={callback_url}"
```

### Username-Password フロー

ユーザー操作を伴わないサーバー間統合向けです。

```bash
curl -X POST https://login.salesforce.com/services/oauth2/token \
  -d "grant_type=password" \
  -d "client_id={consumer_key}" \
  -d "client_secret={consumer_secret}" \
  -d "username={username}" \
  -d "password={password}{security_token}"
```

セキュリティトークン

Salesforce の Username-Password フローでは、パスワードにセキュリティトークンを追加する必要があります。Setup > My Personal Information > Reset My Security Token からトークンをリセットしてください。

## 設定

### 基本セットアップ

```yaml
connectors:
  salesforce:
    enabled: true
    instance_url: "https://yourorg.my.salesforce.com"
    api_version: "v59.0"
    auth:
      type: oauth2
      consumer_key: "${SF_CONSUMER_KEY}"
      consumer_secret: "${SF_CONSUMER_SECRET}"
      refresh_token: "${SF_REFRESH_TOKEN}"

    # Data sync options
    sync:
      contacts: true
      leads: true
      accounts: true
      opportunities: true
      campaigns: true

    # Sync direction
    direction: salesforce_to_brevo

    # Brevo list assignment
    lists:
      all_leads: 15
      qualified_leads: 16
      customers: 17
```

### フィールドマッピング

Salesforce のフィールドを Brevo コンタクト属性にマッピングします。

#### 既定のマッピング

| Parameter | Type | Description |
| --- | --- | --- |
| `Email` required | string | コンタクト/リードのメール (Brevo における一意の識別子) |
| `FirstName` optional | string | Brevo の FIRSTNAME 属性にマッピング |
| `LastName` optional | string | Brevo の LASTNAME 属性にマッピング |
| `Phone` optional | string | WhatsApp/SMS 送信用の SMS 属性にマッピング |
| `Account.Name` optional | string | 紐づくアカウント/会社名 |
| `LeadSource` optional | string | リードの取得ソース |
| `StageName` optional | string | 取引追跡用の商談ステージ |
| `OwnerId` optional | string | ルーティング用の担当営業 |

#### カスタムフィールドマッピング

```yaml
field_mapping:
  # Standard fields
  Email: email
  FirstName: FIRSTNAME
  LastName: LASTNAME
  Phone: SMS

  # CRM fields
  LeadSource: LEAD_SOURCE
  Lead_Score__c: LEAD_SCORE
  Account.Name: COMPANY_NAME
  Account.Industry: INDUSTRY

  # Opportunity fields
  Amount: DEAL_VALUE
  StageName: DEAL_STAGE
  CloseDate: EXPECTED_CLOSE_DATE

  # Custom fields
  Preferred_Channel__c: PREFERRED_CHANNEL
  Customer_Tier__c: VIP_TIER
```

## API エンドポイント

### REST API リソース

| メソッド | エンドポイント | 説明 |
| --- | --- | --- |
| `GET` | `/services/data/vXX.0/sobjects/Contact` | コンタクトをクエリ |
| `POST` | `/services/data/vXX.0/sobjects/Contact` | コンタクトを作成 |
| `PATCH` | `/services/data/vXX.0/sobjects/Contact/{id}` | コンタクトを更新 |
| `GET` | `/services/data/vXX.0/sobjects/Lead` | リードをクエリ |
| `GET` | `/services/data/vXX.0/sobjects/Account` | アカウントをクエリ |
| `GET` | `/services/data/vXX.0/sobjects/Opportunity` | 商談をクエリ |
| `GET` | `/services/data/vXX.0/query?q={SOQL}` | SOQL クエリを実行 |
| `POST` | `/services/data/vXX.0/composite/sobjects` | バッチ作成/更新 |

### Bulk API

| メソッド | エンドポイント | 説明 |
| --- | --- | --- |
| `POST` | `/services/data/vXX.0/jobs/ingest` | バルク取込ジョブを作成 |
| `PUT` | `/services/data/vXX.0/jobs/ingest/{jobId}/batches` | バッチデータをアップロード |
| `GET` | `/services/data/vXX.0/jobs/ingest/{jobId}` | ジョブステータスを確認 |

### Streaming API

| エンドポイント | 説明 |
| --- | --- |
| `/cometd/XX.0` | リアルタイムイベント用 CometD ロングポーリング |
| PushTopic | SOQL ベースのトピックでレコード変更を購読 |
| Change Data Capture | フィールドレベルの変更をきめ細かくストリーム |
| Platform Events | カスタムイベント駆動アーキテクチャ |

## イベント

### レコードイベント (Change Data Capture)

| イベント | トリガー | 用途 |
| --- | --- | --- |
| `ContactChangeEvent` | コンタクトの作成/更新/削除 | リアルタイムコンタクト同期 |
| `LeadChangeEvent` | リードの作成/更新/変換 | リードライフサイクル追跡 |
| `OpportunityChangeEvent` | 商談ステージの変更 | 取引パイプラインの自動化 |
| `AccountChangeEvent` | アカウントレコードの変更 | 企業データ同期 |

### Platform Events

| イベント | トリガー | 用途 |
| --- | --- | --- |
| `Lead_Converted__e` | リードがコンタクトに変換 | 変換後のナーチャリング |
| `Deal_Won__e` | 商談成立 | 顧客オンボーディングフロー |
| `Deal_Lost__e` | 商談失注 | ウィンバックキャンペーン |

## コード例

### コネクターの初期化

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect Salesforce
await tajo.connectors.connect('salesforce', {
  instanceUrl: 'https://yourorg.my.salesforce.com',
  consumerKey: process.env.SF_CONSUMER_KEY,
  consumerSecret: process.env.SF_CONSUMER_SECRET,
  refreshToken: process.env.SF_REFRESH_TOKEN
});
```

### SOQL フィルタでコンタクトを同期

```javascript
// Sync only qualified leads from Salesforce
await tajo.connectors.sync('salesforce', {
  type: 'filtered',
  resources: ['leads'],
  filter: "SELECT Id, Email, FirstName, LastName, LeadScore__c FROM Lead WHERE Status = 'Qualified' AND Email != null",
  brevoListId: 16
});

// Check sync status
const status = await tajo.connectors.status('salesforce');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-01-15T10:30:00Z',
//   contactsSynced: 18400,
//   leadsSynced: 7200,
//   opportunitiesSynced: 3100
// }
```

### リアルタイムストリーミング

```javascript
// Subscribe to Salesforce Change Data Capture
await tajo.connectors.stream('salesforce', {
  channels: [
    '/data/ContactChangeEvent',
    '/data/LeadChangeEvent',
    '/data/OpportunityChangeEvent'
  ],
  handler: async (event) => {
    console.log(`Change detected: ${event.entity} ${event.changeType}`);
    // Automatically synced to Brevo by Tajo
  }
});
```

## レート制限

Salesforce REST API の制限はエディションとライセンス数によって異なります。

| エディション | 24 時間あたりの API リクエスト数 |
| --- | --- |
| Developer | 15,000 |
| Enterprise | ユーザーライセンス 1 件あたり 1,000 (最小 15,000) |
| Unlimited | ユーザーライセンス 1 件あたり 5,000 (最小 15,000) |
| Performance | ユーザーライセンス 1 件あたり 5,000 (最小 15,000) |

追加制限:

- **同時 API 制限**: 長時間実行リクエスト 25 件
- **Bulk API**: 24 時間あたり 15,000 バッチ
- **Streaming API**: 1 日あたり 2,000 イベント (引き上げ可能)
- **Composite API**: 1 リクエストあたり 25 サブリクエスト

API 使用状況のモニタリング

Salesforce Setup > System Overview で API 使用状況を確認できます。Tajo は大規模同期で Bulk API を使用して API 制限を節約します。

## トラブルシューティング

### よくある問題

| 問題 | 原因 | 解決策 |
| --- | --- | --- |
| INVALID\_SESSION\_ID | トークン期限切れ | OAuth トークンを自動更新 |
| REQUEST\_LIMIT\_EXCEEDED | 1 日の API 制限到達 | Bulk API を使用または同期頻度を削減 |
| FIELD\_INTEGRITY\_EXCEPTION | 必須フィールド欠落 | 設定で全必須フィールドをマッピング |
| DUPLICATES\_DETECTED | 重複ルールが有効 | 重複処理の設定を調整 |
| INSUFFICIENT\_ACCESS | オブジェクト権限不足 | Salesforce プロファイルで API アクセスを付与 |

### デバッグモード

詳細ログを有効化します。

```yaml
connectors:
  salesforce:
    debug: true
    log_level: verbose
    log_api_calls: true
```

### 接続テスト

```bash
tajo connectors test salesforce
# ✓ OAuth token valid
# ✓ Contacts accessible
# ✓ Leads accessible
# ✓ Accounts accessible
# ✓ Opportunities accessible
# ✓ Bulk API enabled
```

## ベストプラクティス

1. **大規模同期には Bulk API を使用** - 2,000 件超のデータセットには Bulk API 2.0 を採用
2. **Change Data Capture を実装** - ポーリングの代わりに CDC でリアルタイム同期
3. **必要なフィールドのみマッピング** - 必要なフィールドのみ同期して API 使用量を削減
4. **トークンリフレッシュを処理** - OAuth トークンの自動更新ロジックを実装
5. **Composite リクエストを活用** - 関連する API コールを束ねてリクエスト数を削減
6. **まず Sandbox でテスト** - 本番展開前に Salesforce Sandbox org で検証

## セキュリティ

- **OAuth 2.0** - 複数のグラント種別をサポートする業界標準の認可
- **IP 制限** - Salesforce はログイン IP 範囲と信頼 IP 設定をサポート
- **TLS 1.2+** - すべての API 通信は TLS 1.2 以上で暗号化
- **フィールドレベルセキュリティ** - プロファイルごとのきめ細かいフィールドアクセス制御
- **セッション管理** - セッションタイムアウトと同時セッション数を設定可能

## 関連リソース

- [Salesforce REST API ドキュメント](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm)
- [Salesforce Bulk API 2.0 ガイド](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_intro.htm)
- [HubSpot コネクター](https://tajo.io/jp/docs/connectors/crm/hubspot)
- [顧客同期スキル](https://tajo.io/jp/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/jp/docs/contact-management)
