Passar para o conteúdo principal

Como integrar o Salesforce ao Wati e sincronizar automaticamente Contatos e Leads

Resumo

Gerenciar contatos em várias plataformas pode consumir muito tempo. Com a integração com o Salesforce, a Wati mantém automaticamente seus Contatos e Leads atualizados, sem a necessidade de importações manuais.

Este guia mostra como configurar a sincronização Salesforce → Wati, importar registros existentes do Salesforce e configurar o mapeamento de campos para que suas equipes tenham sempre acesso às informações mais recentes dos clientes.

Para obter informações sobre a sincronização Wati → Salesforce, incluindo como os contatos são identificados e sincronizados com o Salesforce, consulte nosso guia de sincronização Wati → Salesforce.

Instruções

Principais recursos da integração com o Salesforce

A integração com o Salesforce inclui as seguintes capacidades:

  • Sincronização de contatos em tempo real do Salesforce para o Wati

  • Seleção de campos configurável para Contatos e Leads

  • Mapeamento de campos personalizados entre o Salesforce e o Wati

  • Importação única de Contatos e Leads existentes do Salesforce

A integração utiliza eventos do Salesforce para atualizar automaticamente os contatos no Wati sempre que um Contato ou Lead for criado ou atualizado — sem necessidade de importações manuais.

Como funciona a sincronização bidirecional (Two-Way Sync)

A sincronização bidirecional suporta a sincronização em ambas as direções, mas cada direção funciona de forma independente e utiliza um mecanismo diferente:

Salesforce → Wati
O Salesforce envia alterações de registros de Contato e Lead para o Wati quando um registro é criado ou atualizado. Esta direção é configurada no lado do Salesforce usando Fluxos acionados por registro (record-triggered Flows), uma classe de ação Apex e o webhook do Wati. As etapas de configuração neste artigo cobrem esta direção.

Wati → Salesforce
Quando um contato é atualizado no Wati, a alteração é enviada ao Salesforce em tempo real usando uma sincronização baseada em webhook — não um processo de lote agendado ou polling. Esta direção faz parte da funcionalidade de Sincronização Bidirecional e não depende da configuração de Fluxo do lado do Salesforce descrita neste artigo.

Importante: As etapas de configuração do Salesforce neste artigo (Site Remoto, classe Apex, Fluxos acionados por registro) são específicas para configurar a sincronização Salesforce → Wati. A sincronização Wati → Salesforce é suportada como parte da sincronização bidirecional, mas suas etapas detalhadas de configuração não estão cobertas na seção de configuração do lado do Salesforce abaixo.

Comportamento da sincronização Wati → Salesforce

Novos contatos: Quando um novo contato é criado no Wati e sincronizado com o Salesforce, ele é criado como um Contato do Salesforce — e não como um Lead.

Gatilho: A direção Wati → Salesforce é em tempo real e baseada em webhook. As alterações no Wati são enviadas ao Salesforce imediatamente — não há lote agendado ou intervalo de consulta (polling).

Mapeamento de campos: O mapeamento de campos é configurável. Os campos do Salesforce podem ser mapeados para os campos de contato correspondentes do Wati e ajustados de acordo com seus requisitos. Tanto os campos padrão do Salesforce quanto os campos personalizados (terminados em __c) são suportados.

Requisito do Plano Business: A sincronização Wati → Salesforce está disponível no Plano Business do Wati. A sincronização bidirecional, incluindo esta direção, requer uma assinatura do Plano Business.

Antes de começar

Certifique-se de que você possui:

  • Uma conta Wati no Plano Business

  • Uma conta do Salesforce já conectada ao Wati via OAuth

  • Acesso de administrador ao Salesforce

  • A URL do Webhook e o Segredo de Autenticação do Webhook gerados pelo Wati

Nota: A configuração do lado do Salesforce requer acesso de administrador. Usuários padrão do Salesforce não podem concluir a configuração.

Como a integração funciona

