Connecteur Salesforce
Connecteur Salesforce
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 | Oui |
| 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 :
- Une org Salesforce (toute édition avec accès API)
- Une Connected App configurée dans Salesforce Setup
- L’accès API activé pour votre profil utilisateur Salesforce
- Un compte Brevo avec accès API
- Un compte Tajo
Authentification
Flux OAuth 2.0 Web Server (recommandé)
Idéal pour les intégrations en production avec autorisation utilisateur.
# 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}"Flux Username-Password
Pour les intégrations serveur à serveur sans interaction utilisateur.
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
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: 17Mappage 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
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_TIEREndpoints 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
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});Synchroniser les contacts avec un filtre 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 en temps réel
// 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 }});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 :
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueTester la connexion
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledBonnes pratiques
- 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
- Implémentez le Change Data Capture, Utilisez CDC pour la synchronisation en temps réel au lieu du polling
- Mappez uniquement les champs nécessaires, Réduisez l’usage API en ne synchronisant que les champs requis
- Gérez le rafraîchissement du jeton, Implémentez une logique de rafraîchissement automatique du jeton OAuth
- Utilisez les requêtes composites, Combinez les appels API liés pour réduire le nombre de requêtes
- 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