Conector de Salesforce

Conector de Salesforce

Conecta tu CRM de Salesforce con Brevo a través de Tajo para sincronizar contactos de forma empresarial, gestionar leads, hacer seguimiento de oportunidades y automatizar el marketing impulsado por los datos de tu CRM.

Resumen

PropiedadValor
PlataformaSalesforce
CategoríaCRM
Complejidad de configuraciónAvanzada
Integración oficial
Datos sincronizadosContactos, Leads, Cuentas, Oportunidades, Eventos
URL base de la APIhttps://yourInstance.salesforce.com/services/data/vXX.0

Funcionalidades

  • Sincronización bidireccional de contactos/leads - Sincroniza los contactos y leads de Salesforce con listas de contactos de Brevo
  • Seguimiento de oportunidades - Asocia etapas e importes de negocios para segmentar por ingresos
  • Jerarquía de cuentas - Sincroniza cuentas de empresa para marketing basado en cuentas en Brevo
  • Mapeo de objetos personalizados - Asocia objetos personalizados de Salesforce con atributos y eventos de Brevo
  • Sincronización de miembros de campaña - Sincroniza los miembros de campañas de Salesforce con listas de Brevo
  • Seguimiento de actividades - Sincroniza tareas, eventos y actividades de email para el scoring de interacción
  • Streaming en tiempo real - Usa la Streaming API de Salesforce para actualizaciones instantáneas
  • Soporte para consultas SOQL - Filtra los datos sincronizados con consultas SOQL personalizadas

Requisitos previos

Antes de empezar, asegúrate de tener:

  1. Una organización de Salesforce (cualquier edición con acceso a la API)
  2. Una Connected App configurada en la configuración de Salesforce
  3. Acceso a la API habilitado en el perfil de tu usuario de Salesforce
  4. Una cuenta de Brevo con acceso a la API
  5. Una cuenta de Tajo

Autenticación

Flujo OAuth 2.0 Web Server (recomendado)

La mejor opción para integraciones en producción con autorización del usuario.

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

Flujo Username-Password

Para integraciones servidor a servidor sin interacción del usuario.

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

Token de seguridad

Salesforce requiere añadir tu token de seguridad a tu contraseña en el flujo username-password. Regenera el token en Setup > My Personal Information > Reset My Security Token.

Configuración

Configuración básica

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

Asignación de campos

Asocia los campos de Salesforce con los atributos de contacto de Brevo:

Asignaciones por defecto

Parameter Type Description
Email required
string

Correo electrónico de contacto/lead (identificador único para Brevo)

FirstName optional
string

Se asigna al atributo FIRSTNAME en Brevo

LastName optional
string

Se asigna al atributo LASTNAME en Brevo

Phone optional
string

Se asigna al atributo SMS para mensajería por WhatsApp/SMS

Account.Name optional
string

Nombre de la cuenta/empresa asociada

LeadSource optional
string

Fuente de adquisición del lead

StageName optional
string

Etapa de la oportunidad para el seguimiento del negocio

OwnerId optional
string

Comercial asignado para el enrutamiento

Asignación de campos personalizados

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 de la API

Recursos de la REST API

MétodoEndpointDescripción
GET/services/data/vXX.0/sobjects/ContactConsultar contactos
POST/services/data/vXX.0/sobjects/ContactCrear un contacto
PATCH/services/data/vXX.0/sobjects/Contact/{id}Actualizar un contacto
GET/services/data/vXX.0/sobjects/LeadConsultar leads
GET/services/data/vXX.0/sobjects/AccountConsultar cuentas
GET/services/data/vXX.0/sobjects/OpportunityConsultar oportunidades
GET/services/data/vXX.0/query?q={SOQL}Ejecutar consulta SOQL
POST/services/data/vXX.0/composite/sobjectsCrear/actualizar en lote

Bulk API

MétodoEndpointDescripción
POST/services/data/vXX.0/jobs/ingestCrear job de ingesta masiva
PUT/services/data/vXX.0/jobs/ingest/{jobId}/batchesSubir datos por lote
GET/services/data/vXX.0/jobs/ingest/{jobId}Consultar estado del job

