---
title: "Connecteur Salesforce"
description: "Guide complet d'intégration du CRM Salesforce pour synchroniser leads, contacts, comptes, opportunités et objets personnalisés avec Brevo via Tajo."
url: https://tajo.io/fr/docs/connectors/crm/salesforce/
markdown: https://tajo.io/fr/docs/connectors/crm/salesforce.md
lang: fr-FR
robots: noindex
---

Demandez un accès anticipé

Indiquez votre prénom et votre adresse e-mail professionnelle. Nous vous enverrons un lien pour confirmer votre demande d’accès à Tajo.

# Connecteur Salesforce

Statut du connecteur: Prévu Pas encore construit. Tajo n'exécute pas ce connecteur aujourd'hui.

| Champ source | Champ de destination | Valeur d’exemple |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Connectez votre CRM Salesforce à Brevo via Tajo pour une synchronisation de contacts de niveau entreprise, la gestion des leads, le suivi des opportunités et une automatisation marketing alimentée par les données de votre CRM.

## Vue d’ensemble

| Propriété | Valeur |
| --- | --- |
| **Plateforme** | Salesforce |
| **Catégorie** | CRM |
| **Complexité d’installation** | Avancée |
| **Intégration officielle** | Non |
| **Données synchronisées** | Contacts, leads, comptes, opportunités, événements |
| **URL de base de l’API** | `https://yourInstance.salesforce.com/services/data/vXX.0` |

## Fonctionnalités

- **Synchronisation bidirectionnelle contact/lead**, Synchronisez les contacts et leads Salesforce avec les listes de contacts Brevo
- **Suivi des opportunités**, Mappez les étapes de transaction et les montants pour une segmentation basée sur le chiffre d’affaires
- **Hiérarchie des comptes**, Synchronisez les comptes d’entreprise pour l’Account-Based Marketing dans Brevo
- **Mappage des objets personnalisés**, Mappez les objets personnalisés Salesforce vers des attributs et événements Brevo
- **Synchronisation des membres de campagne**, Synchronisez les membres de campagne Salesforce avec les listes Brevo
- **Suivi des activités**, Synchronisez tâches, événements et activités e-mail pour le scoring d’engagement
- **Streaming en temps réel**, Utilisez l’API Streaming Salesforce pour des mises à jour instantanées
- **Prise en charge des requêtes SOQL**, Filtrez les données synchronisées avec des requêtes SOQL personnalisées

## Prérequis

Avant de commencer, assurez-vous de disposer de :

1. Une org Salesforce (toute édition avec accès API)
2. Une Connected App configurée dans Salesforce Setup
3. L’accès API activé pour votre profil utilisateur Salesforce
4. Un compte Brevo avec accès API
5. Un compte Tajo

## Authentification

### Flux OAuth 2.0 Web Server (recommandé)

Idéal pour les intégrations en production avec autorisation utilisateur.

```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}"
```

### Flux Username-Password

Pour les intégrations serveur à serveur sans interaction utilisateur.

```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}"
```

Jeton de sécurité

Salesforce exige d’ajouter votre jeton de sécurité à votre mot de passe pour le flux username-password. Réinitialisez votre jeton depuis Setup > My Personal Information > Reset My Security Token.

## Configuration

### Configuration de base

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

### Mappage des champs

Mappez les champs Salesforce vers les attributs de contact Brevo :

#### Mappages par défaut

| Parameter | Type | Description |
| --- | --- | --- |
| `Email` required | string | E-mail du contact/lead (identifiant unique pour Brevo) |
| `FirstName` optional | string | Mappé vers l'attribut FIRSTNAME dans Brevo |
| `LastName` optional | string | Mappé vers l'attribut LASTNAME dans Brevo |
| `Phone` optional | string | Mappé vers l'attribut SMS pour la messagerie WhatsApp/SMS |
| `Account.Name` optional | string | Nom du compte/entreprise associé |
| `LeadSource` optional | string | Source d'acquisition du lead |
| `StageName` optional | string | Étape de l'opportunité pour le suivi des transactions |
| `OwnerId` optional | string | Commercial assigné pour le routage |

#### Mappage des champs personnalisés

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

## Endpoints API

### Ressources REST API

| Méthode | Endpoint | Description |
| --- | --- | --- |
| `GET` | `/services/data/vXX.0/sobjects/Contact` | Interroger les contacts |
| `POST` | `/services/data/vXX.0/sobjects/Contact` | Créer un contact |
| `PATCH` | `/services/data/vXX.0/sobjects/Contact/{id}` | Mettre à jour un contact |
| `GET` | `/services/data/vXX.0/sobjects/Lead` | Interroger les leads |
| `GET` | `/services/data/vXX.0/sobjects/Account` | Interroger les comptes |
| `GET` | `/services/data/vXX.0/sobjects/Opportunity` | Interroger les opportunités |
| `GET` | `/services/data/vXX.0/query?q={SOQL}` | Exécuter une requête SOQL |
| `POST` | `/services/data/vXX.0/composite/sobjects` | Créer/mettre à jour en batch |

