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:
Configurar los ajustes de sincronización de Salesforce en Wati
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:
Haz clic en el selector de campos.
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 |
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.












