---
title: "Коннектор Salesforce"
description: "Полное руководство по интеграции Salesforce CRM для синхронизации лидов, контактов, аккаунтов, возможностей и кастомных объектов с Brevo через Tajo."
url: https://tajo.io/ru/docs/connectors/crm/salesforce/
markdown: https://tajo.io/ru/docs/connectors/crm/salesforce.md
lang: ru-RU
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 к Brevo через Tajo для корпоративной синхронизации контактов, управления лидами, отслеживания возможностей и маркетинговой автоматизации на основе данных CRM.

## Обзор

| Свойство | Значение |
| --- | --- |
| **Платформа** | Salesforce |
| **Категория** | CRM |
| **Сложность настройки** | Продвинутая |
| **Официальная интеграция** | Нет |
| **Синхронизируемые данные** | Контакты, лиды, аккаунты, возможности, события |
| **Базовый URL API** | `https://yourInstance.salesforce.com/services/data/vXX.0` |

## Возможности

- **Двусторонняя синхронизация контактов/лидов**, синхронизация контактов и лидов Salesforce со списками контактов Brevo
- **Отслеживание возможностей**, сопоставляйте стадии сделок и суммы для сегментации по выручке
- **Иерархия аккаунтов**, синхронизируйте компании-аккаунты для account-based маркетинга в Brevo
- **Сопоставление кастомных объектов**, сопоставляйте кастомные объекты Salesforce с атрибутами и событиями Brevo
- **Синхронизация участников кампаний**, синхронизируйте участников кампаний Salesforce со списками Brevo
- **Отслеживание активности**, синхронизируйте задачи, события и email-активности для оценки вовлечённости
- **Стриминг в реальном времени**, используйте Salesforce Streaming API для мгновенных обновлений данных
- **Поддержка SOQL-запросов**, фильтруйте синхронизируемые данные кастомными SOQL-запросами

## Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

1. Salesforce org (любой edition с доступом к 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

Для интеграций server-to-server без участия пользователя.

```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. Сбросьте токен в 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 | Email контакта/лида (уникальный идентификатор для 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

### Ресурсы 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` | Создать bulk ingest job |
| `PUT` | `/services/data/vXX.0/jobs/ingest/{jobId}/batches` | Загрузить пакет данных |
| `GET` | `/services/data/vXX.0/jobs/ingest/{jobId}` | Проверить статус job |

### Streaming API

| Эндпоинт | Описание |
| --- | --- |
| `/cometd/XX.0` | CometD long-polling для событий в реальном времени |
| PushTopic | Подписка на изменения записей через SOQL-топики |
| Change Data Capture | Стриминг детальных изменений на уровне полей |
| Platform Events | Кастомная event-driven архитектура |

## События

### События записей (Change Data Capture)

| Событие | Триггер | Сценарий использования |
| --- | --- | --- |
| `ContactChangeEvent` | Контакт создан/обновлён/удалён | Синхронизация контактов в реальном времени |
| `LeadChangeEvent` | Лид создан/обновлён/сконвертирован | Отслеживание жизненного цикла лида |
| `OpportunityChangeEvent` | Изменена стадия возможности | Автоматизация воронки сделок |
| `AccountChangeEvent` | Изменена запись аккаунта | Синхронизация данных компаний |

### Platform Events

| Событие | Триггер | Сценарий использования |
| --- | --- | --- |
| `Lead_Converted__e` | Лид сконвертирован в контакт | Пост-конверсионное взращивание |
| `Deal_Won__e` | Возможность закрыта как won | Процесс онбординга клиента |
| `Deal_Lost__e` | Возможность закрыта как lost | Win-back кампании |

## Примеры кода

### Инициализация коннектора

```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
  }
});
```

## Ограничения скорости

Лимиты REST API Salesforce зависят от вашего edition и количества лицензий:

| Edition | API-запросы за 24 часа |
| --- | --- |
| Developer | 15 000 |
| Enterprise | 1 000 на пользовательскую лицензию (минимум 15 000) |
| Unlimited | 5 000 на пользовательскую лицензию (минимум 15 000) |
| Performance | 5 000 на пользовательскую лицензию (минимум 15 000) |

Дополнительные ограничения:

- **Лимит параллельных API-вызовов**: 25 долгих запросов
- **Bulk API**: 15 000 пакетов за 24 часа
- **Streaming API**: 2 000 событий в день (можно увеличить)
- **Composite API**: 25 подзапросов на композитный запрос

Мониторинг использования API

Отслеживайте использование API в Salesforce Setup > System Overview. Tajo использует Bulk API для крупных синхронизаций, чтобы экономить ваши API-лимиты.

## Устранение неполадок

### Частые проблемы

| Проблема | Причина | Решение |
| --- | --- | --- |
| INVALID\_SESSION\_ID | Токен истёк | Автоматически обновите OAuth-токен |
| REQUEST\_LIMIT\_EXCEEDED | Превышен дневной API-лимит | Используйте Bulk API или уменьшите частоту синхронизации |
| FIELD\_INTEGRITY\_EXCEPTION | Отсутствует обязательное поле | Сопоставьте все обязательные поля в конфигурации |
| DUPLICATES\_DETECTED | Активны правила дубликатов | Настройте предпочтения обработки дубликатов |
| INSUFFICIENT\_ACCESS | Отсутствуют разрешения на объект | Предоставьте API-доступ в профиле Salesforce |

### Режим отладки

Включите подробное логирование:

```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 для синхронизации в реальном времени вместо опроса
3. **Сопоставляйте только нужные поля**, снижайте нагрузку на API, синхронизируя только необходимые поля
4. **Обрабатывайте обновление токенов**, реализуйте автоматическую логику обновления OAuth-токенов
5. **Используйте composite-запросы**, объединяйте связанные API-вызовы, чтобы уменьшить количество запросов
6. **Сначала тестируйте в sandbox**, используйте Salesforce sandbox org перед развёртыванием в продакшен

## Безопасность

- **OAuth 2.0**, отраслевой стандарт авторизации с несколькими типами grant
- **Ограничения по IP**, Salesforce поддерживает диапазоны IP для входа и trusted 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/ru/docs/connectors/crm/hubspot)
- [Навык синхронизации клиентов](https://tajo.io/ru/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/ru/docs/contact-management)