### Bulk API

| Méthode | Endpoint | Description |
| --- | --- | --- |
| `POST` | `/services/data/vXX.0/jobs/ingest` | Créer un job d’ingestion en masse |
| `PUT` | `/services/data/vXX.0/jobs/ingest/{jobId}/batches` | Uploader les données du batch |
| `GET` | `/services/data/vXX.0/jobs/ingest/{jobId}` | Vérifier le statut du job |

### Streaming API

| Endpoint | Description |
| --- | --- |
| `/cometd/XX.0` | Long-polling CometD pour les événements en temps réel |
| PushTopic | S’abonner aux modifications d’enregistrement via des topics SOQL |
| Change Data Capture | Diffuser les changements fins au niveau des champs |
| Platform Events | Architecture personnalisée basée sur les événements |

## Événements

### Événements d’enregistrement (Change Data Capture)

| Événement | Déclencheur | Cas d’usage |
| --- | --- | --- |
| `ContactChangeEvent` | Contact créé/mis à jour/supprimé | Synchronisation de contact en temps réel |
| `LeadChangeEvent` | Lead créé/mis à jour/converti | Suivi du cycle de vie des leads |
| `OpportunityChangeEvent` | Étape d’opportunité modifiée | Automatisation du pipeline de transaction |
| `AccountChangeEvent` | Enregistrement de compte modifié | Synchronisation des données d’entreprise |

### Platform Events

| Événement | Déclencheur | Cas d’usage |
| --- | --- | --- |
| `Lead_Converted__e` | Lead converti en contact | Nurturing post-conversion |
| `Deal_Won__e` | Opportunité gagnée | Workflow d’onboarding client |
| `Deal_Lost__e` | Opportunité perdue | Campagnes de win-back |

## Exemples de code

### Initialiser le connecteur

```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
});
```

### Synchroniser les contacts avec un filtre SOQL

```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
// }
```

### Streaming en temps réel

```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
  }
});
```

## Limites de débit

Les limites de la REST API Salesforce dépendent de votre édition et du nombre de licences :

| Édition | Requêtes API par 24 heures |
| --- | --- |
| Developer | 15 000 |
| Enterprise | 1 000 par licence utilisateur (min. 15 000) |
| Unlimited | 5 000 par licence utilisateur (min. 15 000) |
| Performance | 5 000 par licence utilisateur (min. 15 000) |

Limites supplémentaires :

- **Limite d’API concurrentes** : 25 requêtes longues
- **Bulk API** : 15 000 batches par 24 heures
- **Streaming API** : 2 000 événements par jour (peut être augmenté)
- **Composite API** : 25 sous-requêtes par requête composite

Surveillance de l'usage API

Surveillez votre consommation API dans Salesforce Setup > System Overview. Tajo utilise la Bulk API pour les synchronisations volumineuses afin de préserver vos limites API.

## Dépannage

### Problèmes courants

| Problème | Cause | Solution |
| --- | --- | --- |
| INVALID\_SESSION\_ID | Jeton expiré | Rafraîchissez automatiquement le jeton OAuth |
| REQUEST\_LIMIT\_EXCEEDED | Limite quotidienne API atteinte | Utilisez la Bulk API ou réduisez la fréquence de synchronisation |
| FIELD\_INTEGRITY\_EXCEPTION | Champ obligatoire manquant | Mappez tous les champs requis dans la configuration |
| DUPLICATES\_DETECTED | Règles de doublons actives | Configurez les préférences de gestion des doublons |
| INSUFFICIENT\_ACCESS | Permissions d’objet manquantes | Accordez l’accès API dans le profil Salesforce |

### Mode débogage

Activez la journalisation détaillée :

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

### Tester la connexion

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

## Bonnes pratiques

1. **Utilisez la Bulk API pour les synchronisations volumineuses**, Passez à la Bulk API 2.0 pour les jeux de données de plus de 2 000 enregistrements
2. **Implémentez le Change Data Capture**, Utilisez CDC pour la synchronisation en temps réel au lieu du polling
3. **Mappez uniquement les champs nécessaires**, Réduisez l’usage API en ne synchronisant que les champs requis
4. **Gérez le rafraîchissement du jeton**, Implémentez une logique de rafraîchissement automatique du jeton OAuth
5. **Utilisez les requêtes composites**, Combinez les appels API liés pour réduire le nombre de requêtes
6. **Testez d’abord en sandbox**, Utilisez une org sandbox Salesforce avant le déploiement en production

## Sécurité

- **OAuth 2.0**, Autorisation conforme aux standards de l’industrie avec plusieurs types d’octroi
- **Restrictions d’IP**, Salesforce prend en charge les plages d’IP de connexion et les paramètres d’IP de confiance
- **TLS 1.2+**, Toutes les communications API sont chiffrées avec TLS 1.2 minimum
- **Sécurité au niveau des champs**, Contrôle granulaire de l’accès aux champs par profil
- **Gestion des sessions**, Timeout de session et limites de sessions concurrentes configurables

## Ressources associées

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