O processo de configuração consiste em duas partes:

  • Configurar as definições de sincronização do Salesforce no Wati

  • Configurar o Salesforce para enviar atualizações ao Wati

Parte 1: Configurar as definições de sincronização no Wati

Etapa 1: Abrir a integração com o Salesforce

  • No Wati, vá para Connectors > Integrations > Salesforce.

  • Confirme se a etapa de Autenticação exibe uma marca de verificação verde.

  • Verifique se a URL da sua organização do Salesforce está sendo exibida.

  • Copie os seguintes valores:

    • URL do Webhook

    • Segredo de Autenticação do Webhook

Esses valores serão necessários durante a configuração do Salesforce.

Etapa 2: Selecionar os campos para sincronizar

Escolha os campos do Salesforce que devem ser sincronizados com o Wati.

Campos de Contato padrão

  • Telefone Comercial

  • ID do Contato*

  • E-mail

  • Nome

  • Sobrenome

  • ID do Proprietário

Campos de Lead padrão

  • E-mail

  • Nome

  • Sobrenome

  • ID do Lead*

  • ID do Proprietário

  • Telefone

  • Status

Nota: * Campos obrigatórios não podem ser removidos.

Para sincronizar campos adicionais:

  • Clique no seletor de campos.

  • Escolha campos padrão adicionais do Salesforce.

Etapa 3: Mapear campos do Salesforce para campos do Wati

Os campos selecionados do Salesforce são automaticamente mapeados para os campos de contato correspondentes do Wati por padrão.

Revise os mapeamentos e faça alterações apenas se desejar que um campo do Salesforce seja sincronizado com um campo de contato diferente do Wati.

Revise todos os mapeamentos cuidadosamente antes de prosseguir.

Etapa 4: Habilitar sincronização automática

Ative a alternância de Sincronização automática de dados (Sincronização bidirecional).

Quando a Sincronização automática de dados (Sincronização bidirecional) está ativada, as alterações são sincronizadas entre o Salesforce e o Wati em ambas as direções. Isso ajuda a manter os dados do cliente atualizados em ambas as plataformas sem a necessidade de atualizações manuais.

Etapa 5: Importar registros existentes do Salesforce

Execute o processo de importação única para trazer seus Contatos e Leads existentes do Salesforce para o Wati.

Esta importação só precisa ser realizada uma vez durante a configuração inicial.

Parte 2: Configurar o Salesforce

O acesso de administrador ao Salesforce é necessário para as seguintes etapas.

Etapa 1: Criar um Site Remoto

  • Vá para Setup > Security > Remote Site Settings.

  • Selecione New Remote Site.

  • Insira a URL do Site Remoto usando apenas o formato de domínio:

https://<hostname>
  • Selecione Active.

  • Clique em Save.

Importante: Não inclua /api/v1/salesforce/processWebhook na URL do Site Remoto. Adicionar o caminho fará com que a integração falhe.

Etapa 2: Criar Rótulos Personalizados (Custom Labels)

Vá para: Setup > Custom Code > Custom Labels

Crie os seguintes rótulos exatamente como mostrado:

Nome do Rótulo

Valor

WATI_Webhook_Endpoint

URL completa do Webhook do Wati

WATI_Webhook_Secret

Segredo de Autenticação do Webhook do Wati

Importante: Os nomes dos rótulos devem ser exatos. Qualquer variação impedirá o funcionamento da integração.

Etapa 3: Implantar a classe Apex

  • Vá para Setup > Developer Console.

  • Crie uma nova classe Apex.

  • Nomeie a classe como:

WatiSalesforceWebhookSender
  • Cole o código Apex fornecido pelo Wati.

  • Salve e compile a classe.

Esta classe cria a ação do Salesforce:

Notify WATI of Record Changes

Esta ação será usada pelos Fluxos (Flows) do Salesforce.

Etapa 4: Criar Fluxos acionados por registro (Record-Triggered Flows)

