Connettore Salesforce

Connettore Salesforce

Collega il tuo CRM Salesforce a Brevo tramite Tajo per una sincronizzazione contatti di livello enterprise, gestione lead, tracciamento opportunità e automazione marketing alimentata dai tuoi dati CRM.

Panoramica

ProprietàValore
PiattaformaSalesforce
CategoriaCRM
Complessità di setupAvanzata
Integrazione ufficiale
Dati sincronizzatiContatti, Lead, Account, Opportunità, Eventi
API Base URLhttps://yourInstance.salesforce.com/services/data/vXX.0

Funzionalità

  • Sincronizzazione bidirezionale contatti/lead - Sincronizza contatti e lead Salesforce con le liste Brevo
  • Tracciamento opportunità - Mappa stage e importi dei deal per la segmentazione basata sui ricavi
  • Gerarchia account - Sincronizza gli account aziendali per account-based marketing in Brevo
  • Mappatura oggetti personalizzati - Mappa gli oggetti personalizzati Salesforce agli attributi ed eventi Brevo
  • Sync dei campaign member - Sincronizza i membri delle campagne Salesforce con le liste Brevo
  • Tracciamento attività - Sincronizza task, eventi e attività email per l’engagement scoring
  • Streaming in tempo reale - Usa la Salesforce Streaming API per aggiornamenti dati istantanei
  • Supporto query SOQL - Filtra i dati sincronizzati con query SOQL personalizzate

Prerequisiti

Prima di iniziare, assicurati di avere:

  1. Una org Salesforce (qualsiasi edizione con accesso API)
  2. Una Connected App configurata in Salesforce Setup
  3. Accesso API abilitato per il profilo utente Salesforce
  4. Un account Brevo con accesso API
  5. Un account Tajo

Autenticazione

OAuth 2.0 Web Server Flow (consigliato)

Ideale per integrazioni in produzione con autorizzazione dell’utente.

Terminal window
# 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

Per integrazioni server-to-server senza interazione utente.

Terminal window
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 richiede di aggiungere il tuo security token alla password per il flusso username-password. Resetta il tuo token da Setup > My Personal Information > Reset My Security Token.

Configurazione

Setup di 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: 17

Mappatura dei campi

Mappa i campi Salesforce agli attributi di contatto Brevo:

Mappature predefinite

Parameter Type Description
Email required
string

Email di Contact/Lead (identificatore univoco per Brevo)

FirstName optional
string

Mappato all'attributo FIRSTNAME in Brevo

LastName optional
string

Mappato all'attributo LASTNAME in Brevo

Phone optional
string

Mappato all'attributo SMS per messaggi WhatsApp/SMS

Account.Name optional
string

Nome dell'account/azienda associato

LeadSource optional
string

Sorgente di acquisizione del lead

StageName optional
string

Stage dell'opportunità per il tracciamento deal

OwnerId optional
string

Sales rep assegnato per il routing

Mappatura campi personalizzati

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

Endpoint API

Risorse REST API

MetodoEndpointDescrizione
GET/services/data/vXX.0/sobjects/ContactQuery contatti
POST/services/data/vXX.0/sobjects/ContactCrea un contatto
PATCH/services/data/vXX.0/sobjects/Contact/{id}Aggiorna un contatto
GET/services/data/vXX.0/sobjects/LeadQuery lead
GET/services/data/vXX.0/sobjects/AccountQuery account
GET/services/data/vXX.0/sobjects/OpportunityQuery opportunità
GET/services/data/vXX.0/query?q={SOQL}Esegui query SOQL
POST/services/data/vXX.0/composite/sobjectsCreazione/aggiornamento batch

Bulk API

MetodoEndpointDescrizione
POST/services/data/vXX.0/jobs/ingestCrea job di ingest bulk
PUT/services/data/vXX.0/jobs/ingest/{jobId}/batchesCarica dati batch
GET/services/data/vXX.0/jobs/ingest/{jobId}Verifica stato del job

