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:
Configurar la configuración de sincronización de Salesforce en Wati
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:
Haga clic en el selector de campos.
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 |
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.