Crie dois Fluxos separados:

  • Fluxo de Contato

  • Fluxo de Lead

Navegue até: Setup > Process Automation > Flows > New Flow

Configure ambos os Fluxos usando as seguintes definições:

Definição

Valor

Tipo de Gatilho

Record-Triggered Flow (Fluxo acionado por registro)

Objeto

Contato ou Lead

Evento de Gatilho

Criado ou atualizado

Modo de Execução

Assincronamente (após salvar)

Tipo de Ação

Apex

Ação

Notify WATI of Record Changes

Ative ambos os Fluxos após a criação.

Importante: Sempre use o modo assíncrono. A execução síncrona pode causar atrasos nas transações do Salesforce e erros de tempo limite (timeout).

Etapa 5: Entendendo como a classe Apex usa Rótulos Personalizados (Custom Labels)

A classe Apex faz referência aos seus Rótulos Personalizados automaticamente usando System.Label.WATI_Webhook_Endpoint e System.Label.WATI_Webhook_Secret - nenhuma edição manual é necessária.

Copie a classe completa como ela está. Não modifique a estrutura da classe — apenas os Rótulos Personalizados configurados na Etapa 2 precisam ser atualizados para corresponder às suas credenciais do Wati.

public class WatiSalesforceWebhookSender {

private static String getEndpoint() {
return System.Label.WATI_Webhook_Endpoint;
}

private static String getWebhookSecret() {
return System.Label.WATI_Webhook_Secret;
}

private static final String PHONE_FIELD_DEFAULT = 'Phone';

@InvocableMethod(
label = 'Notify WATI of Record Changes',
description = 'POST Contact/Lead changes to WATI'
)
public static void sendRecords(List<Id> recordIds) {

if (recordIds == null || recordIds.isEmpty()) {
return;
}

String objectType = recordIds[0].getSObjectType().getDescribe().getName();
String baseUrl = Url.getOrgDomainUrl().toExternalForm();
String orgId = UserInfo.getOrganizationId();
String userId = UserInfo.getUserId();
String fullIdentityId = baseUrl + '/id/' + orgId + '/' + userId;

List<Map<String, Object>> events = new List<Map<String, Object>>();

for (Id rid : new Set<Id>(recordIds)) {

if (rid == null) {
continue;
}

events.add(new Map<String, Object>{
'salesForceOrgId' => fullIdentityId,
'recordId' => String.valueOf(rid),
'objectType' => objectType,
'eventType' => 'update',
'phoneField' => PHONE_FIELD_DEFAULT
});
}

if (!events.isEmpty()) {
makeCallout(JSON.serialize(events));
}
}

@future(callout = true)
private static void makeCallout(String jsonBody) {

HttpRequest req = new HttpRequest();

req.setEndpoint(getEndpoint());
req.setMethod('POST');
req.setHeader('Content-Type', 'application/json;charset=UTF-8');
req.setHeader('X-Wati-Salesforce-Webhook-Key', getWebhookSecret());
req.setBody(jsonBody);

try {
HttpResponse res = new Http().send(req);
System.debug(LoggingLevel.INFO, 'WATI status: ' + res.getStatusCode());
} catch (Exception e) {
System.debug(LoggingLevel.ERROR, 'WATI error: ' + e.getMessage());
}
}
}

salesForceOrgId deve conter a URL de identidade do seu Salesforce. Isso é normalmente construído usando Url.getOrgDomainUrl(), seguido por /id/, o ID da sua organização do Salesforce e seu ID de Usuário.

O Wati usa o ID da Organização do Salesforce dentro desta URL de identidade para identificar sua organização do Salesforce conectada. O nome do host não precisa corresponder ao usado durante a autenticação OAuth. Por exemplo, tanto login.salesforce.com quanto seu Meu Domínio (*.my.salesforce.com) são suportados, desde que o ID da Organização seja o mesmo.

Alternativamente, você pode fornecer o ID da Organização do Salesforce de 15 ou 18 caracteres diretamente, se ele corresponder à organização conectada.

