---
title: "Salesforce Connector"
description: "คู่มือการผสานรวม Salesforce CRM ฉบับสมบูรณ์สำหรับการซิงค์ลีด ผู้ติดต่อ บัญชี โอกาส และอ็อบเจกต์แบบกำหนดเองกับ Brevo ผ่าน Tajo"
url: https://tajo.io/th/docs/connectors/crm/salesforce/
markdown: https://tajo.io/th/docs/connectors/crm/salesforce.md
lang: th-TH
robots: noindex
---

ขอสิทธิ์ใช้งานล่วงหน้า

กรอกชื่อและที่อยู่อีเมลที่ทำงานของคุณ เราจะส่งลิงก์เพื่อยืนยันคำขอเข้าใช้งาน Tajo ทางอีเมล

# Salesforce Connector

สถานะตัวเชื่อม: วางแผนไว้ ยังไม่ได้สร้าง ปัจจุบัน Tajo ยังไม่ได้ใช้งานตัวเชื่อมนี้

| ฟิลด์ต้นทาง | ฟิลด์ปลายทาง | ค่าตัวอย่าง |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

เชื่อมต่อ Salesforce CRM กับ Brevo ผ่าน Tajo สำหรับการซิงค์ผู้ติดต่อระดับองค์กร การจัดการลีด การติดตามโอกาส และระบบอัตโนมัติทางการตลาดที่ขับเคลื่อนด้วยข้อมูล CRM ของคุณ

## ภาพรวม

| คุณสมบัติ | ค่า |
| --- | --- |
| **แพลตฟอร์ม** | Salesforce |
| **หมวดหมู่** | CRM |
| **ความซับซ้อนในการตั้งค่า** | ขั้นสูง |
| **การผสานรวมอย่างเป็นทางการ** | ไม่ |
| **ข้อมูลที่ซิงค์** | ผู้ติดต่อ ลีด บัญชี โอกาส เหตุการณ์ |
| **API Base URL** | `https://yourInstance.salesforce.com/services/data/vXX.0` |

## ฟีเจอร์

- **การซิงค์ผู้ติดต่อ/ลีดแบบสองทิศทาง** - ซิงค์ผู้ติดต่อและลีด Salesforce กับรายการผู้ติดต่อ Brevo
- **การติดตามโอกาส** - แมปขั้นตอนดีลและจำนวนเงินสำหรับการแบ่งกลุ่มตามรายได้
- **ลำดับชั้นบัญชี** - ซิงค์บัญชีบริษัทสำหรับการตลาดตามบัญชีใน Brevo
- **การแมปอ็อบเจกต์แบบกำหนดเอง** - แมป Salesforce custom objects กับแอตทริบิวต์และเหตุการณ์ Brevo
- **การซิงค์สมาชิกแคมเปญ** - ซิงค์สมาชิกแคมเปญ Salesforce กับรายการ Brevo
- **การติดตามกิจกรรม** - ซิงค์งาน เหตุการณ์ และกิจกรรมอีเมลสำหรับการให้คะแนนการมีส่วนร่วม
- **การสตรีมแบบเรียลไทม์** - ใช้ Salesforce Streaming API สำหรับการอัปเดตข้อมูลทันที
- **รองรับ SOQL query** - กรองข้อมูลที่ซิงค์ด้วย SOQL queries แบบกำหนดเอง

## ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:

1. Salesforce org (ฉบับใดก็ได้ที่มีสิทธิ์เข้าถึง API)
2. Connected App ที่กำหนดค่าใน Salesforce Setup
3. เปิดใช้การเข้าถึง API สำหรับโปรไฟล์ผู้ใช้ Salesforce ของคุณ
4. บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
5. บัญชี Tajo

## การยืนยันตัวตน

### OAuth 2.0 Web Server Flow (แนะนำ)

เหมาะที่สุดสำหรับการผสานรวมในการผลิตที่มีการอนุญาตจากผู้ใช้

