Conector Salesforce
Conector Salesforce
Conecte seu Salesforce CRM ao Brevo via Tajo para sincronização de contatos de nível empresarial, gestão de leads, rastreamento de oportunidades e automação de marketing impulsionada pelos dados do seu CRM.
Visão geral
| Propriedade | Valor |
|---|---|
| Plataforma | Salesforce |
| Categoria | CRM |
| Complexidade de configuração | Avançada |
| Integração oficial | Sim |
| Dados sincronizados | Contatos, Leads, Contas, Oportunidades, Eventos |
| URL base da API | https://yourInstance.salesforce.com/services/data/vXX.0 |
Recursos
- Sincronização bidirecional de contatos/leads - Sincronize contatos e leads do Salesforce com listas de contatos do Brevo
- Rastreamento de oportunidades - Mapeie estágios e valores de negócios para segmentação baseada em receita
- Hierarquia de contas - Sincronize contas de empresas para marketing baseado em conta no Brevo
- Mapeamento de objetos personalizados - Mapeie objetos personalizados do Salesforce para atributos e eventos do Brevo
- Sincronização de membros de campanha - Sincronize membros de campanha do Salesforce com listas do Brevo
- Rastreamento de atividades - Sincronize tarefas, eventos e atividades de e-mail para pontuação de engajamento
- Streaming em tempo real - Use a Streaming API do Salesforce para atualizações instantâneas de dados
- Suporte a consultas SOQL - Filtre dados sincronizados com consultas SOQL personalizadas
Pré-requisitos
Antes de começar, certifique-se de que você tem:
- Uma org Salesforce (qualquer edição com acesso à API)
- Um Connected App configurado em Salesforce Setup
- Acesso à API habilitado para o perfil do seu usuário Salesforce
- Uma conta Brevo com acesso à API
- Uma conta Tajo
Autenticação
OAuth 2.0 Web Server Flow (Recomendado)
Ideal para integrações em produção com autorização do usuário.
# 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}"Fluxo Username-Password
Para integrações servidor-para-servidor sem interação do usuário.
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 segurança
O Salesforce exige anexar o token de segurança à sua senha para o fluxo username-password. Redefina seu token em Setup > My Personal Information > Reset My Security Token.
Configuração
Configuração 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: 17Mapeamento de campos
Mapeie campos do Salesforce para atributos de contato do Brevo:
Mapeamentos padrão
| Parameter | Type | Description |
|---|---|---|
Email required | string | E-mail do contato/lead (identificador único para o Brevo) |
FirstName optional | string | Mapeia para o atributo FIRSTNAME no Brevo |
LastName optional | string | Mapeia para o atributo LASTNAME no Brevo |
Phone optional | string | Mapeia para o atributo SMS para mensagens WhatsApp/SMS |
Account.Name optional | string | Nome da conta/empresa associada |
LeadSource optional | string | Fonte de aquisição do lead |
StageName optional | string | Estágio da oportunidade para rastreamento de negócios |
OwnerId optional | string | Representante de vendas atribuído para roteamento |
Mapeamento 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_TIEREndpoints da API
Recursos da REST API
| Método | Endpoint | Descrição |
|---|---|---|
GET | /services/data/vXX.0/sobjects/Contact | Consultar contatos |
POST | /services/data/vXX.0/sobjects/Contact | Criar um contato |
PATCH | /services/data/vXX.0/sobjects/Contact/{id} | Atualizar um contato |
GET | /services/data/vXX.0/sobjects/Lead | Consultar leads |
GET | /services/data/vXX.0/sobjects/Account | Consultar contas |
GET | /services/data/vXX.0/sobjects/Opportunity | Consultar oportunidades |
GET | /services/data/vXX.0/query?q={SOQL} | Executar consulta SOQL |
POST | /services/data/vXX.0/composite/sobjects | Criar/atualizar em lote |
Bulk API
| Método | Endpoint | Descrição |
|---|---|---|
POST | /services/data/vXX.0/jobs/ingest | Criar job de ingestão em massa |
PUT | /services/data/vXX.0/jobs/ingest/{jobId}/batches | Enviar dados em lote |
GET | /services/data/vXX.0/jobs/ingest/{jobId} | Verificar status do job |
Streaming API
| Endpoint | Descrição |
|---|---|
/cometd/XX.0 | Long-polling CometD para eventos em tempo real |
| PushTopic | Inscrever-se em mudanças de registro via tópicos baseados em SOQL |
| Change Data Capture | Transmitir mudanças granulares no nível de campo |
| Platform Events | Arquitetura personalizada orientada a eventos |
Eventos
Eventos de registro (Change Data Capture)
| Evento | Gatilho | Caso de uso |
|---|---|---|
ContactChangeEvent | Contato criado/atualizado/excluído | Sincronização de contatos em tempo real |
LeadChangeEvent | Lead criado/atualizado/convertido | Rastreamento de ciclo de vida do lead |
OpportunityChangeEvent | Estágio da oportunidade alterado | Automação de pipeline de negócios |
AccountChangeEvent | Registro de conta modificado | Sincronização de dados da empresa |
Platform Events
| Evento | Gatilho | Caso de uso |
|---|---|---|
Lead_Converted__e | Lead convertido em contato | Nutrição pós-conversão |
Deal_Won__e | Oportunidade closed-won | Fluxo de onboarding de cliente |
Deal_Lost__e | Oportunidade closed-lost | Campanhas de win-back |
Exemplos de código
Inicializar o conector
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});Sincronizar contatos com filtro 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 em tempo real
// 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 taxa
Os limites da REST API do Salesforce dependem da sua edição e contagem de licenças:
| Edição | Requisições de API por 24 horas |
|---|---|
| Developer | 15.000 |
| Enterprise | 1.000 por licença de usuário (mínimo 15.000) |
| Unlimited | 5.000 por licença de usuário (mínimo 15.000) |
| Performance | 5.000 por licença de usuário (mínimo 15.000) |
Limites adicionais:
- Limite de API concorrente: 25 requisições de longa duração
- Bulk API: 15.000 lotes por 24 horas
- Streaming API: 2.000 eventos por dia (pode ser aumentado)
- Composite API: 25 sub-requisições por requisição composta
Monitoramento de uso da API
Monitore seu uso da API em Salesforce Setup > System Overview. O Tajo usa a Bulk API para grandes sincronizações para conservar seus limites de API.
Solução de problemas
Problemas comuns
| Problema | Causa | Solução |
|---|---|---|
| INVALID_SESSION_ID | Token expirado | Renove o token OAuth automaticamente |
| REQUEST_LIMIT_EXCEEDED | Limite diário de API atingido | Use a Bulk API ou reduza a frequência de sincronização |
| FIELD_INTEGRITY_EXCEPTION | Campo obrigatório ausente | Mapeie todos os campos obrigatórios na configuração |
| DUPLICATES_DETECTED | Regras de duplicados ativas | Configure as preferências de tratamento de duplicados |
| INSUFFICIENT_ACCESS | Permissões de objeto ausentes | Conceda acesso à API no perfil do Salesforce |
Modo de depuração
Habilite o log detalhado:
connectors: salesforce: debug: true log_level: verbose log_api_calls: trueTestar conexão
tajo connectors test salesforce# ✓ OAuth token valid# ✓ Contacts accessible# ✓ Leads accessible# ✓ Accounts accessible# ✓ Opportunities accessible# ✓ Bulk API enabledMelhores práticas
- Use a Bulk API para grandes sincronizações - Mude para a Bulk API 2.0 para conjuntos de dados acima de 2.000 registros
- Implemente Change Data Capture - Use CDC para sincronização em tempo real em vez de polling
- Mapeie apenas os campos necessários - Reduza o uso da API sincronizando apenas campos obrigatórios
- Trate a renovação de token - Implemente lógica de renovação automática de token OAuth
- Use requisições compostas - Combine chamadas de API relacionadas para reduzir a contagem de requisições
- Teste primeiro em sandbox - Use uma org sandbox do Salesforce antes do deploy em produção
Segurança
- OAuth 2.0 - Autorização padrão de mercado com múltiplos tipos de grant
- Restrições de IP - O Salesforce suporta faixas de IP de login e configurações de IP confiáveis
- TLS 1.2+ - Toda comunicação com a API é criptografada com TLS 1.2 no mínimo
- Segurança em nível de campo - Controle granular de acesso a campos por perfil
- Gerenciamento de sessão - Timeout de sessão configurável e limites de sessões concorrentes