Ir al contenido principal

Cómo integrar Salesforce con Wati y sincronizar automáticamente Contactos y Leads

Resumen

Administrar contactos en varias plataformas puede ser tedioso. Con la integración de Salesforce, Wati mantiene automáticamente actualizados sus Contactos y Leads sin requerir importaciones manuales.

Esta guía lo lleva a través del proceso de configuración de la sincronización en tiempo real entre Salesforce y Wati, la importación de registros existentes y la configuración de asignaciones de campos para que sus equipos siempre tengan acceso a la información del cliente más reciente.

Instrucciones

¿Qué hay de nuevo en la integración de Salesforce?

La integración de Salesforce ahora incluye varias mejoras:

  • Sincronización de contactos en tiempo real desde Salesforce hasta Wati

  • Selección de campos configurable para Contactos y Leads

  • Asignación de campos personalizada entre Salesforce y Wati

  • Importación única de Contactos y Leads existentes de Salesforce

Anteriormente, los usuarios debían seleccionar manualmente Importar desde Salesforce para sincronizar los datos. La nueva integración utiliza eventos de Salesforce para actualizar automáticamente los contactos en Wati siempre que se cree o actualice un Contacto o Lead.

Antes de comenzar

Asegúrese de tener:

  • Una cuenta de Wati en el Plan de negocios

  • Una cuenta de Salesforce ya conectada a Wati a través de OAuth

  • Acceso de administrador de Salesforce

  • La URL de webhook y Secreto de autenticación de webhook generado por Wati

Nota: La configuración del lado de Salesforce requiere acceso de administrador. Los usuarios de Salesforce estándar no pueden completar la configuración.

Cómo funciona la integración

El proceso de configuración consta de dos partes:

  1. Configurar la configuración de sincronización de Salesforce en Wati

  2. Configurar Salesforce para que envíe actualizaciones a Wati

Parte 1: Configurar la configuración de sincronización en Wati

Paso 1: Abrir la integración de Salesforce

  • En Wati, vaya a Conectores > Integraciones > Salesforce.

  • Confirme que el paso de Autenticación muestra una marca de verificación verde.

  • Verifique que se muestra la URL de la organización de Salesforce.

  • Copie los siguientes valores:

    • URL de Webhook

    • Secreto de autenticación de Webhook

Estos valores serán necesarios durante la configuración de Salesforce.

Paso 2: Seleccionar los campos para sincronizar

Elija los campos de Salesforce que deben sincronizarse con Wati.

Campos de contacto predeterminados

  • Teléfono comercial

  • ID de contacto*

  • Correo electrónico

  • Nombre

  • Apellido

  • ID del propietario

Campos de lead predeterminados

  • Correo electrónico

  • Nombre

  • Apellido

  • ID de lead*

  • ID del propietario

  • Teléfono

  • Estado

Nota: * Los campos obligatorios no se pueden eliminar.

Para sincronizar campos adicionales:

  1. Haga clic en el selector de campos.

  2. Elija campos estándar adicionales de Salesforce.

Paso 3: Asignar campos de Salesforce a campos de Wati

Los campos de Salesforce seleccionados se asignan automáticamente a los campos de contacto de Wati correspondientes de forma predeterminada.

Revise las asignaciones y realice cambios solo si desea que un campo de Salesforce se sincronice con un campo de contacto de Wati diferente.

Revise todas las asignaciones cuidadosamente antes de continuar.

Paso 4: Habilitar la sincronización automática

Habilite el toggle de Sincronización de datos automática (Sincronización bidireccional).

Cuando se habilita la sincronización de datos automática (sincronización bidireccional), los cambios se sincronizan entre Salesforce y Wati en ambos sentidos. Esto ayuda a mantener la información del cliente actualizada en ambas plataformas sin requerir actualizaciones manuales.

Paso 5: Importar registros existentes de Salesforce

Ejecute el proceso de importación única para importar sus Contactos y Leads existentes de Salesforce a Wati.

Esta importación solo debe realizarse una vez durante la configuración inicial.

Parte 2: Configurar Salesforce

Se requiere acceso de administrador de Salesforce para los siguientes pasos.

Paso 1: Crear un sitio remoto

  • Vaya a Configuración > Seguridad > Configuración de sitios remotos.

  • Seleccione Nuevo sitio remoto.

  • Ingrese la URL del sitio remoto utilizando solo el formato de dominio:

https://<hostname>
  • Seleccione Activo.

  • Haga clic en Guardar.

Importante: No incluya /api/v1/salesforce/processWebhook en la URL del sitio remoto. Agregar la ruta hará que la integración falle.

Paso 2: Crear etiquetas personalizadas

Vaya a: Configuración > Código personalizado > Etiquetas personalizadas

Cree las siguientes etiquetas exactamente como se muestra:

Nombre de la etiqueta

Valor

