---
title: "Salesforce Connector"
description: "Vollständiger Leitfaden zur Salesforce-CRM-Integration für die Synchronisierung von Leads, Kontakten, Accounts, Opportunities und benutzerdefinierten Objekten mit Brevo über Tajo."
url: https://tajo.io/de/docs/connectors/crm/salesforce/
markdown: https://tajo.io/de/docs/connectors/crm/salesforce.md
lang: de-DE
robots: noindex
---

Beantrage frühzeitigen Zugang

Gib deinen Vornamen und deine geschäftliche E-Mail-Adresse ein. Wir senden dir einen Link, mit dem du deine Anfrage für den Tajo-Zugang bestätigst.

# Salesforce Connector

Connector-Status: Geplant Noch nicht gebaut. Tajo betreibt diesen Connector heute nicht.

| Quellfeld | Zielfeld | Beispielwert |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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:

1. Eine Salesforce-Organisation (jede Edition mit API-Zugriff)
2. Eine in Salesforce Setup konfigurierte Connected App
3. API-Zugriff für dein Salesforce-Nutzer:innen-Profil aktiviert
4. Ein Brevo-Konto mit API-Zugriff
5. Ein Tajo-Konto

## Authentifizierung

### OAuth 2.0 Web-Server-Flow (Empfohlen)

Am besten geeignet für produktive Integrationen mit Autorisierung durch Nutzer:innen.

```bash
# Step 1: Authorize
https://login.salesforce.com/services/oauth2/authorize?
  response_type=code&
  client_id={consumer_key}&
  redirect_uri={callback_url}

# Step 2: Exchange code for tokens
curl -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.

```bash
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

```yaml
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: 17
```

### Feldzuordnung

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

```yaml
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_TIER
```

## API-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

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect Salesforce
await 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

```javascript
// Sync only qualified leads from Salesforce
await 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 status
const 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

```javascript
// Subscribe to Salesforce Change Data Capture
await 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:

```yaml
connectors:
  salesforce:
    debug: true
    log_level: verbose
    log_api_calls: true
```

### Verbindung testen

```bash
tajo connectors test salesforce
# ✓ OAuth token valid
# ✓ Contacts accessible
# ✓ Leads accessible
# ✓ Accounts accessible
# ✓ Opportunities accessible
# ✓ Bulk API enabled
```

## Best Practices

1. **Bulk API für große Synchronisierungen nutzen** - Wechsle bei Datensätzen über 2.000 Einträgen zur Bulk API 2.0
2. **Change Data Capture implementieren** - Verwende CDC für Echtzeit-Synchronisierung statt Polling
3. **Nur benötigte Felder zuordnen** - Reduziere die API-Nutzung, indem du nur erforderliche Felder synchronisierst
4. **Token-Refresh handhaben** - Implementiere eine automatische OAuth-Token-Refresh-Logik
5. **Composite-Requests verwenden** - Kombiniere zusammengehörige API-Aufrufe, um die Anzahl der Anfragen zu reduzieren
6. **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

## Verwandte Ressourcen

- [Salesforce REST API-Dokumentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm)
- [Salesforce Bulk API 2.0 Guide](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_intro.htm)
- [HubSpot Connector](https://tajo.io/de/docs/connectors/crm/hubspot)
- [Customer-Sync-Skill](https://tajo.io/de/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/de/docs/contact-management)
