Salesforce konektor
Salesforce konektor
Poveži svoj Salesforce CRM sa Brevo putem Tajo za enterprise-grade sinhronizaciju kontakata, upravljanje leadovima, praćenje mogućnosti i marketing automatizaciju pokretanu tvojim CRM podacima.
Pregled
| Svojstvo | Vrednost |
|---|---|
| Platforma | Salesforce |
| Kategorija | CRM |
| Složenost podešavanja | Napredno |
| Zvanična integracija | Da |
| Sinhronizovani podaci | Kontakti, Leadovi, Nalozi, Mogućnosti, Događaji |
| Osnovni URL API-ja | https://yourInstance.salesforce.com/services/data/vXX.0 |
Karakteristike
- Dvosrna sinhronizacija kontakata/leadova - Sinhronizuj Salesforce kontakte i leadove sa Brevo listama kontakata
- Praćenje mogućnosti - Mapiranje faza i iznosa poslova za segmentaciju zasnovanu na prihodu
- Hijerarhija naloga - Sinhronizuj poslovne naloge za account-based marketing u Brevo
- Mapiranje prilagođenih objekata - Mapiranje Salesforce prilagođenih objekata na Brevo atribute i događaje
- Sinhronizacija članova kampanje - Sinhronizuj Salesforce članove kampanje sa Brevo listama
- Praćenje aktivnosti - Sinhronizuj zadatke, događaje i email aktivnosti za ocenjivanje angažovanja
- Streaming u realnom vremenu - Koristi Salesforce Streaming API za trenutna ažuriranja podataka
- Podrška za SOQL upite - Filtriraj sinhronizovane podatke prilagođenim SOQL upitima
Preduslovi
Pre nego što započneš, proveri da imaš:
- Salesforce organizaciju (bilo koje izdanje sa API pristupom)
- Konfigurisanu Connected App u Salesforce Setup
- API pristup omogućen za tvoj Salesforce korisnički profil
- Brevo nalog sa API pristupom
- Tajo nalog
Autentifikacija
OAuth 2.0 Web Server tok (preporučeno)
Najbolje za produkcione integracije sa autorizacijom korisnika.
# 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 tok
Za server-to-server integracije bez interakcije korisnika.
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}"Bezbednosni token
Salesforce zahteva dodavanje bezbednosnog tokena na lozinku za username-password tok. Resetuj token iz Setup > My Personal Information > Reset My Security Token.
Konfiguracija
Osnovno podešavanje
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: 17Mapiranje polja
Mapiranje Salesforce polja na Brevo atribute kontakta:
Default Mappings
| Parameter | Type | Description |
|---|---|---|
Email required | string | Email kontakta/leada (jedinstveni identifikator za Brevo) |
FirstName optional | string | Mapira se na FIRSTNAME atribut u Brevo |
LastName optional | string | Mapira se na LASTNAME atribut u Brevo |
Phone optional | string | Mapira se na SMS atribut za WhatsApp/SMS poruke |
Account.Name optional | string | Naziv pridruženog naloga/kompanije |
LeadSource optional | string | Izvor akvizicije leada |
StageName optional | string | Faza mogućnosti za praćenje poslova |
OwnerId optional | string | Dodeljeni prodajni predstavnik za rutiranje |
Mapiranje prilagođenih polja
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 endpointi
REST API resursi
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Upit kontakata |
POST | /services/data/vXX.0/sobjects/Contact | Kreiranje kontakta |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Ažuriranje kontakta |
GET | /services/data/vXX.0/sobjects/Lead | Upit leadova |
GET | /services/data/vXX.0/sobjects/Account | Upit naloga |
GET | /services/data/vXX.0/sobjects/Opportunity | Upit mogućnosti |
GET | /services/data/vXX.0/query?q={SOQL} | Izvršavanje SOQL upita |
POST | /services/data/vXX.0/composite/sobjects | Grupno kreiranje/ažuriranje |
Bulk API
| Metoda | Endpoint | Opis |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Kreiranje bulk ingest posla |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Otpremanje batch podataka |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Provera statusa posla |
Streaming API
| Endpoint | Opis |
|---|---|
/cometd/XX.0 | CometD long-polling za događaje u realnom vremenu |
| PushTopic | Pretplata na promene zapisa putem SOQL tema |
| Change Data Capture | Striming finih promena na nivou polja |
| Platform Events | Prilagođena arhitektura zasnovana na događajima |
Događaji
Događaji zapisa (Change Data Capture)
| Događaj | Okidač | Primer upotrebe |
|---|---|---|
ContactChangeEvent | Kontakt kreiran/ažuriran/obrisan | Sinhronizacija kontakata u realnom vremenu |
LeadChangeEvent | Lead kreiran/ažuriran/konvertovan | Praćenje životnog ciklusa leada |
OpportunityChangeEvent | Faza mogućnosti promenjena | Automatizacija deal pipelinea |
AccountChangeEvent | Zapis naloga izmenjen | Sinhronizacija podataka kompanije |
Platform Events
| Događaj | Okidač | Primer upotrebe |
|---|---|---|
Lead_Converted__e | Lead konvertovan u kontakt | Nurture nakon konverzije |
Deal_Won__e | Mogućnost zatvorena-dobijena | Tok onboardinga kupca |
Deal_Lost__e | Mogućnost zatvorena-izgubljena | Win-back kampanje |
Primeri koda
Inicijalizacija konektora
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 kontakata sa SOQL filterom
// 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 u realnom vremenu
// 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 }});Ograničenja brzine
Salesforce REST API limiti zavise od tvog izdanja i broja licenci:
| Izdanje | API zahtevi na 24 sata |
|---|---|
| Developer | 15.000 |
| Enterprise | 1.000 po korisničkoj licenci (min 15.000) |
| Unlimited | 5.000 po korisničkoj licenci (min 15.000) |
| Performance | 5.000 po korisničkoj licenci (min 15.000) |
Dodatna ograničenja:
- Limit istovremenih API zahteva: 25 dugotrajnih zahteva
- Bulk API: 15.000 batch-eva na 24 sata
- Streaming API: 2.000 događaja dnevno (može se povećati)
- Composite API: 25 podzahteva po composite zahtevu
Praćenje korišćenja API-ja
Prati korišćenje API-ja u Salesforce Setup > System Overview. Tajo koristi bulk API za velike sinhronizacije kako bi sačuvao tvoje API limite.
Rešavanje problema
Česti problemi
| Problem | Uzrok | Rešenje |
|---|---|---|
| INVALID_SESSION_ID | Token istekao | Automatski osvježi OAuth token |
| REQUEST_LIMIT_EXCEEDED | Dostignut dnevni API limit | Koristi Bulk API ili smanji učestalost sinhronizacije |
| FIELD_INTEGRITY_EXCEPTION | Nedostaje obavezno polje | Mapiraj sva obavezna polja u konfiguraciji |
| DUPLICATES_DETECTED | Aktivna pravila za duplikate | Konfiguriši podešavanja za obradu duplikata |
| INSUFFICIENT_ACCESS | Nedostaju dozvole za objekat | Dodeli API pristup u Salesforce profilu |
Debug režim
Uključi detaljno logovanje:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueTestiraj vezu
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledNajbolje prakse
- Koristi Bulk API za velike sinhronizacije - Prebaci se na Bulk API 2.0 za skupove podataka veće od 2.000 zapisa
- Implementiraj Change Data Capture - Koristi CDC za sinhronizaciju u realnom vremenu umesto ispitivanja
- Mapiraj samo potrebna polja - Smanji korišćenje API-ja sinhronizovanjem samo potrebnih polja
- Obrada osvežavanja tokena - Implementiraj automatsku logiku osvežavanja OAuth tokena
- Koristi composite zahteve - Kombinuj srodne API pozive kako bi smanjio broj zahteva
- Prvo testiraj u sandbox okruženju - Koristi Salesforce sandbox organizaciju pre produkcijskog postavljanja
Bezbednost
- OAuth 2.0 - Standardna autorizacija sa više tipova dozvola
- IP ograničenja - Salesforce podržava login IP opsege i podešavanja pouzdanih IP adresa
- TLS 1.2+ - Sva API komunikacija enkriptovana sa minimalnim TLS 1.2
- Bezbednost na nivou polja - Granularna kontrola pristupa polju po profilu
- Upravljanje sesijom - Konfigurisano isticanje sesije i ograničenja istovremenih sesija