---
title: "Conector de Salesforce"
description: "Guía completa de integración con Salesforce CRM para sincronizar leads, contactos, cuentas, oportunidades y objetos personalizados con Brevo a través de Tajo."
url: https://tajo.io/es/docs/connectors/crm/salesforce/
markdown: https://tajo.io/es/docs/connectors/crm/salesforce.md
lang: es-ES
robots: noindex
---

Solicita acceso anticipado

Escribe tu nombre y dirección de correo de trabajo. Te enviaremos un enlace para confirmar tu solicitud de acceso a Tajo.

# Conector de Salesforce

Estado del conector: Planificado Aún no está construido. Tajo no ejecuta este conector hoy.

| Campo de origen | Campo de destino | Valor de ejemplo |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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

| Propiedad | Valor |
| --- | --- |
| **Plataforma** | Salesforce |
| **Categoría** | CRM |
| **Complejidad de configuración** | Avanzada |
| **Integración oficial** | No |
| **Datos sincronizados** | Contactos, Leads, Cuentas, Oportunidades, Eventos |
| **URL base de la API** | `https://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.

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

### Flujo Username-Password

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

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

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

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

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

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

### Recursos de la REST API

| Método | Endpoint | Descripción |
| --- | --- | --- |
| `GET` | `/services/data/vXX.0/sobjects/Contact` | Consultar contactos |
| `POST` | `/services/data/vXX.0/sobjects/Contact` | Crear un contacto |
| `PATCH` | `/services/data/vXX.0/sobjects/Contact/{id}` | Actualizar un contacto |
| `GET` | `/services/data/vXX.0/sobjects/Lead` | Consultar leads |
| `GET` | `/services/data/vXX.0/sobjects/Account` | Consultar cuentas |
| `GET` | `/services/data/vXX.0/sobjects/Opportunity` | Consultar oportunidades |
| `GET` | `/services/data/vXX.0/query?q={SOQL}` | Ejecutar consulta SOQL |
| `POST` | `/services/data/vXX.0/composite/sobjects` | Crear/actualizar en lote |

### Bulk API

| Método | Endpoint | Descripción |
| --- | --- | --- |
| `POST` | `/services/data/vXX.0/jobs/ingest` | Crear job de ingesta masiva |
| `PUT` | `/services/data/vXX.0/jobs/ingest/{jobId}/batches` | Subir datos por lote |
| `GET` | `/services/data/vXX.0/jobs/ingest/{jobId}` | Consultar estado del job |

### Streaming API

| Endpoint | Descripción |
| --- | --- |
| `/cometd/XX.0` | Long-polling CometD para eventos en tiempo real |
| PushTopic | Suscripción a cambios de registros mediante topics basados en SOQL |
| Change Data Capture | Stream granular de cambios a nivel de campo |
| Platform Events | Arquitectura personalizada orientada a eventos |

## Eventos

### Eventos de registros (Change Data Capture)

| Evento | Disparador | Caso de uso |
| --- | --- | --- |
| `ContactChangeEvent` | Contacto creado/actualizado/eliminado | Sincronización de contactos en tiempo real |
| `LeadChangeEvent` | Lead creado/actualizado/convertido | Seguimiento del ciclo de vida del lead |
| `OpportunityChangeEvent` | Cambio de etapa de la oportunidad | Automatización del pipeline |
| `AccountChangeEvent` | Registro de cuenta modificado | Sincronización de datos de empresa |

### Platform Events

| Evento | Disparador | Caso de uso |
| --- | --- | --- |
| `Lead_Converted__e` | Lead convertido en contacto | Nutrición posconversión |
| `Deal_Won__e` | Oportunidad ganada | Flujo de onboarding de clientes |
| `Deal_Lost__e` | Oportunidad perdida | Campañas de recuperación |

## Ejemplos de código

### Inicializar el conector

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

### Sincronizar contactos con filtro 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 tiempo real

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

## 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ón | Peticiones a la API cada 24 horas |
| --- | --- |
| Developer | 15.000 |
| Enterprise | 1.000 por licencia de usuario (mín. 15.000) |
| Unlimited | 5.000 por licencia de usuario (mín. 15.000) |
| Performance | 5.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

| Problema | Causa | Solución |
| --- | --- | --- |
| INVALID\_SESSION\_ID | Token expirado | Refresca el token OAuth automáticamente |
| REQUEST\_LIMIT\_EXCEEDED | Límite diario de la API alcanzado | Usa Bulk API o reduce la frecuencia de sincronización |
| FIELD\_INTEGRITY\_EXCEPTION | Falta un campo obligatorio | Asigna todos los campos obligatorios en la configuración |
| DUPLICATES\_DETECTED | Reglas de duplicados activas | Configura las preferencias de gestión de duplicados |
| INSUFFICIENT\_ACCESS | Permisos de objeto insuficientes | Concede acceso a la API en el perfil de Salesforce |

### Modo depuración

Activa el registro detallado:

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

### Probar la conexión

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

- [Documentación de la REST API de Salesforce](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm)
- [Guía de Salesforce Bulk API 2.0](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_intro.htm)
- [Conector de HubSpot](https://tajo.io/es/docs/connectors/crm/hubspot)
- [Skill de sincronización de clientes](https://tajo.io/es/docs/skills/data-sync/customer-sync)
- [API de contactos de Brevo](https://tajo.io/es/docs/contact-management)