WATI_Webhook_Endpoint

URL de Webhook completa desde Wati

WATI_Webhook_Secret

Secreto de autenticación de Webhook desde Wati

Importante: Los nombres de las etiquetas deben coincidir exactamente. Cualquier variación hará que la integración no funcione.

Paso 3: Implementar la clase Apex

  • Vaya a Configuración > Consola de desarrollador.

  • Cree una nueva clase Apex.

  • Nombre de la clase:

WatiSalesforceWebhookSender
  • Pegue el código Apex proporcionado por Wati.

  • Guarde y compile la clase.

Esta clase crea la acción de Salesforce:

Notificar a WATI de cambios de registros

Esta acción se utilizará con los flujos de Salesforce.

Paso 4: Crear flujos desencadenados por registros

Cree dos flujos separados:

  • Flujo de contacto

  • Flujo de lead

Vaya a: Configuración > Automatización de procesos > Flujos > Nuevo flujo

Configure ambos flujos utilizando los siguientes ajustes:

Ajuste

Valor

Tipo de desencadenador

Flujo desencadenado por registros

Objeto

Contacto o Lead

Evento de desencadenador

Creado o actualizado

Modo de ejecución

Asíncrono (después de guardar)

Tipo de acción

Apex

Acción

Notificar a WATI de cambios de registros

Active ambos flujos después de crearlos.

Importante: Siempre utilice modo asíncrono. La ejecución sincrónica puede causar retrasos en la transacción de Salesforce y errores de tiempo de espera.

Paso 5: Configurar el punto de conexión y el secreto utilizando etiquetas personalizadas

Cree las etiquetas personalizadas WATI_Webhook_Endpoint y WATI_Webhook_Secret utilizando la URL de Webhook y el secreto de autenticación de Webhook generados por Wati.

En su clase Apex, haga referencia a estos valores utilizando System.Label.WATI_Webhook_Endpoint y 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 de cambios de registros',
description = 'Publicar cambios de Contacto/Lider en 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, 'Estado de WATI: ' + res.getStatusCode());
} catch (Exception e) {
System.debug(LoggingLevel.ERROR, 'Error de WATI: ' + e.getMessage());
}
}
}

salesForceOrgId debe contener su URL de identidad de Salesforce. Esto se construye normalmente utilizando Url.getOrgDomainUrl(), seguido de /id/, su ID de organización de Salesforce y su ID de usuario.

Wati utiliza el ID de la organización de Salesforce dentro de esta URL de identidad para identificar su organización de Salesforce conectada. El hostname no necesita coincidir con el utilizado durante la autenticación de OAuth. Por ejemplo, tanto login.salesforce.com como su dominio My (*.my.salesforce.com) son compatibles, siempre que el ID de la organización sea el mismo.

Alternativamente, puede proporcionar el ID de la organización de Salesforce de 15 o 18 caracteres directamente si coincide con la organización conectada.

El servicio de integración de Wati almacena este segmento de organización en el momento de conexión y puede normalizar las cargas útiles de Webhook salientes antes de que lleguen a Wati.

¿Qué sucede después de configurar?

Después de completar la configuración:

  • Se crea o actualiza un Contacto o Lead en Salesforce.

  • Salesforce desencadena el flujo.

  • El flujo llama a la acción de Apex.

  • La acción de Apex envía la actualización a Wati.

  • Wati crea o actualiza el contacto automáticamente.

No se requieren trabajos programados ni importaciones manuales.

Deduplicación de contactos

Wati utiliza números de teléfono para identificar contactos existentes.

  • Si ya existe un número de teléfono coincidente, se actualiza el contacto.

  • Si no se encuentra un número de teléfono coincidente, se crea un nuevo contacto.

Notas importantes

Estado de la conexión de Salesforce

El indicador Conectado de color verde solo confirma que la autenticación de OAuth de Salesforce fue exitosa.

No verifica:

  • Configuración del sitio remoto

  • Implementación de la clase Apex

  • Etiquetas personalizadas

  • Flujos de Salesforce

Siempre pruebe la integración después de la configuración actualizando un Contacto o Lead.

Campos compatibles

  • Se admiten campos de Salesforce estándar.

  • Se admiten campos personalizados de Salesforce que terminan en __c.

Eliminación de registros

Eliminar un Contacto o Lead en Salesforce no elimina el contacto correspondiente en Wati.

La relación de Salesforce se elimina, pero el contacto de Wati permanece.

Formato de número de teléfono

Utilice un formato de número de teléfono coherente en todos los registros de Salesforce.

Un formato incoherente puede crear contactos duplicados en Wati en lugar de actualizar los registros existentes.

Sincronización de Wati a Salesforce

Sí, está disponible para todos los clientes del Plan de negocios de Wati.

Solución de problemas

Si los contactos o leads de Salesforce no se están sincronizando correctamente, revise los síntomas a continuación para identificar la causa probable y la solución recomendada.

