---
title: "Trình Kết Nối Salesforce"
description: "Hướng dẫn tích hợp Salesforce đầy đủ để đồng bộ leads, liên hệ, cơ hội và sự kiện với Brevo qua Tajo."
url: https://tajo.io/vi/docs/connectors/crm/salesforce/
markdown: https://tajo.io/vi/docs/connectors/crm/salesforce.md
lang: vi-VN
robots: noindex
---

Đăng ký quyền truy cập sớm

Nhập tên và địa chỉ email công việc của bạn. Chúng tôi sẽ gửi liên kết để xác nhận yêu cầu truy cập Tajo.

# Trình Kết Nối Salesforce

Trạng thái trình kết nối: Dự kiến Chưa được xây dựng. Hiện Tajo chưa chạy trình kết nối này.

| Trường nguồn | Trường đích | Giá trị mẫu |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Kết nối Salesforce với Brevo qua Tajo để hợp nhất dữ liệu CRM doanh nghiệp với marketing automation, đồng bộ leads và liên hệ, và kết nối kết quả bán hàng với mức độ tương tác marketing.

## Tổng Quan

| Thuộc Tính | Giá Trị |
| --- | --- |
| **Nền Tảng** | Salesforce |
| **Danh Mục** | CRM |
| **Độ Phức Tạp Thiết Lập** | Nâng Cao |
| **Tích Hợp Chính Thức** | Không |
| **Dữ Liệu Đồng Bộ** | Liên Hệ, Leads, Cơ Hội, Sự Kiện |
| **URL API Cơ Sở** | `https://[instance].salesforce.com/services/data/v58.0` |

## Tính Năng

- **Đồng bộ liên hệ và lead** - Đồng bộ hai chiều giữa Salesforce và Brevo
- **Theo dõi cơ hội** - Ánh xạ giai đoạn cơ hội sang vòng đời liên hệ Brevo
- **Đồng bộ tài khoản** - Liên kết dữ liệu tài khoản Salesforce với hồ sơ công ty Brevo
- **Tích hợp campaign** - Ánh xạ thành viên Salesforce Campaign sang danh sách Brevo
- **Truy vấn SOQL** - Đồng bộ đối tượng tùy chỉnh qua Salesforce Object Query Language
- **Bulk API** - Xuất và nhập dữ liệu khối lượng lớn hiệu quả
- **Streaming API** - Nhận cập nhật thời gian thực qua Platform Events
- **Custom Objects** - Đồng bộ bất kỳ đối tượng Salesforce tùy chỉnh nào

## Yêu Cầu

Trước khi bắt đầu, hãy đảm bảo bạn có:

1. Tài khoản Salesforce (Professional, Enterprise, Unlimited, hoặc Developer)
2. Người dùng tích hợp với quyền API
3. Connected App với OAuth 2.0 đã cấu hình
4. Tài khoản Brevo với quyền truy cập API
5. Tài khoản Tajo

## Xác Thực

### OAuth 2.0 (Khuyến Nghị)

Salesforce sử dụng OAuth 2.0 cho xác thực API.

```bash
# Bước 1: Authorization URL
https://login.salesforce.com/services/oauth2/authorize
  ?response_type=code
  &client_id=YOUR_CONSUMER_KEY
  &redirect_uri=YOUR_CALLBACK_URL

# Bước 2: Đổi mã lấy token
curl -X POST https://login.salesforce.com/services/oauth2/token \
  -d "grant_type=authorization_code" \
  -d "client_id=CONSUMER_KEY" \
  -d "client_secret=CONSUMER_SECRET" \
  -d "redirect_uri=CALLBACK_URL" \
  -d "code=AUTHORIZATION_CODE"
```

### Xác Thực Username-Password

Cho server-to-server (ít được khuyến nghị hơn):

```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=YOUR_USERNAME" \
  -d "password=YOUR_PASSWORD_PLUS_SECURITY_TOKEN"
```

Security Token

Khi xác thực bằng username/password từ IP không tin cậy, nối Security Token vào sau mật khẩu. Lấy trong Salesforce Settings > My Personal Information > Reset My Security Token.

## Cấu Hình

### Thiết Lập Cơ Bản