Streaming API

EndpointDescrizione
/cometd/XX.0Long-polling CometD per eventi in tempo reale
PushTopicSottoscrivi i cambiamenti dei record tramite topic basati su SOQL
Change Data CaptureStream di modifiche granulari a livello di campo
Platform EventsArchitettura event-driven personalizzata

Eventi

Eventi record (Change Data Capture)

EventoTriggerCaso d’uso
ContactChangeEventContatto creato/aggiornato/eliminatoSync contatti in tempo reale
LeadChangeEventLead creato/aggiornato/convertitoTracciamento lifecycle lead
OpportunityChangeEventStage opportunità modificatoAutomazione deal pipeline
AccountChangeEventRecord account modificatoSync dati aziendali

Platform Events

EventoTriggerCaso d’uso
Lead_Converted__eLead convertito in contattoNurture post-conversione
Deal_Won__eOpportunità closed-wonFlusso onboarding cliente
Deal_Lost__eOpportunità closed-lostCampagne di win-back

Esempi di codice

Inizializza il connettore

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

Sincronizza contatti con filtro SOQL

// 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 in tempo reale

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

Limiti di velocità

I limiti della Salesforce REST API dipendono dalla tua edizione e dal numero di licenze:

EdizioneRichieste API per 24 ore
Developer15.000
Enterprise1.000 per licenza utente (min 15.000)
Unlimited5.000 per licenza utente (min 15.000)
Performance5.000 per licenza utente (min 15.000)

Limiti aggiuntivi:

  • Limite API concorrenti: 25 richieste long-running
  • Bulk API: 15.000 batch per 24 ore
  • Streaming API: 2.000 eventi al giorno (possono essere aumentati)
  • Composite API: 25 subrequest per richiesta composite

Monitoraggio uso API

Monitora l’utilizzo delle API in Salesforce Setup > System Overview. Tajo usa la bulk API per le sync grandi per risparmiare i tuoi limiti API.

Risoluzione dei problemi

Problemi comuni

ProblemaCausaSoluzione
INVALID_SESSION_IDToken scadutoAggiorna automaticamente il token OAuth
REQUEST_LIMIT_EXCEEDEDLimite API giornaliero raggiuntoUsa Bulk API o riduci la frequenza di sync
FIELD_INTEGRITY_EXCEPTIONCampo obbligatorio mancanteMappa tutti i campi obbligatori in configurazione
DUPLICATES_DETECTEDRegole di duplicazione attiveConfigura le preferenze di gestione duplicati
INSUFFICIENT_ACCESSPermessi oggetto mancantiConcedi l’accesso API nel profilo Salesforce

Modalità debug

Abilita il logging dettagliato:

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

Testa la connessione

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

Best practice

  1. Usa Bulk API per sync grandi - Passa a Bulk API 2.0 per dataset oltre i 2.000 record
  2. Implementa Change Data Capture - Usa CDC per la sync in tempo reale invece del polling
  3. Mappa solo i campi necessari - Riduci l’uso dell’API sincronizzando solo i campi richiesti
  4. Gestisci il refresh del token - Implementa la logica di refresh automatico del token OAuth
  5. Usa richieste composite - Combina chiamate API correlate per ridurre il numero di richieste
  6. Testa prima in sandbox - Usa una org sandbox di Salesforce prima del deployment in produzione

Sicurezza

  • OAuth 2.0 - Autorizzazione standard del settore con più tipi di grant
  • Restrizioni IP - Salesforce supporta login IP range e trusted IP settings
  • TLS 1.2+ - Tutte le comunicazioni API cifrate con TLS 1.2 minimo
  • Sicurezza a livello di campo - Controllo granulare degli accessi ai campi per profilo
  • Gestione sessioni - Timeout sessione configurabile e limiti di sessione concorrenti

Risorse correlate

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

Assistente AI

Ciao! Chiedimi qualsiasi cosa sulla documentazione.

Inizia gratis con Brevo