Conector Salesforce
Conector Salesforce
Conectați Salesforce CRM la Brevo prin Tajo pentru sincronizare de nivel enterprise a contactelor, gestionarea lead-urilor, urmărirea oportunităților și automatizare de marketing bazată pe datele dvs. CRM.
Prezentare generală
| Proprietate | Valoare |
|---|---|
| Platformă | Salesforce |
| Categorie | CRM |
| Complexitate configurare | Avansată |
| Integrare oficială | Da |
| Date sincronizate | Contacte, Lead-uri, Conturi, Oportunități, Evenimente |
| URL de bază API | https://yourInstance.salesforce.com/services/data/vXX.0 |
Funcționalități
- Sincronizare bidirecțională contacte/lead-uri - Sincronizați contactele și lead-urile Salesforce cu listele de contacte Brevo
- Urmărire oportunități - Mapați etapele și sumele ofertelor pentru segmentare bazată pe venituri
- Ierarhie de conturi - Sincronizați conturile de companie pentru marketing bazat pe cont în Brevo
- Mapare obiecte personalizate - Mapați obiectele personalizate Salesforce la atributele și evenimentele Brevo
- Sincronizare membri campanie - Sincronizați membrii campaniei Salesforce cu listele Brevo
- Urmărire activități - Sincronizați sarcini, evenimente și activități e-mail pentru scorarea implicării
- Streaming în timp real - Utilizați Salesforce Streaming API pentru actualizări instantanee ale datelor
- Suport interogări SOQL - Filtrați datele sincronizate cu interogări SOQL personalizate
Cerințe preliminare
Înainte de a începe, asigurați-vă că aveți:
- O organizație Salesforce (orice ediție cu acces API)
- O aplicație conectată configurată în Salesforce Setup
- Acces API activat pentru profilul de utilizator Salesforce
- Un cont Brevo cu acces API
- Un cont Tajo
Autentificare
Flux OAuth 2.0 Web Server (Recomandat)
Ideal pentru integrări de producție cu autorizare utilizator.
# 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}"Flux cu nume de utilizator și parolă
Pentru integrări server-la-server fără interacțiunea utilizatorului.
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}"Token de securitate
Salesforce necesită adăugarea tokenului de securitate la parolă pentru fluxul cu nume de utilizator și parolă. Resetați tokenul din Setup > My Personal Information > Reset My Security Token.
Configurare
Configurare de bază
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: 17Mapare câmpuri
Mapați câmpurile Salesforce la atributele de contact Brevo:
Mapări implicite
| Parameter | Type | Description |
|---|---|---|
Email required | string | E-mailul contactului/lead-ului (identificator unic pentru Brevo) |
FirstName optional | string | Mapează la atributul FIRSTNAME în Brevo |
LastName optional | string | Mapează la atributul LASTNAME în Brevo |
Phone optional | string | Mapează la atributul SMS pentru mesaje WhatsApp/SMS |
Account.Name optional | string | Numele contului/companiei asociate |
LeadSource optional | string | Sursa de achiziție a lead-ului |
StageName optional | string | Etapa oportunității pentru urmărirea ofertelor |
OwnerId optional | string | Reprezentantul de vânzări atribuit pentru rutare |
Mapare câmpuri personalizate
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_TIERPuncte finale API
Resurse API REST
| Metodă | Punct final | Descriere |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Interogare contacte |
POST | /services/data/vXX.0/sobjects/Contact | Creează un contact |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Actualizează un contact |
GET | /services/data/vXX.0/sobjects/Lead | Interogare lead-uri |
GET | /services/data/vXX.0/sobjects/Account | Interogare conturi |
GET | /services/data/vXX.0/sobjects/Opportunity | Interogare oportunități |
GET | /services/data/vXX.0/query?q={SOQL} | Execută interogare SOQL |
POST | /services/data/vXX.0/composite/sobjects | Creare/actualizare în lot |
Bulk API
| Metodă | Punct final | Descriere |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Creează job de ingestie în bloc |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Încarcă date în lot |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Verifică statusul job-ului |
Streaming API
| Punct final | Descriere |
|---|---|
/cometd/XX.0 | Long-polling CometD pentru evenimente în timp real |
| PushTopic | Abonați-vă la modificări ale înregistrărilor prin topicuri bazate pe SOQL |
| Change Data Capture | Transmiteți modificări granulare la nivel de câmp |
| Platform Events | Arhitectură personalizată bazată pe evenimente |
Evenimente
Evenimente înregistrare (Change Data Capture)
| Eveniment | Declanșator | Caz de utilizare |
|---|---|---|
ContactChangeEvent | Contact creat/actualizat/șters | Sincronizare contact în timp real |
LeadChangeEvent | Lead creat/actualizat/convertit | Urmărire ciclu de viață lead |
OpportunityChangeEvent | Etapă oportunitate schimbată | Automatizare pipeline oferte |
AccountChangeEvent | Înregistrare cont modificată | Sincronizare date companie |
Evenimente de platformă
| Eveniment | Declanșator | Caz de utilizare |
|---|---|---|
Lead_Converted__e | Lead convertit în contact | Nurturing post-conversie |
Deal_Won__e | Oportunitate câștigată | Flux de onboarding client |
Deal_Lost__e | Oportunitate pierdută | Campanii de câștigare înapoi |
Exemple de cod
Inițializare conector
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});Sincronizare contacte cu filtru 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// }Streaming în timp real
// 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 }});Limite de rată
Limitele API REST Salesforce depind de ediția și numărul de licențe:
| Ediție | Cereri API per 24 de ore |
|---|---|
| Developer | 15.000 |
| Enterprise | 1.000 per licență utilizator (minim 15.000) |
| Unlimited | 5.000 per licență utilizator (minim 15.000) |
| Performance | 5.000 per licență utilizator (minim 15.000) |
Limite suplimentare:
- Limită API concurent: 25 cereri cu durată lungă
- Bulk API: 15.000 loturi per 24 de ore
- Streaming API: 2.000 evenimente pe zi (poate fi majorat)
- Composite API: 25 subcereri per cerere compusă
Monitorizare utilizare API
Monitorizați utilizarea API în Salesforce Setup > System Overview. Tajo utilizează Bulk API pentru sincronizări mari pentru a economisi limitele API.
Depanare
Probleme frecvente
| Problemă | Cauză | Soluție |
|---|---|---|
| INVALID_SESSION_ID | Token expirat | Actualizați automat tokenul OAuth |
| REQUEST_LIMIT_EXCEEDED | Limită API zilnică atinsă | Utilizați Bulk API sau reduceți frecvența sincronizării |
| FIELD_INTEGRITY_EXCEPTION | Câmp obligatoriu lipsă | Mapați toate câmpurile obligatorii în configurare |
| DUPLICATES_DETECTED | Reguli de duplicate active | Configurați preferințele de gestionare a duplicatelor |
| INSUFFICIENT_ACCESS | Permisiuni obiect lipsă | Acordați acces API în profilul Salesforce |
Modul de depanare
Activați jurnalizarea verbosă:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueTestare conexiune
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledBune practici
- Utilizați Bulk API pentru sincronizări mari - Treceți la Bulk API 2.0 pentru seturi de date cu mai mult de 2.000 înregistrări
- Implementați Change Data Capture - Utilizați CDC pentru sincronizare în timp real în loc de interogare
- Mapați doar câmpurile necesare - Reduceți utilizarea API sincronizând doar câmpurile necesare
- Gestionați reîmprospătarea tokenului - Implementați logica automată de reîmprospătare a tokenului OAuth
- Utilizați cereri compuse - Combinați apeluri API corelate pentru a reduce numărul de cereri
- Testați mai întâi în sandbox - Utilizați un org sandbox Salesforce înainte de implementarea în producție
Securitate
- OAuth 2.0 - Autorizare standard industrie cu mai multe tipuri de grant
- Restricții IP - Salesforce suportă intervale IP de autentificare și setări IP de încredere
- TLS 1.2+ - Toată comunicarea API criptată cu minim TLS 1.2
- Securitate la nivel de câmp - Control granular al accesului la câmpuri per profil
- Gestionare sesiuni - Timeout de sesiune configurabil și limite de sesiuni concurente