```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 Flow

สำหรับการผสานรวมระหว่างเซิร์ฟเวอร์โดยไม่ต้องมีการโต้ตอบจากผู้ใช้

```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}"
```

Security Token

Salesforce กำหนดให้ต่อท้าย security token กับรหัสผ่านของคุณสำหรับ username-password flow รีเซ็ต token ของคุณจาก 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 | แมปกับแอตทริบิวต์ FIRSTNAME ใน Brevo |
| `LastName` optional | string | แมปกับแอตทริบิวต์ LASTNAME ใน Brevo |
| `Phone` optional | string | แมปกับแอตทริบิวต์ SMS สำหรับการส่งข้อความ WhatsApp/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 Endpoints

### REST API Resources

| เมธอด | Endpoint | คำอธิบาย |
| --- | --- | --- |
| `GET` | `/services/data/vXX.0/sobjects/Contact` | Query ผู้ติดต่อ |
| `POST` | `/services/data/vXX.0/sobjects/Contact` | สร้างผู้ติดต่อ |
| `PATCH` | `/services/data/vXX.0/sobjects/Contact/{id}` | อัปเดตผู้ติดต่อ |
| `GET` | `/services/data/vXX.0/sobjects/Lead` | Query ลีด |
| `GET` | `/services/data/vXX.0/sobjects/Account` | Query บัญชี |
| `GET` | `/services/data/vXX.0/sobjects/Opportunity` | Query โอกาส |
| `GET` | `/services/data/vXX.0/query?q={SOQL}` | ดำเนิน SOQL query |
| `POST` | `/services/data/vXX.0/composite/sobjects` | สร้าง/อัปเดตแบบ Batch |

### Bulk API

| เมธอด | Endpoint | คำอธิบาย |
| --- | --- | --- |
| `POST` | `/services/data/vXX.0/jobs/ingest` | สร้าง bulk ingest job |
| `PUT` | `/services/data/vXX.0/jobs/ingest/{jobId}/batches` | อัปโหลดข้อมูล batch |
| `GET` | `/services/data/vXX.0/jobs/ingest/{jobId}` | ตรวจสอบสถานะ job |

### Streaming API

| Endpoint | คำอธิบาย |
| --- | --- |
| `/cometd/XX.0` | CometD long-polling สำหรับเหตุการณ์แบบเรียลไทม์ |
| PushTopic | สมัครรับการเปลี่ยนแปลงบันทึกผ่าน SOQL-based topics |
| Change Data Capture | สตรีมการเปลี่ยนแปลงระดับฟิลด์แบบละเอียด |
| Platform Events | สถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์แบบกำหนดเอง |

## เหตุการณ์

### เหตุการณ์บันทึก (Change Data Capture)

| เหตุการณ์ | ทริกเกอร์ | กรณีใช้งาน |
| --- | --- | --- |
| `ContactChangeEvent` | สร้าง/อัปเดต/ลบผู้ติดต่อ | การซิงค์ผู้ติดต่อแบบเรียลไทม์ |
| `LeadChangeEvent` | สร้าง/อัปเดต/แปลงลีด | การติดตามวงจรชีวิตลีด |
| `OpportunityChangeEvent` | เปลี่ยนขั้นตอนโอกาส | ระบบอัตโนมัติไปป์ไลน์ดีล |
| `AccountChangeEvent` | แก้ไขบันทึกบัญชี | การซิงค์ข้อมูลบริษัท |

### Platform Events

| เหตุการณ์ | ทริกเกอร์ | กรณีใช้งาน |
| --- | --- | --- |
| `Lead_Converted__e` | แปลงลีดเป็นผู้ติดต่อ | การบ่มเพาะหลังการแปลง |
| `Deal_Won__e` | โอกาสปิดสำเร็จ | โฟลว์การเริ่มต้นใช้งานลูกค้า |
| `Deal_Lost__e` | โอกาสปิดไม่สำเร็จ | แคมเปญดึงลูกค้ากลับ |

## ตัวอย่างโค้ด

### เริ่มต้น Connector

```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 ขึ้นอยู่กับฉบับและจำนวนใบอนุญาตของคุณ:

| ฉบับ | คำขอ API ต่อ 24 ชั่วโมง |
| --- | --- |
| Developer | 15,000 |
| Enterprise | 1,000 ต่อใบอนุญาตผู้ใช้ (ขั้นต่ำ 15,000) |
| Unlimited | 5,000 ต่อใบอนุญาตผู้ใช้ (ขั้นต่ำ 15,000) |
| Performance | 5,000 ต่อใบอนุญาตผู้ใช้ (ขั้นต่ำ 15,000) |