```yaml
connectors:
  salesforce:
    enabled: true
    instance_url: "https://yourorg.salesforce.com"
    oauth:
      client_id: "${SF_CONSUMER_KEY}"
      client_secret: "${SF_CONSUMER_SECRET}"
      refresh_token: "${SF_REFRESH_TOKEN}"

    # Tùy chọn đồng bộ dữ liệu
    sync:
      contacts: true
      leads: true
      opportunities: true
      accounts: true
      campaigns: true

    # Ánh xạ danh sách Brevo
    list_mapping:
      "All Contacts": 10
      "Marketing Qualified": 11
      "Sales Qualified": 12
```

### Ánh Xạ Trường

Ánh xạ trường Salesforce sang thuộc tính liên hệ Brevo:

#### Ánh Xạ Mặc Định

| Parameter | Type | Description |
| --- | --- | --- |
| `Email` required | string | Địa chỉ email liên hệ (định danh duy nhất) |
| `FirstName` optional | string | Ánh xạ sang thuộc tính FIRSTNAME |
| `LastName` optional | string | Ánh xạ sang thuộc tính LASTNAME |
| `Phone` optional | string | Ánh xạ sang thuộc tính SMS |
| `Account.Name` optional | string | Tên tài khoản liên quan |
| `LeadSource` optional | string | Nguồn gốc của lead |
| `Status` optional | string | Trạng thái lead hoặc liên hệ |

#### Ánh Xạ Trường Tùy Chỉnh

```yaml
field_mapping:
  # Trường tiêu chuẩn
  Email: email
  FirstName: FIRSTNAME
  LastName: LASTNAME
  Phone: SMS

  # Trường CRM
  Account.Name: COMPANY_NAME
  LeadSource: LEAD_SOURCE
  Status: LEAD_STATUS

  # Trường cơ hội
  Opportunity.Amount: DEAL_VALUE
  Opportunity.StageName: DEAL_STAGE

  # Trường tùy chỉnh
  Custom_Plan__c: PLAN_TYPE
  Custom_Industry__c: INDUSTRY
```

## API Endpoints

### REST API

| Phương Thức | Endpoint | Mô Tả |
| --- | --- | --- |
| `GET` | `/services/data/v58.0/sobjects/Contact` | Metadata đối tượng liên hệ |
| `GET` | `/services/data/v58.0/query?q=SOQL` | Truy vấn SOQL |
| `POST` | `/services/data/v58.0/sobjects/Contact` | Tạo liên hệ |
| `PATCH` | `/services/data/v58.0/sobjects/Contact/{id}` | Cập nhật liên hệ |
| `POST` | `/services/data/v58.0/composite/batch` | Thao tác lô |

### Bulk API 2.0

| Phương Thức | Endpoint | Mô Tả |
| --- | --- | --- |
| `POST` | `/services/data/v58.0/jobs/ingest` | Tạo job nhập liệu |
| `GET` | `/services/data/v58.0/jobs/ingest/{id}` | Trạng thái job |
| `POST` | `/services/data/v58.0/jobs/query` | Tạo job truy vấn |
| `GET` | `/services/data/v58.0/jobs/query/{id}/results` | Lấy kết quả truy vấn |

## Sự Kiện

| Sự Kiện | Kích Hoạt | Trường Hợp Sử Dụng |
| --- | --- | --- |
| `Contact.created` | Liên hệ mới được tạo | Kích hoạt email chào mừng |
| `Contact.updated` | Trường liên hệ thay đổi | Cập nhật thuộc tính Brevo |
| `Lead.converted` | Lead được chuyển đổi | Di chuyển sang danh sách khách hàng |
| `Opportunity.closed_won` | Giao dịch được đóng | Kích hoạt email onboarding |
| `Opportunity.stage_changed` | Giai đoạn thay đổi | Cập nhật vòng đời liên hệ |

## Ví Dụ Code

### Khởi Tạo Trình Kết Nối

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

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

