Salesforce Connector
Connector-Status: Geplant Noch nicht gebaut. Tajo betreibt diesen Connector heute nicht.
Illustration · Beispieldaten
Sync-Beispiel
Quelle
Salesforce
Connector-Status: Geplant
Ziel
Ihr anderes Tool
Connector-Status: Eigenes Tool
Feldzuordnung
| Quellfeld | Zielfeld | Beispielwert |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Entwerfen
- Einen Datensatz prüfen
- Diese Version freigeben
Der Status gilt für einzelne Connectoren und garantiert nicht, dass dieser Sync bereit ist. Felder zur Veranschaulichung. Prüfen Sie vor dem Sync das tatsächliche Schema und die Berechtigungen.
Verbinde dein Salesforce-CRM über Tajo mit Brevo für eine Kontaktsynchronisierung auf Enterprise-Niveau, Lead-Management, Opportunity-Tracking und eine durch deine CRM-Daten gespeiste Marketingautomatisierung.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Salesforce |
| Kategorie | CRM |
| Einrichtungsaufwand | Fortgeschritten |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Kontakte, Leads, Accounts, Opportunities, Events |
| API-Basis-URL | https://yourInstance.salesforce.com/services/data/vXX.0 |
Funktionen
- Bidirektionale Kontakt-/Lead-Synchronisierung - Synchronisiere Salesforce-Kontakte und -Leads mit Brevo-Kontaktlisten
- Opportunity-Tracking - Ordne Deal-Phasen und -Beträge für eine umsatzbasierte Segmentierung zu
- Account-Hierarchie - Synchronisiere Unternehmens-Accounts für Account-based Marketing in Brevo
- Zuordnung benutzerdefinierter Objekte - Ordne benutzerdefinierte Salesforce-Objekte Brevo-Attributen und -Events zu
- Kampagnenmitglieder-Synchronisierung - Synchronisiere Salesforce-Kampagnenmitglieder mit Brevo-Listen
- Aktivitäts-Tracking - Synchronisiere Aufgaben, Events und E-Mail-Aktivitäten für Engagement-Scoring
- Echtzeit-Streaming - Nutze die Salesforce Streaming API für sofortige Datenaktualisierungen
- SOQL-Abfrageunterstützung - Filtere synchronisierte Daten mit benutzerdefinierten SOQL-Abfragen
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Eine Salesforce-Organisation (jede Edition mit API-Zugriff)
- Eine in Salesforce Setup konfigurierte Connected App
- API-Zugriff für dein Salesforce-Nutzer:innen-Profil aktiviert
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto
Authentifizierung
OAuth 2.0 Web-Server-Flow (Empfohlen)
Am besten geeignet für produktive Integrationen mit Autorisierung durch Nutzer:innen.
# 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-Flow
Für Server-zu-Server-Integrationen ohne Interaktion durch Nutzer:innen.
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}"Security-Token
Salesforce verlangt, dass du dein Security-Token im Username-Password-Flow an dein Passwort anhängst. Setze dein Token unter Setup > Meine persönlichen Informationen > Mein Security-Token zurücksetzen zurück.
Konfiguration
Grundeinrichtung
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: 17Feldzuordnung
Ordne Salesforce-Felder Brevo-Kontaktattributen zu:
Standardzuordnungen
| Parameter | Type | Description |
|---|---|---|
Email required | string | E-Mail des Kontakts/Leads (eindeutige Kennung für Brevo) |
FirstName optional | string | Wird dem FIRSTNAME-Attribut in Brevo zugeordnet |
LastName optional | string | Wird dem LASTNAME-Attribut in Brevo zugeordnet |
Phone optional | string | Wird dem SMS-Attribut für WhatsApp/SMS-Nachrichten zugeordnet |
Account.Name optional | string | Name des zugeordneten Accounts/Unternehmens |
LeadSource optional | string | Quelle der Lead-Gewinnung |
StageName optional | string | Opportunity-Phase für Deal-Tracking |
OwnerId optional | string | Zugewiesene:r Vertriebsmitarbeiter:in für das Routing |
Zuordnung benutzerdefinierter Felder
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-Endpunkte
REST-API-Ressourcen
| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Kontakte abfragen |
POST | /services/data/vXX.0/sobjects/Contact | Einen Kontakt anlegen |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Einen Kontakt aktualisieren |
GET | /services/data/vXX.0/sobjects/Lead | Leads abfragen |
GET | /services/data/vXX.0/sobjects/Account | Accounts abfragen |
GET | /services/data/vXX.0/sobjects/Opportunity | Opportunities abfragen |
GET | /services/data/vXX.0/query?q={SOQL} | SOQL-Abfrage ausführen |
POST | /services/data/vXX.0/composite/sobjects | Batch-Anlage/-Aktualisierung |
Bulk API
| Methode | Endpunkt | Beschreibung |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Bulk-Ingest-Job anlegen |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Batch-Daten hochladen |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Job-Status prüfen |
Streaming API
| Endpunkt | Beschreibung |
|---|---|
/cometd/XX.0 | CometD Long-Polling für Echtzeit-Events |
| PushTopic | Datensatzänderungen über SOQL-basierte Topics abonnieren |
| Change Data Capture | Fein abgestufte Änderungen auf Feldebene streamen |
| Platform Events | Benutzerdefinierte event-getriebene Architektur |
Events
Datensatz-Events (Change Data Capture)
| Event | Auslöser | Anwendungsfall |
|---|---|---|
ContactChangeEvent | Kontakt erstellt/aktualisiert/gelöscht | Echtzeit-Kontaktsynchronisierung |
LeadChangeEvent | Lead erstellt/aktualisiert/konvertiert | Lead-Lifecycle-Tracking |
OpportunityChangeEvent | Opportunity-Phase geändert | Deal-Pipeline-Automatisierung |
AccountChangeEvent | Account-Datensatz geändert | Synchronisierung von Unternehmensdaten |
Platform Events
| Event | Auslöser | Anwendungsfall |
|---|---|---|
Lead_Converted__e | Lead in Kontakt konvertiert | Nurture-Flow nach der Konvertierung |
Deal_Won__e | Opportunity gewonnen | Kundenonboarding-Flow |
Deal_Lost__e | Opportunity verloren | Win-back-Kampagnen |
Code-Beispiele
Connector initialisieren
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});Kontakte mit SOQL-Filter synchronisieren
// 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// }Echtzeit-Streaming
// 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 }});Ratenbegrenzungen
Die Grenzen der Salesforce REST API hängen von deiner Edition und der Anzahl der Lizenzen ab:
| Edition | API-Anfragen pro 24 Stunden |
|---|---|
| Developer | 15.000 |
| Enterprise | 1.000 pro Nutzer:innen-Lizenz (mind. 15.000) |
| Unlimited | 5.000 pro Nutzer:innen-Lizenz (mind. 15.000) |
| Performance | 5.000 pro Nutzer:innen-Lizenz (mind. 15.000) |
Weitere Begrenzungen:
- Limit für gleichzeitige API-Aufrufe: 25 lang laufende Anfragen
- Bulk API: 15.000 Batches pro 24 Stunden
- Streaming API: 2.000 Events pro Tag (kann erhöht werden)
- Composite API: 25 Subrequests pro Composite-Anfrage
API-Nutzungsüberwachung
Überwache deine API-Nutzung in Salesforce unter Setup > Systemüberblick. Tajo nutzt die Bulk API für große Synchronisierungen, um deine API-Limits zu schonen.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| INVALID_SESSION_ID | Token abgelaufen | OAuth-Token automatisch erneuern |
| REQUEST_LIMIT_EXCEEDED | Tageslimit der API erreicht | Bulk API nutzen oder Synchronisierungsfrequenz reduzieren |
| FIELD_INTEGRITY_EXCEPTION | Pflichtfeld fehlt | Alle Pflichtfelder in der Konfiguration zuordnen |
| DUPLICATES_DETECTED | Duplikatsregeln aktiv | Duplikatsbehandlungspräferenzen konfigurieren |
| INSUFFICIENT_ACCESS | Fehlende Objektberechtigungen | API-Zugriff im Salesforce-Profil erteilen |
Debug-Modus
Ausführliches Logging aktivieren:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueVerbindung testen
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledBest Practices
- Bulk API für große Synchronisierungen nutzen - Wechsle bei Datensätzen über 2.000 Einträgen zur Bulk API 2.0
- Change Data Capture implementieren - Verwende CDC für Echtzeit-Synchronisierung statt Polling
- Nur benötigte Felder zuordnen - Reduziere die API-Nutzung, indem du nur erforderliche Felder synchronisierst
- Token-Refresh handhaben - Implementiere eine automatische OAuth-Token-Refresh-Logik
- Composite-Requests verwenden - Kombiniere zusammengehörige API-Aufrufe, um die Anzahl der Anfragen zu reduzieren
- Zuerst in der Sandbox testen - Nutze eine Salesforce-Sandbox-Organisation vor dem produktiven Rollout
Sicherheit
- OAuth 2.0 - Branchenstandard-Autorisierung mit mehreren Grant-Typen
- IP-Beschränkungen - Salesforce unterstützt Login-IP-Bereiche und Einstellungen für vertrauenswürdige IPs
- TLS 1.2+ - Die gesamte API-Kommunikation wird mit mindestens TLS 1.2 verschlüsselt
- Feldbasierte Sicherheit - Granulare Feldzugriffskontrolle pro Profil
- Session-Management - Konfigurierbare Session-Timeouts und Limits für gleichzeitige Sitzungen