ขีดจำกัดเพิ่มเติม:

- **ขีดจำกัด Concurrent API**: 25 คำขอที่ทำงานนาน
- **Bulk API**: 15,000 batches ต่อ 24 ชั่วโมง
- **Streaming API**: 2,000 เหตุการณ์ต่อวัน (สามารถเพิ่มได้)
- **Composite API**: 25 subrequests ต่อ composite request

การตรวจสอบการใช้งาน API

ตรวจสอบการใช้งาน API ของคุณใน Salesforce Setup > System Overview Tajo ใช้ bulk API สำหรับการซิงค์ขนาดใหญ่เพื่อประหยัดขีดจำกัด API ของคุณ

## การแก้ไขปัญหา

### ปัญหาทั่วไป

| ปัญหา | สาเหตุ | วิธีแก้ |
| --- | --- | --- |
| INVALID\_SESSION\_ID | Token หมดอายุ | รีเฟรช OAuth token โดยอัตโนมัติ |
| REQUEST\_LIMIT\_EXCEEDED | ถึงขีดจำกัด API รายวัน | ใช้ Bulk API หรือลดความถี่ในการซิงค์ |
| FIELD\_INTEGRITY\_EXCEPTION | ฟิลด์ที่จำเป็นหายไป | แมปฟิลด์ที่จำเป็นทั้งหมดในการกำหนดค่า |
| DUPLICATES\_DETECTED | กฎรายการซ้ำใช้งานอยู่ | กำหนดค่าการตั้งค่าการจัดการรายการซ้ำ |
| INSUFFICIENT\_ACCESS | สิทธิ์อ็อบเจกต์ขาดหาย | ให้สิทธิ์ API เข้าถึงในโปรไฟล์ Salesforce |

### โหมด Debug

เปิดใช้การบันทึกข้อมูลแบบละเอียด:

```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 สำหรับการซิงค์ขนาดใหญ่** - เปลี่ยนเป็น Bulk API 2.0 สำหรับชุดข้อมูลที่มีมากกว่า 2,000 รายการ
2. **ใช้ Change Data Capture** - ใช้ CDC สำหรับการซิงค์แบบเรียลไทม์แทนการ polling
3. **แมปเฉพาะฟิลด์ที่จำเป็น** - ลดการใช้งาน API โดยซิงค์เฉพาะฟิลด์ที่จำเป็น
4. **จัดการการรีเฟรช token** - ใช้ตรรกะการรีเฟรช OAuth token โดยอัตโนมัติ
5. **ใช้ composite requests** - รวมการเรียก API ที่เกี่ยวข้องเพื่อลดจำนวนคำขอ
6. **ทดสอบใน sandbox ก่อน** - ใช้ Salesforce sandbox org ก่อนการใช้งานจริง

## ความปลอดภัย

- **OAuth 2.0** - การอนุญาตตามมาตรฐานอุตสาหกรรมพร้อมประเภทการอนุญาตหลายแบบ
- **ข้อจำกัด IP** - Salesforce รองรับช่วง IP การเข้าสู่ระบบและการตั้งค่า IP ที่เชื่อถือได้
- **TLS 1.2+** - การสื่อสาร API ทั้งหมดเข้ารหัสด้วย TLS 1.2 ขั้นต่ำ
- **ความปลอดภัยระดับฟิลด์** - การควบคุมการเข้าถึงฟิลด์แบบละเอียดต่อโปรไฟล์
- **การจัดการ Session** - การหมดเวลา session ที่กำหนดค่าได้และขีดจำกัด session พร้อมกัน

## แหล่งข้อมูลที่เกี่ยวข้อง

- [Salesforce REST API Documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm)
- [Salesforce Bulk API 2.0 Guide](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_intro.htm)
- [HubSpot Connector](https://tajo.io/th/docs/connectors/crm/hubspot)
- [Customer Sync Skill](https://tajo.io/th/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/th/docs/contact-management)