// Kết nối Salesforce
await tajo.connectors.connect('salesforce', {
  instanceUrl: process.env.SF_INSTANCE_URL,
  clientId: process.env.SF_CONSUMER_KEY,
  clientSecret: process.env.SF_CONSUMER_SECRET,
  refreshToken: process.env.SF_REFRESH_TOKEN
});
```

### Truy Vấn Liên Hệ Bằng SOQL

```javascript
// Truy vấn liên hệ bằng SOQL
const contacts = await tajo.connectors.query('salesforce', {
  soql: `
    SELECT Id, Email, FirstName, LastName, Phone,
           Account.Name, LeadSource, CreatedDate
    FROM Contact
    WHERE CreatedDate > 2024-01-01T00:00:00Z
    AND Email != null
    ORDER BY CreatedDate DESC
    LIMIT 1000
  `
});
```

### Đồng Bộ Hàng Loạt Sang Brevo

```javascript
// Đồng bộ Salesforce sang Brevo bằng Bulk API
await tajo.connectors.sync('salesforce', {
  type: 'full',
  resources: ['contacts', 'leads'],
  useBulkApi: true,
  options: {
    includeCustomFields: true,
    mapListMemberships: true
  }
});

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

## Giới Hạn Tốc Độ

| Tài Nguyên | Giới Hạn | Chi Tiết |
| --- | --- | --- |
| API Calls (REST) | 15,000/ngày | Mỗi org trên gói Developer |
| API Calls (Enterprise) | 1,000,000+/ngày | Dựa trên số giấy phép |
| Bulk API Jobs | 10,000/ngày | Mỗi org |
| Bulk API Records | Không giới hạn | Xử lý bất đồng bộ |
| Concurrent API Requests | 25 | Mỗi org |
| SOQL Query Timeout | 120 giây | Mỗi query |

Giám Sát Sử Dụng API

Theo dõi sử dụng API trong Salesforce Setup > System Overview. Việc vượt giới hạn sẽ trả về lỗi 503. Dùng Bulk API cho các thao tác khối lượng lớn.

## Khắc Phục Sự Cố

### Sự Cố Phổ Biến

| Sự Cố | Nguyên Nhân | Giải Pháp |
| --- | --- | --- |
| `INVALID_SESSION_ID` | Token hết hạn | Refresh OAuth token tự động |
| `REQUEST_LIMIT_EXCEEDED` | Vượt giới hạn API | Chuyển sang Bulk API cho lượng lớn |
| `QUERY_TIMEOUT` | SOQL phức tạp | Thêm điều kiện WHERE hoặc giới hạn trường |
| Trường tùy chỉnh bị thiếu | Tên API không đúng | Sử dụng tên API (kết thúc bằng `__c`), không phải label |
| Bulk job thất bại | Vấn đề định dạng dữ liệu | Kiểm tra báo cáo lỗi trong kết quả job |

### Chế Độ Debug

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

### Kiểm Tra Kết Nối

```bash
tajo connectors test salesforce
# ✓ OAuth authentication successful
# ✓ REST API accessible
# ✓ Contacts queryable
# ✓ Bulk API available
# ✓ Custom fields loaded
```

## Thực Hành Tốt Nhất

1. **Dùng Bulk API cho số lượng lớn** - Sử dụng Bulk API cho hơn 10.000 bản ghi
2. **Bộ nhớ đệm metadata** - Cache schema đối tượng để giảm lời gọi API
3. **Đồng bộ tăng dần** - Sử dụng `SystemModstamp` để lọc bản ghi thay đổi gần đây
4. **Người dùng tích hợp** - Tạo người dùng Salesforce chuyên dụng cho tích hợp API
5. **Theo dõi giới hạn API** - Thiết lập cảnh báo khi sử dụng API đạt 80%
6. **Xử lý lỗi** - Triển khai retry với backoff hàm mũ

## Bảo Mật

- **OAuth 2.0** - Xác thực dựa trên token với refresh tokens
- **Người dùng tích hợp** - Tài khoản Salesforce chuyên dụng với quyền tối thiểu
- **Connected App** - Kiểm soát phạm vi và IP allowlist
- **Mã hóa TLS** - Tất cả giao tiếp API được mã hóa
- **Nhật ký kiểm tra** - Theo dõi truy cập API trong Salesforce Login History

## Tài Nguyên Liên Quan

- [Tài Liệu API Salesforce](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/)
- [Tài Liệu Bulk API Salesforce](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/)
- [Trình Kết Nối HubSpot](https://tajo.io/vi/docs/connectors/crm/hubspot)
- [Trình Kết Nối Brevo](https://tajo.io/vi/docs/connectors/marketing/brevo)
- [Customer Sync Skill](https://tajo.io/vi/docs/skills/data-sync/customer-sync)