Streaming API

EndpointDescripción
/cometd/XX.0Long-polling CometD para eventos en tiempo real
PushTopicSuscripción a cambios de registros mediante topics basados en SOQL
Change Data CaptureStream granular de cambios a nivel de campo
Platform EventsArquitectura personalizada orientada a eventos

Eventos

Eventos de registros (Change Data Capture)

EventoDisparadorCaso de uso
ContactChangeEventContacto creado/actualizado/eliminadoSincronización de contactos en tiempo real
LeadChangeEventLead creado/actualizado/convertidoSeguimiento del ciclo de vida del lead
OpportunityChangeEventCambio de etapa de la oportunidadAutomatización del pipeline
AccountChangeEventRegistro de cuenta modificadoSincronización de datos de empresa

Platform Events

EventoDisparadorCaso de uso
Lead_Converted__eLead convertido en contactoNutrición posconversión
Deal_Won__eOportunidad ganadaFlujo de onboarding de clientes
Deal_Lost__eOportunidad perdidaCampañas de recuperación

Ejemplos de código

Inicializar el conector

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

Sincronizar contactos 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 en tiempo real

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

Límites de velocidad

Los límites de la REST API de Salesforce dependen de tu edición y del número de licencias:

EdiciónPeticiones a la API cada 24 horas
Developer15.000
Enterprise1.000 por licencia de usuario (mín. 15.000)
Unlimited5.000 por licencia de usuario (mín. 15.000)
Performance5.000 por licencia de usuario (mín. 15.000)

Límites adicionales:

  • Límite concurrente de la API: 25 peticiones de larga duración
  • Bulk API: 15.000 lotes cada 24 horas
  • Streaming API: 2.000 eventos al día (se puede ampliar)
  • Composite API: 25 subpeticiones por petición compuesta

Supervisión del uso de la API

Supervisa el uso de la API en Salesforce Setup > System Overview. Tajo usa Bulk API para sincronizaciones grandes para no consumir tus límites.

Resolución de problemas

Problemas habituales

ProblemaCausaSolución
INVALID_SESSION_IDToken expiradoRefresca el token OAuth automáticamente
REQUEST_LIMIT_EXCEEDEDLímite diario de la API alcanzadoUsa Bulk API o reduce la frecuencia de sincronización
FIELD_INTEGRITY_EXCEPTIONFalta un campo obligatorioAsigna todos los campos obligatorios en la configuración
DUPLICATES_DETECTEDReglas de duplicados activasConfigura las preferencias de gestión de duplicados
INSUFFICIENT_ACCESSPermisos de objeto insuficientesConcede acceso a la API en el perfil de Salesforce

Modo depuración

Activa el registro detallado:

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

Probar la conexión

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

Buenas prácticas

  1. Usa Bulk API para sincronizaciones grandes - Pasa a Bulk API 2.0 para conjuntos de más de 2.000 registros
  2. Implementa Change Data Capture - Usa CDC para sincronizaciones en tiempo real en lugar de polling
  3. Asigna solo los campos necesarios - Reduce el uso de la API sincronizando solo los campos requeridos
  4. Gestiona la renovación de tokens - Implementa lógica de refresh de tokens OAuth automática
  5. Usa peticiones compuestas - Combina llamadas relacionadas a la API para reducir el número de peticiones
  6. Prueba primero en sandbox - Usa una organización sandbox de Salesforce antes de desplegar en producción

Seguridad

  • OAuth 2.0 - Autorización estándar del sector con varios tipos de grant
  • Restricciones de IP - Salesforce admite rangos de IP de inicio de sesión y configuración de IP de confianza
  • TLS 1.2+ - Toda la comunicación con la API va cifrada con TLS 1.2 como mínimo
  • Seguridad a nivel de campo - Control granular de acceso a campos por perfil
  • Gestión de sesiones - Tiempo de espera de sesión y límites de sesiones concurrentes configurables

Recursos relacionados

Subscribe to updates

developer-docs

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

Asistente AI

¡Hola! Pregúntame lo que quieras sobre la documentación.

Empieza gratis con Brevo