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 ser demorado. Com a integração do Salesforce, a Wati mantém automaticamente seus Contatos e Oportunidades atualizados sem necessidade de importações manuais.

Este guia o levará pelo processo de configuração da sincronização em tempo real entre o Salesforce e a Wati, importação de registros existentes e configuração de mapeamentos de campos para que suas equipes sempre tenham acesso às informações de cliente mais recentes.

Instruções

O que há de novo na integração do Salesforce?

A integração do Salesforce agora inclui várias melhorias:

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

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

  • Mapeamento de campos personalizado entre o Salesforce e a Wati

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

Anteriormente, os usuários tinham que selecionar Importar do Salesforce para sincronizar os dados. A nova integração usa eventos do Salesforce para atualizar automaticamente os contatos na Wati sempre que um Contato ou Oportunidade é criado ou atualizado.

Antes de começar

Certifique-se de que você tem:

  • Uma conta Wati no plano Business

  • Uma conta do Salesforce já conectada à Wati through OAuth

  • Acesso de administrador do Salesforce

  • A URL da Webhook e Segredo de Autenticação da Webhook gerados pela Wati

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

Como funciona a integração

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

  1. Configurar as configurações de sincronização do Salesforce na Wati

  2. Configurar o Salesforce para enviar atualizações para a Wati

Parte 1: Configurar configurações de sincronização na Wati

Etapa 1: Abrir a integração do Salesforce

  • Na Wati, vá para Conectores > Integrações > Salesforce.

  • Confirme que a etapa de Autenticação exibe um marca de verificação verde.

  • Verifique se a URL da organização do Salesforce é exibida.

  • Copie os seguintes valores:

    • URL da Webhook

    • Segredo de Autenticação da 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 a Wati.

Campos de Contato padrão

  • Telefone Comercial

  • ID do Contato*

  • E-mail

  • Nome

  • Sobrenome

  • ID do Proprietário

Campos de Oportunidade padrão

  • E-mail

  • Nome

  • Sobrenome

  • ID da Oportunidade*

  • ID do Proprietário

  • Telefone

  • Status

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

Para sincronizar campos adicionais:

  1. Clique no seletor de campos.

  2. Escolha campos padrão adicionais do Salesforce.

Etapa 3: Mapear campos do Salesforce para campos da Wati

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

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

Verifique todos os mapeamentos cuidadosamente antes de prosseguir.

Etapa 4: Ativar sincronização automática

Ative o toggle de Sincronização automática de dados (Sincronização bidirecional).

Quando a Sincronização automática de dados (Sincronização bidirecional) estiver habilitada, as alterações serão sincronizadas entre o Salesforce e a Wati em ambos os sentidos. Isso ajuda a manter as informações do cliente atualizadas em ambas as plataformas sem necessidade de atualizações manuais.

Etapa 5: Importar registros existentes do Salesforce

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

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

Parte 2: Configurar o Salesforce

É necessário acesso de administrador do Salesforce para as etapas seguintes.

Etapa 1: Criar um Site Remoto

  • Vá para Configuração > Segurança > Configurações do Site Remoto.

  • Selecione Novo Site Remoto.

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

https://<nome do host>
  • Selecione Ativo.

  • Clique em Salvar.

Importante: Não inclua /api/v1/salesforce/processWebhook na URL do Site Remoto. Adicionar o caminho causará a falha da integração.

Etapa 2: Criar Rótulos Personalizados

Vá para: Configuração > Código Personalizado > Rótulos Personalizados

Crie os seguintes rótulos exatamente como mostrado:

Nome do Rótulo

Valor

WATI_Webhook_Endpoint

URL da Webhook completa da Wati

WATI_Webhook_Secret

Segredo de Autenticação da Webhook da Wati

Importante: Os nomes dos rótulos devem corresponder exatamente. Qualquer variação impedirá que a integração funcione.

Etapa 3: Implantar a classe Apex

  • Vá para Configuração > Console do Desenvolvedor.

  • Crie uma nova classe Apex.

  • Nomeie a classe:

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

  • Salve e compile a classe.

Essa classe cria a ação do Salesforce:

Notificar a WATI sobre alterações de registro

Essa ação será usada pelos Flows do Salesforce.

Etapa 4: Criar Flows acionados por registro

Crie dois Flows separados:

  • Flow de Contato

  • Flow de Oportunidade

Navegue até: Configuração > Automação de Processos > Flows > Novo Flow

Configure ambos os Flows usando as seguintes configurações:

Configuração

Valor

Tipo de acionador

Flow acionado por registro

Objeto

Contato ou Oportunidade

Evento de acionador

Criado ou Atualizado

Modo de execução

Assíncrono (após salvar)

Tipo de ação

Apex

Ação

Notificar a WATI sobre alterações de registro

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

Importante: Sempre use modo assíncrono. A execução síncrona pode causar atrasos e erros de tempo limite de transação no Salesforce.

Etapa 5: Configurar o endpoint e o segredo usando Rótulos Personalizados

Crie os Rótulos Personalizados WATI_Webhook_Endpoint e WATI_Webhook_Secret usando a URL da Webhook e o Segredo de Autenticação da Webhook gerados pela Wati.

