Ir al contenido principal

Cómo integrar Salesforce con Wati y sincronizar automáticamente contactos y clientes potenciales

Resumen

Gestionar contactos en múltiples plataformas puede consumir mucho tiempo. Con la integración de Salesforce, Wati mantiene automáticamente tus contactos y clientes potenciales actualizados sin necesidad de importaciones manuales.

Esta guía te guiará a través de la configuración de la sincronización en tiempo real entre Salesforce y Wati, la importación de registros existentes y la configuración de mapeos de campos para que tus equipos siempre tengan acceso a la información más reciente del cliente.b

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 de Salesforce a Wati

  • Selección configurable de campos para Contactos y Clientes Potenciales

  • Mapeo de campos personalizado entre Salesforce y Wati

  • Importación única de contactos y clientes potenciales existentes de Salesforce

Anteriormente, los usuarios debían seleccionar manualmente Importar de Salesforce para sincronizar datos. La nueva integración utiliza eventos de Salesforce para actualizar automáticamente los contactos en Wati cada vez que se crea o actualiza un Contacto o Cliente Potencial.

Antes de comenzar

Asegúrate de tener:

  • Una cuenta de Wati en el Plan Business

  • Una cuenta de Salesforce ya 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

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

Cómo funciona la integración

El proceso de configuración consta de dos partes:

  1. Configurar los ajustes de sincronización de Salesforce en Wati

  2. Configurar Salesforce para enviar actualizaciones a Wati

Parte 1: Configurar los ajustes de sincronización en Wati

Paso 1: Abrir la integración de Salesforce

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

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

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

  • Copia 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

Elige los campos de Salesforce que se sincronizarán con Wati.

Campos de Contacto predeterminados

  • Teléfono de empresa

  • ID de contacto*

  • Correo electrónico

  • Nombre

  • Apellido

  • ID del propietario

Campos de Cliente Potencial predeterminados

  • Correo electrónico

  • Nombre

  • Apellido

  • ID de cliente potencial*

  • ID del propietario

  • Teléfono

  • Estado

Nota: * Los campos obligatorios no se pueden eliminar.

Para sincronizar campos adicionales:

  1. Haz clic en el selector de campos.

  2. Elige campos estándar adicionales de Salesforce.

Paso 3: Mapear campos de Salesforce a campos de Wati

Los campos seleccionados de Salesforce se mapean automáticamente a los campos de contacto correspondientes de Wati por defecto.

Revisa los mapeos y realiza cambios solo si deseas que un campo de Salesforce se sincronice con un campo de contacto de Wati diferente.

Revisa cuidadosamente todos los mapeos antes de continuar.

Paso 4: Habilitar la sincronización automática

Habilita el control deslizante de Sincronización automática de datos (Sincronización bidireccional).

Esto activa la sincronización en tiempo real de Salesforce a Wati cada vez que se crean o actualizan Contactos o Clientes Potenciales.

Paso 5: Importar registros existentes de Salesforce

Ejecuta el proceso de importación única para traer tus Contactos y Clientes Potenciales existentes de Salesforce a Wati.

Esta importación solo necesita 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

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

  • Selecciona Nuevo sitio remoto.

  • Introduce la URL del sitio remoto usando solo el formato de dominio:

https://<nombre-host>
  • Selecciona Activo.

  • Haz clic en Guardar.

Importante: No incluyas /api/v1/salesforce/processWebhook en la URL del sitio remoto. Añadir la ruta hará que la integración falle.

Paso 2: Crear etiquetas personalizadas

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

Crea las siguientes etiquetas exactamente como se muestran:

Nombre de la etiqueta

Valor

WATI_Webhook_Endpoint

URL completa de Webhook de Wati

WATI_Webhook_Secret

Secreto de Autenticación de Webhook de Wati

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

Paso 3: Desplegar la clase Apex

  • Ve a Configuración > Consola del desarrollador.

  • Crea una nueva clase Apex.

  • Nombra la clase:

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

  • Guarda y compila la clase.

Esta clase crea la acción de Salesforce:

Notificar a WATI sobre cambios en registros

Esta acción será utilizada por los Flujos de Salesforce.

Paso 4: Crear flujos activados por registros

Crea dos flujos separados:

  • Flujo de Contactos

  • Flujo de Clientes Potenciales

Navega a: Configuración > Automatización de procesos > Flujos > Nuevo Flujo

Configura ambos Flujos utilizando los siguientes ajustes:

Ajuste

Valor

Tipo de Disparador

Flujo activado por registro

Objeto

Contacto o Cliente Potencial

Evento de Disparador

Creado o Actualizado

Modo de Ejecución

Asíncronamente (después de guardar)

Tipo de Acción

Apex

Acción

Notificar a WATI sobre cambios en registros

Activa ambos Flujos después de crearlos.

Importante: Usa siempre el modo asíncrono. La ejecución síncrona puede causar retrasos en las transacciones de Salesforce y errores de tiempo de espera.

Paso 5: Configurar el punto final y el secreto usando etiquetas personalizadas