O serviço de integração do Wati armazena este segmento da organização no momento da conexão e pode normalizar payloads de webhook de saída antes que cheguem ao Wati.

O que acontece após a configuração?

Após a configuração estar concluída:

  • Um Contato ou Lead é criado ou atualizado no Salesforce.

  • O Salesforce dispara o Fluxo.

  • O Fluxo chama a ação Apex.

  • A ação Apex envia a atualização para o Wati.

  • O Wati cria ou atualiza o contato automaticamente.

Nenhum trabalho agendado ou importação manual é necessário.

O que acontece quando um Lead do Salesforce vinculado ao Wati é convertido?

Quando um Lead do Salesforce é convertido e um novo registro de Contato é criado, a integração atualiza automaticamente o mapeamento do Lead antigo para o novo Contato — nenhum vínculo manual é necessário.

O Wati identifica registros usando o número de telefone. Quando o Lead é convertido, o contato existente no Wati é retido e associado ao Contato do Salesforce resultante. Nenhum contato duplicado no Wati é criado como resultado da conversão.

Desduplicação de contatos

O Wati usa números de telefone para identificar contatos existentes.

  • Se um número de telefone correspondente já existir, o contato será atualizado.

  • Se não existir um número de telefone correspondente, um novo contato será criado.

Notas importantes

Status de conexão do Salesforce

O indicador verde Conectado confirma apenas a autenticação OAuth.

Ele não verifica:

  • Configuração do Site Remoto

  • Implantação da classe Apex

  • Rótulos Personalizados

  • Fluxos do Salesforce

Sempre teste a integração após a configuração, atualizando um Contato ou Lead.

Campos suportados

  • Os campos padrão do Salesforce são suportados.

  • Campos personalizados do Salesforce terminados em __c são suportados.

Exclusão de registros

Excluir um Contato ou Lead no Salesforce não exclui o contato correspondente no Wati.

O relacionamento com o Salesforce é removido, mas o contato do Wati permanece.

Formatação de número de telefone

Use um formato de número de telefone consistente em todos os registros do Salesforce.

A formatação inconsistente pode criar contatos duplicados no Wati em vez de atualizar registros existentes.

Sincronização Wati-para-Salesforce

A sincronização Wati → Salesforce está disponível no plano Business do Wati como parte da funcionalidade de Sincronização Bidirecional.

Solução de problemas

Se os contatos ou leads do Salesforce não estiverem sincronizando corretamente, revise os sintomas abaixo para identificar a causa provável e a resolução recomendada.

Sintoma

Causa possível

Resolução

Erro HTTP 401 nos logs Apex

Segredo de autenticação do webhook incorreto

Copie o segredo de autenticação mais recente do Wati e atualize o Rótulo Personalizado WATI_Webhook_Secret.

Erro HTTP 404 nos logs Apex

URL do Webhook incorreta

Copie a URL do Webhook mais recente do Wati e atualize o Rótulo Personalizado WATI_Webhook_Endpoint.

Endpoint não autorizado ou exceção de chamada (callout) nos logs Apex

O Site Remoto está ausente ou configurado incorretamente

Verifique se a URL do Site Remoto contém apenas https://<hostname> e não inclui nenhum caminho de URL.

Nenhum log de depuração gerado

O Fluxo do Salesforce não está sendo disparado

Verifique se:

• O Fluxo está ativo

• As condições de entrada foram atendidas

• O Fluxo está configurado para ser executado no modo Assíncrono

Os contatos não estão sincronizando, mas o Salesforce mostra como Conectado

A configuração do lado do Salesforce está incompleta

Verifique se todas as etapas de configuração do Salesforce foram concluídas e se ambos os Fluxos estão ativos. Se a sincronização estava funcionando anteriormente e parou, entre em contato com o suporte do Wati.

A sincronização parou de funcionar após ter funcionado