Em sua classe Apex, faça referência a esses valores usando System.Label.WATI_Webhook_Endpoint e System.Label.WATI_Webhook_Secret.

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 = 'Notificar a WATI sobre alterações de registro',
description = 'POST alterações de Contato/Oportunidade para a 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, 'Status da WATI: ' + res.getStatusCode());
} catch (Exception e) {
System.debug(LoggingLevel.ERROR, 'Erro da WATI: ' + e.getMessage());
}
}
}

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

A Wati usa o ID da Organização do Salesforce dentro dessa 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 o 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 da Wati armazena esse segmento de org no momento da conexão e pode normalizar as cargas de trabalho da Webhook de saída antes que elas atinjam a Wati.

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

Depois que a configuração estiver concluída:

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

  • O Salesforce aciona o Flow.

  • O Flow chama a ação Apex.

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

  • A Wati cria ou atualiza automaticamente o contato.

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

Dedupicação de contatos

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

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

  • Se nenhum número de telefone correspondente for encontrado, um novo contato é criado.

Notas importantes

Status da 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

  • Flows do Salesforce

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

Campos suportados

  • Campos padrão do Salesforce são suportados.

  • Campos personalizados do Salesforce que terminam com __c são suportados.

Exclusão de registros

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

A relação do Salesforce é removida, mas o contato da Wati permanece.

Formatação de número de telefone

Use um formato de número de telefone consistente em todo o registro do Salesforce.

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

Sincronização da Wati para o Salesforce

Sim, está disponível para todos os clientes do plano Business da Wati.

Solução de problemas

Se os contatos ou oportunidades 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 do Apex

Segredo de autenticação da Webhook incorreto

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

Erro HTTP 404 nos logs do Apex

URL da Webhook incorreta

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

Erro de endpoint ou exceção de chamada nos logs do Apex

Site Remoto ausente ou configurado incorretamente

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

Nenhum log de depuração gerado

Flow do Salesforce não está sendo acionado

Verifique se:

• O Flow está ativo

• As condições de entrada são atendidas

• O Flow está configurado para executar no Modo Assíncrono

Contatos não estão sincronizando, mas o Salesforce mostra Conectado

Configuração do lado do Salesforce está incompleta

Verifique se todas as etapas de configuração do Salesforce foram concluídas e ambos os Flows estão ativos. Se a sincronização funcionava anteriormente e parou, contate o Suporte da Wati.

Sincronização parou de funcionar após funcionar anteriormente

Token de autenticação OAuth do Salesforce expirou ou um Flow foi desativado

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

Contatos duplicados estão sendo criados

Formatação de número de telefone difere entre o Salesforce e a Wati

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

Como exibir logs de depuração do Salesforce

Para exibir logs do Salesforce:

  • Vá para Configuração > Ambientes > Logs > Logs de Depuração.

  • Habilite a depuração para o seu usuário do Salesforce.

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

Perguntas frequentes (FAQs)

Visão geral da integração

1. O que a integração do Salesforce faz?

A integração do Salesforce sincroniza automaticamente Contatos e Oportunidades do Salesforce com a Wati. Ela oferece suporte à sincronização em tempo real, seleção de campos configurável, mapeamento de campos personalizado e importação única de registros existentes do Salesforce.

2. O que é necessário antes de configurar a integração do Salesforce?

Antes de configurar a integração, você precisa:

  • Uma conta Wati do plano Business

  • Uma conta do Salesforce conectada à Wati through OAuth

  • Acesso de administrador do Salesforce

  • A URL da Webhook e o Segredo de Autenticação da Webhook gerados pela Wati

O acesso de administrador do Salesforce é necessário porque parte da configuração deve ser concluída no Salesforce.

3. A integração do Salesforce sincroniza automaticamente as atualizações de contatos?

Sim. Depois que a configuração estiver concluída e a sincronização automática estiver habilitada, o Salesforce envia automaticamente atualizações de Contatos e Oportunidades para a Wati sempre que um registro for criado ou atualizado. As importações manuais não são mais necessárias para a sincronização contínua.

Sincronização e mapeamento de dados

4. Como os campos do Salesforce são mapeados para os campos da Wati?

Os campos do Salesforce selecionados são mapeados automaticamente para os campos de contato correspondentes da Wati por padrão. Você pode revisar e modificar os mapeamentos se desejar que um campo do Salesforce seja sincronizado com um campo de contato diferente da Wati.

5. Como a Wati evita contatos duplicados durante a sincronização?

A Wati usa números de telefone para identificar contatos existentes. Se um número de telefone correspondente já existir, o contato existente é atualizado. Se nenhum número de telefone correspondente for encontrado, a Wati cria um novo contato.

6. Campos personalizados do Salesforce são suportados?

Sim. A integração suporta campos padrão e personalizados do Salesforce que terminam com _c.

Limitações

7. O que acontece se eu excluir um Contato ou Oportunidade no Salesforce?

Excluir um Contato ou Oportunidade no Salesforce não exclui o contato correspondente na Wati. A relação do Salesforce é removida, mas o contato da Wati permanece.

8. O status Conectado do Salesforce confirma que a integração está totalmente configurada?

Não. O status Conectado confirma apenas que a autenticação OAuth foi bem-sucedida. Ele não verifica a configuração do lado do Salesforce, incluindo o Site Remoto, a classe Apex, os Rótulos Personalizados ou os Flows do Salesforce.

9. A sincronização da Wati de volta para o Salesforce é suportada?

Sim, está disponível para todos os clientes do plano Business da Wati.

Respondeu à sua pergunta?