Salesforce Konektor
Salesforce Konektor
Povežite svoj Salesforce CRM s Brevom putem Taja za sinkronizaciju kontakata poslovne razine, upravljanje leadovima, praćenje mogućnosti i marketinšku automatizaciju pokretanu podacima iz CRM-a.
Pregled
| Svojstvo | Vrijednost |
|---|---|
| Platforma | Salesforce |
| Kategorija | CRM |
| Složenost postavljanja | Napredno |
| Službena integracija | Da |
| Sinkronizirani podaci | Kontakti, Leadovi, Računi, Mogućnosti, Događaji |
| Osnovni URL API-ja | https://yourInstance.salesforce.com/services/data/vXX.0 |
Značajke
- Dvosmjerna sinkronizacija kontakata/leadova - Sinkronizirajte Salesforce kontakte i leadove s Brevo popisima kontakata
- Praćenje mogućnosti - Mapirajte faze i iznose poslova za segmentaciju temeljenu na prihodima
- Hijerarhija računa - Sinkronizirajte poslovne račune za marketing temeljen na računima u Brevu
- Mapiranje prilagođenih objekata - Mapirajte Salesforce prilagođene objekte na Brevo atribute i događaje
- Sinkronizacija članova kampanje - Sinkronizirajte članove Salesforce kampanja s Brevo popisima
- Praćenje aktivnosti - Sinkronizirajte zadatke, događaje i aktivnosti e-pošte za ocjenjivanje angažmana
- Streaming u stvarnom vremenu - Koristite Salesforce Streaming API za trenutna ažuriranja podataka
- Podrška za SOQL upite - Filtrirajte sinkronizirane podatke prilagođenim SOQL upitima
Preduvjeti
Prije nego što počnete, osigurajte da imate:
- Salesforce org (bilo koje izdanje s API pristupom)
- Konfiguriranu Connected App u Salesforce Setupu
- API pristup omogućen za vaš Salesforce korisnički profil
- Brevo račun s API pristupom
- Tajo račun
Autentifikacija
OAuth 2.0 Web Server Flow (Preporučeno)
Najbolje za produkcijske integracije s korisničkom autorizacijom.
# Korak 1: Autorizacijahttps://login.salesforce.com/services/oauth2/authorize? response_type=code& client_id={consumer_key}& redirect_uri={callback_url}
# Korak 2: Razmjena koda za tokenecurl -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
Za server-to-server integracije bez korisničke interakcije.
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}"Sigurnosni token
Salesforce zahtijeva dodavanje sigurnosnog tokena lozinki za username-password flow. Resetirajte token u Postavke > Moje osobne informacije > Resetiraj moj sigurnosni token.
Konfiguracija
Osnovna konfiguracija
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}"
# Opcije sinkronizacije podataka sync: contacts: true leads: true accounts: true opportunities: true campaigns: true
# Smjer sinkronizacije direction: salesforce_to_brevo
# Dodjela popisa u Brevu lists: all_leads: 15 qualified_leads: 16 customers: 17Mapiranje polja
Mapirajte Salesforce polja na atribute kontakata u Brevu:
Zadana mapiranja
| Parameter | Type | Description |
|---|---|---|
Email required | string | E-mail kontakta/leada (jedinstveni identifikator za Brevo) |
FirstName optional | string | Mapira se na atribut FIRSTNAME u Brevu |
LastName optional | string | Mapira se na atribut LASTNAME u Brevu |
Phone optional | string | Mapira se na atribut SMS za WhatsApp/SMS poruke |
Account.Name optional | string | Naziv povezanog računa/tvrtke |
LeadSource optional | string | Izvor akvizicije leada |
StageName optional | string | Faza mogućnosti za praćenje poslova |
OwnerId optional | string | Dodijeljeni prodajni predstavnik za usmjeravanje |
Mapiranje prilagođenih polja
field_mapping: # Standardna polja Email: email FirstName: FIRSTNAME LastName: LASTNAME Phone: SMS
# CRM polja LeadSource: LEAD_SOURCE Lead_Score__c: LEAD_SCORE Account.Name: COMPANY_NAME Account.Industry: INDUSTRY
# Polja mogućnosti Amount: DEAL_VALUE StageName: DEAL_STAGE CloseDate: EXPECTED_CLOSE_DATE
# Prilagođena polja Preferred_Channel__c: PREFERRED_CHANNEL Customer_Tier__c: VIP_TIERAPI krajnje točke
REST API resursi
| Metoda | Krajnja točka | Opis |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Upit kontakata |
POST | /services/data/vXX.0/sobjects/Contact | Stvaranje 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 računa |
GET | /services/data/vXX.0/sobjects/Opportunity | Upit mogućnosti |
GET | /services/data/vXX.0/query?q={SOQL} | Izvođenje SOQL upita |
POST | /services/data/vXX.0/composite/sobjects | Skupno stvaranje/ažuriranje |
Bulk API
| Metoda | Krajnja točka | Opis |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Stvaranje skupnog posla za unos |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Učitavanje skupnih podataka |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Provjera statusa posla |
Streaming API
| Krajnja točka | Opis |
|---|---|
/cometd/XX.0 | CometD long-polling za događaje u stvarnom vremenu |
| PushTopic | Pretplata na promjene zapisa putem tema temeljenih na SOQL-u |
| Change Data Capture | Streaming preciznih promjena na razini polja |
| Platform Events | Prilagođena arhitektura pokretana događajima |
Događaji
Događaji zapisa (Change Data Capture)
| Događaj | Okidač | Slučaj upotrebe |
|---|---|---|
ContactChangeEvent | Kontakt stvoren/ažuriran/obrisan | Sinkronizacija kontakata u stvarnom vremenu |
LeadChangeEvent | Lead stvoren/ažuriran/konvertiran | Praćenje životnog ciklusa leada |
OpportunityChangeEvent | Promijenjena faza mogućnosti | Automatizacija cjevovoda poslova |
AccountChangeEvent | Izmijenjen zapis računa | Sinkronizacija podataka tvrtke |
Platform Events
| Događaj | Okidač | Slučaj upotrebe |
|---|---|---|
Lead_Converted__e | Lead konvertiran u kontakt | Njegovanje nakon konverzije |
Deal_Won__e | Mogućnost zaključena-dobitna | Tok onboardinga klijenata |
Deal_Lost__e | Mogućnost zaključena-gubitnička | Kampanje za povratak |
Primjeri koda
Inicijalizacija konektora
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Povezivanje Salesforceaawait 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});Sinkronizacija kontakata s SOQL filtrom
// Sinkronizacija samo kvalificiranih leadova iz Salesforceaawait 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});
// Provjera statusa sinkronizacijeconst 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 stvarnom vremenu
// Pretplata na Salesforce Change Data Captureawait tajo.connectors.stream('salesforce', { channels: [ '/data/ContactChangeEvent', '/data/LeadChangeEvent', '/data/OpportunityChangeEvent' ], handler: async (event) => { console.log(`Otkrivena promjena: ${event.entity} ${event.changeType}`); // Tajo automatski sinkronizira s Brevom }});Ograničenja brzine
Ograničenja Salesforce REST API-ja ovise o vašem izdanju i broju licenci:
| Izdanje | API zahtjevi po 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:
- Ograničenje istovremenih API-ja: 25 dugotrajnih zahtjeva
- Bulk API: 15.000 serija po 24 sata
- Streaming API: 2.000 događaja dnevno (može se povećati)
- Composite API: 25 podzahtjeva po composite zahtjevu
Praćenje korištenja API-ja
Pratite korištenje API-ja u Salesforce Postavke > Pregled sustava. Tajo koristi bulk API za velike sinkronizacije kako bi štedio vaše API limite.
Rješavanje problema
Uobičajeni problemi
| Problem | Uzrok | Rješenje |
|---|---|---|
| INVALID_SESSION_ID | Token je istekao | Automatski osvježite OAuth token |
| REQUEST_LIMIT_EXCEEDED | Dostignuto dnevno ograničenje API-ja | Koristite Bulk API ili smanjite učestalost sinkronizacije |
| FIELD_INTEGRITY_EXCEPTION | Nedostaje obavezno polje | Mapirajte sva obavezna polja u konfiguraciji |
| DUPLICATES_DETECTED | Aktivna pravila za duplikate | Konfigurirajte postavke upravljanja duplikatima |
| INSUFFICIENT_ACCESS | Nedostaju dozvole za objekt | Dodijelite API pristup u Salesforce profilu |
Način otklanjanja grešaka
Omogućite opširno zapisivanje:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueTestiranje veze
tajo connectors test salesforce# ✓ OAuth token važeći# ✓ Kontakti dostupni# ✓ Leadovi dostupni# ✓ Računi dostupni# ✓ Mogućnosti dostupne# ✓ Bulk API omogućenPreporučene prakse
- Koristite Bulk API za velike sinkronizacije - Prebacite se na Bulk API 2.0 za skupove podataka veće od 2.000 zapisa
- Implementirajte Change Data Capture - Koristite CDC za sinkronizaciju u stvarnom vremenu umjesto anketiranja
- Mapirajte samo potrebna polja - Smanjite korištenje API-ja sinkroniziranjem samo potrebnih polja
- Rukujte osvježavanjem tokena - Implementirajte automatsku logiku osvježavanja OAuth tokena
- Koristite composite zahtjeve - Kombinirajte povezane API pozive za smanjenje broja zahtjeva
- Prvo testirajte u sandboxu - Koristite Salesforce sandbox org prije produkcijskog postavljanja
Sigurnost
- OAuth 2.0 - Industrijski standardna autorizacija s višestrukim vrstama dodjele
- IP ograničenja - Salesforce podržava IP raspone za prijavu i pouzdane IP postavke
- TLS 1.2+ - Sva API komunikacija šifrirana s minimalnim TLS 1.2
- Sigurnost na razini polja - Granularna kontrola pristupa poljima po profilu
- Upravljanje sesijama - Konfigurirani istek sesije i ograničenja istovremenih sesija