Konektor Salesforce
Konektor Salesforce
Połącz swój Salesforce CRM z Brevo przez Tajo, aby uzyskać synchronizację kontaktów klasy enterprise, zarządzanie leadami, śledzenie szans sprzedaży i automatyzację marketingu opartą na danych CRM.
Przegląd
| Właściwość | Wartość |
|---|---|
| Platforma | Salesforce |
| Kategoria | CRM |
| Poziom konfiguracji | Zaawansowany |
| Integracja oficjalna | Tak |
| Synchronizowane dane | Kontakty, Leady, Konta, Szanse sprzedaży, Zdarzenia |
| Bazowy URL API | https://yourInstance.salesforce.com/services/data/vXX.0 |
Funkcje
- Dwukierunkowa synchronizacja kontaktów/leadów - Synchronizuj kontakty i leady Salesforce z listami kontaktów Brevo
- Śledzenie szans sprzedaży - Mapuj etapy i kwoty transakcji dla segmentacji opartej na przychodach
- Hierarchia kont - Synchronizuj konta firmowe dla marketingu opartego na kontach w Brevo
- Mapowanie obiektów niestandardowych - Mapuj obiekty niestandardowe Salesforce na atrybuty i zdarzenia Brevo
- Synchronizacja członków kampanii - Synchronizuj członków kampanii Salesforce z listami Brevo
- Śledzenie aktywności - Synchronizuj zadania, zdarzenia i aktywności e-mailowe dla oceny zaangażowania
- Streaming w czasie rzeczywistym - Używaj Salesforce Streaming API dla natychmiastowych aktualizacji danych
- Obsługa zapytań SOQL - Filtruj synchronizowane dane niestandardowymi zapytaniami SOQL
Wymagania wstępne
Zanim zaczniesz, upewnij się, że masz:
- Organizację Salesforce (dowolna edycja z dostępem do API)
- Skonfigurowaną aplikację Connected App w konfiguracji Salesforce
- Dostęp do API włączony dla profilu użytkownika Salesforce
- Konto Brevo z dostępem do API
- Konto Tajo
Uwierzytelnianie
Przepływ Web Server OAuth 2.0 (zalecane)
Najlepszy dla integracji produkcyjnych z autoryzacją użytkownika.
# 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}"Przepływ Username-Password
Dla integracji serwer-serwer bez interakcji użytkownika.
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 bezpieczeństwa
Salesforce wymaga dołączenia tokenu bezpieczeństwa do hasła w przepływie username-password. Zresetuj token z Setup > My Personal Information > Reset My Security Token.
Konfiguracja
Podstawowa konfiguracja
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: 17Mapowanie pól
Mapuj pola Salesforce na atrybuty kontaktów Brevo:
Domyślne mapowania
| Parameter | Type | Description |
|---|---|---|
Email required | string | E-mail kontaktu/leada (unikalny identyfikator dla Brevo) |
FirstName optional | string | Mapuje się na atrybut FIRSTNAME w Brevo |
LastName optional | string | Mapuje się na atrybut LASTNAME w Brevo |
Phone optional | string | Mapuje się na atrybut SMS dla wiadomości WhatsApp/SMS |
Account.Name optional | string | Nazwa powiązanego konta/firmy |
LeadSource optional | string | Źródło pozyskania leada |
StageName optional | string | Etap szansy sprzedaży do śledzenia transakcji |
OwnerId optional | string | Przypisany przedstawiciel handlowy do routingu |
Niestandardowe mapowanie pól
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_TIEREndpointy API
Zasoby REST API
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Zapytanie o kontakty |
POST | /services/data/vXX.0/sobjects/Contact | Utwórz kontakt |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Aktualizuj kontakt |
GET | /services/data/vXX.0/sobjects/Lead | Zapytanie o leady |
GET | /services/data/vXX.0/sobjects/Account | Zapytanie o konta |
GET | /services/data/vXX.0/sobjects/Opportunity | Zapytanie o szanse sprzedaży |
GET | /services/data/vXX.0/query?q={SOQL} | Wykonaj zapytanie SOQL |
POST | /services/data/vXX.0/composite/sobjects | Zbiorcze tworzenie/aktualizacja |
Bulk API
| Metoda | Endpoint | Opis |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Utwórz zadanie importu zbiorczego |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Prześlij dane wsadowe |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Sprawdź status zadania |
Streaming API
| Endpoint | Opis |
|---|---|
/cometd/XX.0 | Długie odpytywanie CometD dla zdarzeń w czasie rzeczywistym |
| PushTopic | Subskrybuj zmiany rekordów przez tematy oparte na SOQL |
| Change Data Capture | Strumieniuj szczegółowe zmiany na poziomie pól |
| Platform Events | Niestandardowa architektura sterowana zdarzeniami |
Zdarzenia
Zdarzenia rekordów (Change Data Capture)
| Zdarzenie | Wyzwalacz | Zastosowanie |
|---|---|---|
ContactChangeEvent | Kontakt utworzony/zaktualizowany/usunięty | Synchronizacja kontaktów w czasie rzeczywistym |
LeadChangeEvent | Lead utworzony/zaktualizowany/przekonwertowany | Śledzenie cyklu życia leada |
OpportunityChangeEvent | Zmiana etapu szansy sprzedaży | Automatyzacja lejka transakcji |
AccountChangeEvent | Rekord konta zmodyfikowany | Synchronizacja danych firmy |
Zdarzenia platformy
| Zdarzenie | Wyzwalacz | Zastosowanie |
|---|---|---|
Lead_Converted__e | Lead przekonwertowany na kontakt | Nurturing po konwersji |
Deal_Won__e | Szansa sprzedaży zamknięta-wygrana | Przepływ onboardingu klienta |
Deal_Lost__e | Szansa sprzedaży zamknięta-przegrana | Kampanie win-back |
Przykłady kodu
Inicjalizacja 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});Synchronizuj kontakty z filtrem 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 w czasie rzeczywistym
// 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 }});Limity API
Limity REST API Salesforce zależą od twojej edycji i liczby licencji:
| Edycja | Żądania API na 24 godziny |
|---|---|
| Developer | 15 000 |
| Enterprise | 1 000 na licencję użytkownika (min. 15 000) |
| Unlimited | 5 000 na licencję użytkownika (min. 15 000) |
| Performance | 5 000 na licencję użytkownika (min. 15 000) |
Dodatkowe limity:
- Limit współbieżnych API: 25 długotrwałych żądań
- Bulk API: 15 000 partii na 24 godziny
- Streaming API: 2 000 zdarzeń dziennie (można zwiększyć)
- Composite API: 25 podzapytań na żądanie złożone
Monitorowanie użycia API
Monitoruj użycie API w Salesforce Setup > System Overview. Tajo używa Bulk API dla dużych synchronizacji, aby oszczędzać limity API.
Rozwiązywanie problemów
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| INVALID_SESSION_ID | Token wygasł | Automatycznie odśwież token OAuth |
| REQUEST_LIMIT_EXCEEDED | Dzienny limit API przekroczony | Używaj Bulk API lub zmniejsz częstotliwość synchronizacji |
| FIELD_INTEGRITY_EXCEPTION | Brak wymaganego pola | Zmapuj wszystkie wymagane pola w konfiguracji |
| DUPLICATES_DETECTED | Aktywne reguły duplikatów | Skonfiguruj preferencje obsługi duplikatów |
| INSUFFICIENT_ACCESS | Brak uprawnień do obiektu | Przyznaj dostęp do API w profilu Salesforce |
Tryb debug
Włącz szczegółowe logowanie:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueTest połączenia
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledNajlepsze praktyki
- Używaj Bulk API dla dużych synchronizacji - Przełącz na Bulk API 2.0 dla zbiorów danych powyżej 2 000 rekordów
- Wdrożyj Change Data Capture - Używaj CDC dla synchronizacji w czasie rzeczywistym zamiast odpytywania
- Mapuj tylko potrzebne pola - Zmniejsz użycie API, synchronizując tylko wymagane pola
- Obsługuj odświeżanie tokenów - Wdrożyj automatyczną logikę odświeżania tokenów OAuth
- Używaj żądań złożonych - Łącz powiązane wywołania API, aby zmniejszyć liczbę żądań
- Najpierw testuj w sandbox - Używaj organizacji sandbox Salesforce przed wdrożeniem produkcyjnym
Bezpieczeństwo
- OAuth 2.0 - Branżowy standard autoryzacji z wieloma typami przydziału
- Ograniczenia IP - Salesforce obsługuje zakresy IP logowania i zaufane ustawienia IP
- TLS 1.2+ - Cała komunikacja API zaszyfrowana z minimalnym TLS 1.2
- Bezpieczeństwo na poziomie pól - Granularna kontrola dostępu do pól na profil
- Zarządzanie sesjami - Konfigurowalne limity czasu sesji i limity sesji współbieżnych