Конектор Salesforce
Конектор Salesforce
Свържете своя Salesforce CRM с Brevo чрез Tajo за синхронизация на контакти от корпоративен клас, управление на лийдове, проследяване на възможности и маркетингова автоматизация, задвижвана от вашите CRM данни.
Преглед
| Свойство | Стойност |
|---|---|
| Платформа | Salesforce |
| Категория | CRM |
| Сложност на настройка | Разширена |
| Официална интеграция | Да |
| Синхронизирани данни | Контакти, лийдове, акаунти, възможности, събития |
| API Base URL | https://yourInstance.salesforce.com/services/data/vXX.0 |
Функции
- Двупосочна синхронизация на контакти/лийдове – Синхронизирайте контакти и лийдове от Salesforce със списъци с контакти в Brevo
- Проследяване на възможности – Мапвайте етапите и сумите на сделките за сегментация на базата на приходите
- Йерархия на акаунтите – Синхронизирайте фирмени акаунти за account-based маркетинг в Brevo
- Мапване на персонализирани обекти – Мапвайте персонализирани обекти от Salesforce към атрибути и събития в Brevo
- Синхронизация на членове на кампания – Синхронизирайте членовете на кампании от Salesforce със списъци в Brevo
- Проследяване на активности – Синхронизирайте задачи, събития и имейл активности за оценка на ангажираността
- Стрийминг в реално време – Използвайте Salesforce Streaming API за незабавни обновявания на данни
- Поддръжка на SOQL заявки – Филтрирайте синхронизираните данни с персонализирани SOQL заявки
Предварителни условия
Преди да започнете, уверете се, че имате:
- Salesforce org (всяко издание с API достъп)
- Свързано приложение (Connected App), конфигурирано в Salesforce Setup
- Активиран API достъп за вашия Salesforce потребителски профил
- Акаунт в Brevo с API достъп
- Акаунт в Tajo
Автентикация
OAuth 2.0 Web Server Flow (препоръчително)
Най-добре за продукционни интеграции с потребителска оторизация.
# Step 1: Authorizehttps://login.salesforce.com/services/oauth2/authorize? response_type=code& client_id={consumer_key}& redirect_uri={callback_url}
# Step 2: Exchange code for tokenscurl -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 интеграции без взаимодействие с потребителя.
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 flow. Нулирайте токена си от Setup > My Personal Information > Reset My Security Token.
Конфигурация
Основна настройка
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 | Определен търговски представител за маршрутизиране |
Мапване на персонализирани полета
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_TIERAPI крайни точки
REST API ресурси
| Method | Endpoint | Описание |
|---|---|---|
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
| Method | Endpoint | Описание |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Създаване на bulk ingest задача |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Качване на batch данни |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Проверка на статуса на задачата |
Streaming API
| Endpoint | Описание |
|---|---|
/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 | Възможност closed-won | Поток за onboarding на клиенти |
Deal_Lost__e | Възможност closed-lost | Win-back кампании |
Примери за код
Инициализация на конектора
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Salesforceawait 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 филтър
// Sync only qualified leads from Salesforceawait 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 statusconst status = await tajo.connectors.status('salesforce');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsSynced: 18400,// leadsSynced: 7200,// opportunitiesSynced: 3100// }Стрийминг в реално време
// Subscribe to Salesforce Change Data Captureawait 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 | 1000 за потребителски лиценз (мин. 15 000) |
| Unlimited | 5000 за потребителски лиценз (мин. 15 000) |
| Performance | 5000 за потребителски лиценз (мин. 15 000) |
Допълнителни лимити:
- Лимит на конкурентни API заявки: 25 дълготрайни заявки
- Bulk API: 15 000 batch заявки за 24 часа
- Streaming API: 2000 събития дневно (може да бъде увеличено)
- Composite API: 25 подзаявки на composite заявка
Мониторинг на 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 профила |
Debug режим
Активирайте подробно логиране:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueТестване на връзката
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledНай-добри практики
- Използвайте Bulk API за големи синхронизации – Преминете към Bulk API 2.0 за набори от данни над 2000 записа
- Имплементирайте Change Data Capture – Използвайте CDC за синхронизация в реално време вместо допитване
- Мапвайте само необходимите полета – Намалете API употребата, като синхронизирате само нужните полета
- Обработвайте обновяването на токена – Имплементирайте автоматична логика за refresh на OAuth токена
- Използвайте composite заявки – Комбинирайте свързани API повиквания за намаляване на броя заявки
- Тествайте първо в sandbox – Използвайте Salesforce sandbox org преди продукционно разгръщане
Сигурност
- OAuth 2.0 – Индустриален стандарт за оторизация с множество grant типове
- IP ограничения – Salesforce поддържа IP диапазони за login и настройки за доверени IP
- TLS 1.2+ – Цялата API комуникация е криптирана с минимум TLS 1.2
- Сигурност на ниво поле – Гранулиран контрол на достъпа до полета за всеки профил
- Управление на сесиите – Конфигурируем таймаут на сесиите и лимити на конкурентни сесии