Crea 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 tu clase Apex, haz referencia a estos valores usando 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 = '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 debe contener tu URL de identidad de Salesforce. Esto se construye típicamente usando Url.getOrgDomainUrl(), seguido de /id/, tu ID de Organización de Salesforce y tu ID de Usuario.

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

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

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

¿Qué sucede después de la configuración?

Una vez completada la configuración:

  • Se crea o actualiza un Contacto o Cliente Potencial en Salesforce.

  • Salesforce dispara el Flujo.

  • El Flujo llama a la acción Apex.

  • La acción 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, el contacto se actualiza.

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

Notas importantes

Estado de la conexión de Salesforce

El indicador verde Conectado solo confirma la autenticación OAuth.

No verifica:

  • Configuración del sitio remoto

  • Despliegue de la clase Apex

  • Etiquetas Personalizadas

  • Flujos de Salesforce

Prueba siempre la integración después de la configuración actualizando un Contacto o Cliente Potencial.

Campos compatibles

Solo se admiten campos estándar de Salesforce.

Los campos personalizados de Salesforce que terminan en __c no se pueden sincronizar actualmente.

Eliminación de registros

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

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

Formato del número de teléfono

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

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

Sincronización de Wati a Salesforce

Actualizar contactos en Wati y enviar esos cambios de vuelta a Salesforce no está disponible para todas las cuentas.

Ponte en contacto con tu gerente de cuenta para confirmar la elegibilidad.

Solución de problemas

Si los contactos o clientes potenciales de Salesforce no se sincronizan correctamente, revisa los síntomas a continuación para identificar la causa probable y la solución recomendada.

Síntoma

Causa posible

Solución

Error HTTP 401 en los registros de Apex

Secreto de autenticación de webhook incorrecto

Copia el secreto de autenticación más reciente de Wati y actualiza la Etiqueta Personalizada WATI_Webhook_Secret.

Error HTTP 404 en los registros de Apex

URL de Webhook incorrecta

Copia la URL de Webhook más reciente de Wati y actualiza la Etiqueta Personalizada WATI_Webhook_Endpoint.

Endpoint no autorizado o excepción de llamada en los registros de Apex

El sitio remoto falta o está configurado incorrectamente

Verifica que la URL del sitio remoto contenga solo https://<nombre-host> y no incluya ninguna ruta de URL.

No se generan registros de depuración

El flujo de Salesforce no se está activando

Verifica que:

• El Flujo esté activo

• Las condiciones de entrada se cumplan

• El Flujo esté configurado para ejecutarse en modo Asíncrono

Los contactos no se sincronizan, pero Salesforce muestra Conectado

La configuración del lado de Salesforce está incompleta

Verifica que se hayan completado todos los pasos de configuración de Salesforce y que ambos Flujos estén activos. Si la sincronización funcionaba anteriormente y se ha detenido, ponte en contacto con el Soporte de Wati.

La sincronización dejó de funcionar después de haber funcionado previamente

El token OAuth de Salesforce expiró o un Flujo se desactivó

Verifica que ambos Flujos estén activos. Si el problema persiste, desconecta y reconecta Salesforce en Wati.

Se crean contactos duplicados

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

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

Cómo ver registros de depuración de Salesforce

Para ver los registros de Salesforce:

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

  • Habilita el registro para tu usuario de Salesforce.

  • Actualiza un Contacto o Cliente Potencial para generar entradas de registro.

Preguntas frecuentes (FAQs)

Descripció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 clientes potenciales de Salesforce con Wati. Admite sincronización en tiempo real, selección configurable de campos, mapeo de campos personalizado e importación única de registros existentes de Salesforce.

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

Antes de configurar la integración, necesitas:

  • Una cuenta de plan Business de Wati

  • 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í. Una vez completada la configuración y habilitada la sincronización automática, Salesforce envía automáticamente las actualizaciones de Contactos y Clientes Potenciales a Wati cada vez que se crea o actualiza un registro. Ya no se requieren importaciones manuales para la sincronización continua.

Sincronización y mapeo de datos

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

Los campos seleccionados de Salesforce se mapean automáticamente a los campos de contacto correspondientes de Wati por defecto. Puedes revisar y modificar los mapeos si deseas 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 ningún número de teléfono coincidente, Wati crea un nuevo contacto.

6. ¿Se admiten campos personalizados de Salesforce?

No. La integración actualmente solo admite campos estándar de Salesforce. Los campos personalizados de Salesforce que terminan en __c no se pueden sincronizar.

Limitaciones

7. ¿Qué sucede si elimino un contacto o cliente potencial en Salesforce?

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

8. ¿El estado de conexión de Salesforce confirma que la integración está completamente configurada?

No. El estado Conectado solo confirma que la autenticación 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 de Wati a Salesforce?

La sincronización de Wati a Salesforce no está disponible para todas las cuentas. Ponte en contacto con tu gerente de cuenta para confirmar si tu cuenta es elegible para esta funcionalidad.

¿Ha quedado contestada tu pregunta?