Síntoma

Causa posible

Resolución

Error HTTP 401 en los registros de Apex

Secreto de autenticación de Webhook incorrecto

Copie el secreto de autenticación más reciente desde Wati y actualice la etiqueta personalizada WATI_Webhook_Secret.

Error HTTP 404 en los registros de Apex

URL de Webhook incorrecta

Copie la URL de Webhook más reciente desde Wati y actualice la etiqueta personalizada WATI_Webhook_Endpoint.

Excepción de punto de conexión o llamada no autorizada en los registros de Apex

Sitio remoto que falta o configurado incorrectamente

Verifique que la URL del sitio remoto contenga solo https://<hostname> y no incluya ninguna ruta de URL.

No se generan registros de depuración

El flujo de Salesforce no se está activando

Verifique que:

• El flujo esté activo

• Se cumplan las condiciones de entrada

• El flujo esté configurado para ejecutarse en modo asíncrono

Los contactos no se están sincronizando, pero Salesforce muestra Conectado

La configuración del lado de Salesforce es incompleta

Verifique que todos los pasos de configuración de Salesforce se hayan completado y que ambos flujos estén activos. Si la sincronización funcionaba previamente y ha dejado de funcionar, comuníquese con el soporte de Wati.

La sincronización ha dejado de funcionar después de funcionar previamente

El token de OAuth de Salesforce ha caducado o se ha desactivado un flujo

Verifique que ambos flujos estén activos. Si el problema persiste, desconecte y vuelva a conectar Salesforce en Wati.

Se están creando contactos duplicados

El formato de número de teléfono difiere entre Salesforce y Wati

Asegúrese de que los números de teléfono utilicen un formato coherente en Salesforce y Wati.

Cómo ver los registros de depuración de Salesforce

Para ver los registros de Salesforce:

  • Vaya a Configuración > Entornos > Registros > Registros de depuración.

  • Habilite la registración para su usuario de Salesforce.

  • Actualice un Contacto o Lead para generar entradas de registro.

Preguntas frecuentes (Preguntas frecuentes)

Visión general de la integración

1. ¿Qué hace la integración de Salesforce?

La integración de Salesforce sincroniza automáticamente los contactos y leads de Salesforce con Wati. Admite la sincronización en tiempo real, la selección de campos configurable, el mapeo de campos personalizado y una importación única de registros de Salesforce existentes.

2. ¿Qué necesito antes de configurar la integración de Salesforce?

Antes de configurar la integración, necesita:

  • Una cuenta de Wati con el plan de negocios

  • Una cuenta de Salesforce conectada a Wati a través de OAuth

  • Acceso de administrador de Salesforce

  • La URL de Webhook y el secreto de autenticación de Webhook generados por Wati

Se requiere acceso de administrador de Salesforce porque parte de la configuración debe completarse en Salesforce.

3. ¿La integración de Salesforce sincroniza automáticamente las actualizaciones de contactos?

Sí. Después de completar la configuración y habilitar la sincronización automática, Salesforce envía automáticamente actualizaciones de Contactos y Leads a Wati siempre que se cree o actualice un registro. Ya no se necesitan importaciones manuales para la sincronización continua.

Sincronización y asignación de datos

4. ¿Cómo se asignan los campos de Salesforce a los campos de Wati?

Los campos de Salesforce seleccionados se asignan automáticamente a los campos de contacto de Wati correspondientes de forma predeterminada. Puede revisar y modificar las asignaciones si desea que un campo de Salesforce se sincronice con un campo de contacto de Wati diferente.

5. ¿Cómo evita Wati la creación de contactos duplicados durante la sincronización?

Wati utiliza números de teléfono para identificar contactos existentes. Si ya existe un número de teléfono coincidente, se actualiza el contacto existente. Si no se encuentra un número de teléfono coincidente, se crea un nuevo contacto.

6. ¿Se admiten campos personalizados de Salesforce?

Sí. La integración admite campos estándar y personalizados de Salesforce que terminan en _c.

Limitaciones

7. ¿Qué sucede si elimino un Contacto o Lead en Salesforce?

Eliminar un Contacto o Lead en Salesforce no elimina el contacto correspondiente en Wati. La relación de Salesforce se elimina, pero el contacto de Wati permanece.

8. ¿Confirma el estado Conectado de Salesforce que la integración está completamente configurada?

No. El estado Conectado solo confirma que la autenticación de OAuth de Salesforce fue exitosa. No verifica la configuración del lado de Salesforce, incluido el sitio remoto, la clase Apex, las etiquetas personalizadas o los flujos de Salesforce.

9. ¿Se admite la sincronización desde Wati hasta Salesforce?

Sí, está disponible para todos los clientes del Plan de negocios de Wati.

¿Ha quedado contestada tu pregunta?