Token OAuth do Salesforce expirou ou um Fluxo foi desativado

Verifique se ambos os Fluxos estão ativos. Se o problema persistir, desconecte e reconecte o Salesforce no Wati.

Contatos duplicados estão sendo criados

A formatação do número de telefone difere entre Salesforce e Wati

Certifique-se de que os números de telefone usem um formato consistente entre o Salesforce e o Wati.

Como visualizar logs de depuração do Salesforce

Para visualizar logs do Salesforce:

  • Vá para Setup > Environments > Logs > Debug Logs.

  • Ative o registro (logging) para seu usuário do Salesforce.

  • Atualize um Contato ou Lead para gerar entradas de log.

Perguntas Frequentes (FAQs)

Visão Geral da Integração

1. O que a integração do Wati com o Salesforce suporta?

A integração do Wati com o Salesforce suporta sincronização em tempo real entre o Salesforce e o Wati, seleção de campos configurável, mapeamento de campos personalizados e uma importação única de Contatos e Leads existentes do Salesforce. A Sincronização Bidirecional suporta a sincronização em ambas as direções: Salesforce → Wati e Wati → Salesforce.

2. Como funciona a Sincronização Bidirecional entre o Salesforce e o Wati?

A sincronização Salesforce → Wati envia alterações de Contatos e Leads para o Wati quando os registros são criados ou atualizados. Ela utiliza Fluxos acionados por registro do Salesforce, uma ação Apex e um webhook do Wati.

A sincronização Wati → Salesforce envia atualizações de contato do Wati para o Salesforce em tempo real usando uma sincronização baseada em webhook. Ela não depende da configuração de Fluxo do lado do Salesforce.

3. A Sincronização Bidirecional está disponível em todos os planos do Wati?

Não. A sincronização Wati → Salesforce e a funcionalidade completa de Sincronização Bidirecional requerem o Plano Business do Wati.

4. Quando o Wati sincroniza um contato com o Salesforce, ele é criado como um Lead ou um Contato?

Ele é criado como um Contato do Salesforce, e não como um Lead.

5. A sincronização Wati → Salesforce acontece em tempo real?

Sim. A direção Wati → Salesforce é baseada em webhook e é disparada em tempo real quando um contato é atualizado no Wati. Ela não depende de processos de lote agendados ou de consulta (polling).

6. Se um Lead do Salesforce vinculado ao Wati for convertido, preciso vinculá-lo manualmente novamente?

Não. O Wati faz a correspondência de registros pelo número de telefone e atualiza automaticamente o mapeamento para o Contato do Salesforce resultante quando um Lead é convertido. O contato existente no Wati é preservado e nenhuma duplicata é criada.

7. Como posso solucionar problemas com contatos ou leads do Salesforce que não estão sincronizando?

Primeiro, verifique se o indicador Conectado do Salesforce não está sendo tratado como prova de que toda a integração está configurada. Ele confirma apenas a autenticação OAuth. Verifique se o Site Remoto, os Rótulos Personalizados, a classe Apex e ambos os Fluxos do Salesforce estão configurados corretamente e ativos.

Os erros comuns incluem:

  • HTTP 401: Atualize o Rótulo Personalizado WATI_Webhook_Secret com o segredo de autenticação mais recente do Wati.

  • HTTP 404: Atualize o Rótulo Personalizado WATI_Webhook_Endpoint com a URL de Webhook mais recente do Wati.

  • Endpoint não autorizado ou exceção de chamada (callout): Verifique se o Site Remoto contém apenas https://<hostname> e nenhum caminho de URL.

  • Nenhum log de depuração: Verifique se o Fluxo está ativo, suas condições de entrada foram atendidas e se ele é executado de forma assíncrona.

  • Contatos duplicados: Use um formato de número de telefone consistente no Salesforce e no Wati.

Os logs de depuração do Salesforce estão disponíveis em Setup > Environments > Logs > Debug Logs.

Respondeu à sua pergunta?