Salesforce Connector
Salesforce Connector
Poveži svoj Salesforce CRM z Brevo prek Tajo za sinhronizacijo stikov na ravni podjetij, upravljanje potencialnih kupcev, sledenje priložnostim in marketinško avtomatizacijo na osnovi podatkov CRM.
Pregled
| Lastnost | Vrednost |
|---|---|
| Platforma | Salesforce |
| Kategorija | CRM |
| Zahtevnost nastavitve | Napredna |
| Uradna integracija | Da |
| Sinhronizirani podatki | Stiki, potencialni kupci, računi, priložnosti, dogodki |
| Osnovni URL API | https://yourInstance.salesforce.com/services/data/vXX.0 |
Funkcionalnosti
- Dvosmerna sinhronizacija stikov/potencialnih kupcev – sinhronizacija stikov in potencialnih kupcev Salesforce s seznami stikov Brevo
- Sledenje priložnostim – preslikaj faze poslov in zneske za segmentacijo na podlagi prihodkov
- Hierarhija računov – sinhronizacija računov podjetij za marketing na osnovi računov v Brevo
- Preslikava objektov po meri – preslikaj objekte po meri Salesforce v atribute in dogodke Brevo
- Sinhronizacija članov kampanje – sinhronizacija članov kampanje Salesforce s seznami Brevo
- Sledenje aktivnostim – sinhronizacija nalog, dogodkov in e-mail aktivnosti za ocenjevanje angažiranosti
- Pretakanje v realnem času – uporabi Streaming API Salesforce za takojšnje posodobitve podatkov
- Podpora za poizvedbe SOQL – filtriraj sinhronizirane podatke z lastnimi poizvedbami SOQL
Predpogoji
Preden začneš, se prepričaj, da imaš:
- Salesforce org (katera koli izdaja z dostopom do API)
- Konfigurirana Connected App v Salesforce Setup
- Dostop do API omogočen za tvoj profil Salesforce
- Brevo račun z dostopom do API
- Tajo račun
Avtentikacija
OAuth 2.0 Web Server Flow (priporočeno)
Najboljše za produkcijske integracije s pooblastilom uporabnika.
# 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}"Tok z uporabniškim imenom in geslom
Za integracije med strežniki brez interakcije z uporabnikom.
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}"Varnostni žeton
Salesforce zahteva, da geslu pripneš varnostni žeton za tok z uporabniškim imenom in geslom. Ponastavi žeton v Setup > My Personal Information > Reset My Security Token.
Konfiguracija
Osnovna nastavitev
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: 17Preslikava polj
Preslikaj polja Salesforce v atribute stikov Brevo:
Privzete preslikave
| Parameter | Type | Description |
|---|---|---|
Email required | string | E-mail stika/potencialnega kupca (enolični identifikator za Brevo) |
FirstName optional | string | Preslika se v atribut FIRSTNAME v Brevo |
LastName optional | string | Preslika se v atribut LASTNAME v Brevo |
Phone optional | string | Preslika se v atribut SMS za sporočanje WhatsApp/SMS |
Account.Name optional | string | Ime povezanega računa/podjetja |
LeadSource optional | string | Vir pridobivanja potencialnih kupcev |
StageName optional | string | Faza priložnosti za sledenje poslom |
OwnerId optional | string | Dodeljeni prodajni predstavnik za usmerjanje |
Preslikava polj po meri
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_TIERKončne točke API
Viri REST API
| Metoda | Končna točka | Opis |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Poizvedba stikov |
POST | /services/data/vXX.0/sobjects/Contact | Ustvari stik |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Posodobi stik |
GET | /services/data/vXX.0/sobjects/Lead | Poizvedba potencialnih kupcev |
GET | /services/data/vXX.0/sobjects/Account | Poizvedba računov |
GET | /services/data/vXX.0/sobjects/Opportunity | Poizvedba priložnosti |
GET | /services/data/vXX.0/query?q={SOQL} | Izvedi poizvedbo SOQL |
POST | /services/data/vXX.0/composite/sobjects | Paketno ustvarjanje/posodabljanje |
Bulk API
| Metoda | Končna točka | Opis |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Ustvari paketno opravilo vnosa |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Naloži paketne podatke |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Preveri status opravila |
Streaming API
| Končna točka | Opis |
|---|---|
/cometd/XX.0 | CometD dolgo anketiranje za dogodke v realnem času |
| PushTopic | Naroči se na spremembe zapisov prek tem na osnovi SOQL |
| Change Data Capture | Pretakanje natančnih sprememb na ravni polj |
| Platform Events | Arhitektura, ki temelji na dogodkih po meri |
Dogodki
Dogodki zapisov (Change Data Capture)
| Dogodek | Sprožilec | Primer uporabe |
|---|---|---|
ContactChangeEvent | Stik ustvarjen/posodobljen/izbrisan | Sinhronizacija stikov v realnem času |
LeadChangeEvent | Potencialni kupec ustvarjen/posodobljen/konvertiran | Sledenje življenjskemu ciklu potencialnih kupcev |
OpportunityChangeEvent | Spremenjena faza priložnosti | Avtomatizacija prodajnega lijaka |
AccountChangeEvent | Spremenjen zapis računa | Sinhronizacija podatkov podjetja |
Platform Events
| Dogodek | Sprožilec | Primer uporabe |
|---|---|---|
Lead_Converted__e | Potencialni kupec konvertiran v stik | Negovalna kampanja po konverziji |
Deal_Won__e | Priložnost zaprta-pridobljena | Tok uvajanja stranke |
Deal_Lost__e | Priložnost zaprta-izgubljena | Kampanje za pridobitev nazaj |
Primeri kode
Inicializacija konektorja
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});Sinhronizacija stikov s filtrom 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// }Pretakanje v realnem času
// 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 }});Omejitve hitrosti
Omejitve REST API Salesforce so odvisne od izdaje in števila licenc:
| Izdaja | Zahtevki API na 24 ur |
|---|---|
| Developer | 15.000 |
| Enterprise | 1.000 na licenco (min. 15.000) |
| Unlimited | 5.000 na licenco (min. 15.000) |
| Performance | 5.000 na licenco (min. 15.000) |
Dodatne omejitve:
- Sočasna omejitev API: 25 dolgotrajnih zahtevkov
- Bulk API: 15.000 paketov na 24 ur
- Streaming API: 2.000 dogodkov na dan (možno povečati)
- Composite API: 25 podzahtevkov na sestavljeni zahtevek
Spremljanje porabe API
Spremljaj porabo API v Salesforce Setup > System Overview. Tajo za velike sinhronizacije uporablja Bulk API, da ohrani omejitve API.
Odpravljanje težav
Pogoste težave
| Težava | Vzrok | Rešitev |
|---|---|---|
| INVALID_SESSION_ID | Žeton je potekel | Samodejno osveži OAuth žeton |
| REQUEST_LIMIT_EXCEEDED | Dosežena dnevna omejitev API | Uporabi Bulk API ali zmanjšaj pogostost sinhronizacije |
| FIELD_INTEGRITY_EXCEPTION | Manjkajoče obvezno polje | Preslikaj vsa zahtevana polja v konfiguraciji |
| DUPLICATES_DETECTED | Aktivna pravila podvajanja | Nastavi nastavitve za obravnavo podvojitev |
| INSUFFICIENT_ACCESS | Manjkajoča dovoljenja za objekt | Dodeli dostop do API v profilu Salesforce |
Način odpravljanja napak
Omogoči podrobno beleženje:
connectors: salesforce: debug: true log_level: verbose log_api_calls: truePreizkus povezave
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledNajboljše prakse
- Za velike sinhronizacije uporabi Bulk API – za nabore podatkov nad 2.000 zapisov preklopi na Bulk API 2.0
- Implementiraj Change Data Capture – za sinhronizacijo v realnem času namesto anketiranja
- Preslikaj samo potrebna polja – zmanjšaj porabo API s sinhronizacijo samo zahtevanih polj
- Obravnavaj osvežitev žetona – implementiraj samodejno logiko za osvežitev OAuth žetona
- Uporabi sestavljene zahtevke – združi sorodne klice API za zmanjšanje števila zahtevkov
- Najprej preizkusi v testnem okolju – pred produkcijsko namestitvijo uporabi testni org Salesforce
Varnost
- OAuth 2.0 – industrijski standard za avtorizacijo z več tipi dodelitev
- Omejitve IP – Salesforce podpira območja prijavnih IP in nastavitve zaupanja vrednih IP
- TLS 1.2+ – vsa komunikacija API šifrirana z minimalno različico TLS 1.2
- Varnost na ravni polj – natančen nadzor dostopa do polj na profil
- Upravljanje sej – nastavljiva časovna omejitev seje in omejitve sočasnih sej