Resumen
Gestionar contactos en varias plataformas puede llevar mucho tiempo. Con la integración de Salesforce, Wati mantiene automáticamente tus Contactos y Leads actualizados, sin necesidad de realizar importaciones manuales.
Esta guía te explica cómo configurar la sincronización Salesforce → Wati, importar registros existentes de Salesforce y configurar el mapeo de campos para que tus equipos siempre tengan acceso a la información más reciente de los clientes.
Para obtener información sobre la sincronización Wati → Salesforce, incluido cómo se identifican y sincronizan los contactos con Salesforce, consulta nuestra guía de sincronización Wati → Salesforce.
Instrucciones
Características principales de la integración con Salesforce
La integración con Salesforce incluye las siguientes capacidades:
Sincronización de contactos en tiempo real desde Salesforce a Wati
Selección de campos configurable para contactos y clientes potenciales
Mapeo de campos personalizados entre Salesforce y Wati
Importación única de contactos y clientes potenciales existentes en Salesforce
La 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; no requiere importaciones manuales.
Cómo funciona la sincronización bidireccional
La sincronización bidireccional admite la sincronización en ambas direcciones, pero cada una funciona de forma independiente y utiliza un mecanismo diferente:
Salesforce → Wati
Salesforce envía cambios en los registros de contactos y clientes potenciales a Wati cuando se crea o actualiza un registro. Esta dirección se configura en el lado de Salesforce mediante flujos (Flows) activados por registro, una clase de acción de Apex y el webhook de Wati. Los pasos de configuración en este artículo cubren esta dirección.
Wati → Salesforce
Cuando un contacto se actualiza en Wati, el cambio se envía a Salesforce en tiempo real mediante una sincronización basada en webhooks, no mediante un proceso por lotes programado o sondeo (polling). Esta dirección es parte de la funcionalidad de sincronización bidireccional y no depende de la configuración de flujo en el lado de Salesforce descrita en este artículo.
Importante: Los pasos de configuración de Salesforce en este artículo (sitio remoto, clase de Apex, flujos activados por registro) son específicamente para configurar la sincronización de Salesforce → Wati. La sincronización de Wati → Salesforce es compatible como parte de la sincronización bidireccional, pero sus pasos detallados de configuración no están cubiertos en la sección de configuración del lado de Salesforce a continuación.
Comportamiento de la sincronización Wati → Salesforce
Nuevos contactos: Cuando se crea un nuevo contacto en Wati y se sincroniza con Salesforce, se crea como un contacto de Salesforce, no como un cliente potencial (Lead).
Activador: La dirección Wati → Salesforce es en tiempo real y está basada en webhooks. Los cambios en Wati se envían a Salesforce inmediatamente; no hay lotes programados ni intervalos de sondeo.
Mapeo de campos: El mapeo de campos es configurable. Los campos de Salesforce se pueden asignar a los campos de contacto correspondientes de Wati y ajustarse según sus necesidades. Se admiten tanto los campos estándar de Salesforce como los campos personalizados (que terminan en __c).
Requisito del Plan Business: La sincronización Wati → Salesforce está disponible en el Plan Business de Wati. La sincronización bidireccional, incluida esta dirección, requiere una suscripción al Plan Business.
Antes de empezar
Asegúrese 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 del Webhook y el Secreto de autenticación del 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: Abra la integración con Salesforce
En Wati, vaya a Connectors (Conectores) > Integrations (Integraciones) > Salesforce.
Confirme que el paso de Autenticación muestre una marca de verificación verde.
Verifique que se muestre la URL de su organización de Salesforce.
Copie los siguientes valores:
URL del Webhook
Secreto de autenticación del Webhook
Estos valores serán necesarios durante la configuración de Salesforce.
Paso 2: Seleccione los campos para sincronizar
Elija los campos de Salesforce que deben sincronizarse con Wati.
Campos de contacto predeterminados
Teléfono comercial
ID de contacto*
Email
Nombre
Apellido
ID del propietario
Campos de cliente potencial (Lead) predeterminados
Email
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: Mapear 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 detenidamente antes de continuar.
Paso 4: Habilitar la sincronización automática
Habilite el interruptor de Sincronización automática de datos (Sincronización bidireccional).
Cuando la Sincronización automática de datos (sincronización bidireccional) está habilitada, los cambios se sincronizan entre Salesforce y Wati en ambas direcciones. Esto ayuda a mantener los datos de los clientes actualizados en ambas plataformas sin necesidad de actualizaciones manuales.
Paso 5: Importar registros existentes de Salesforce
Ejecute el proceso de importación única para llevar sus contactos y clientes potenciales 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 sitio remoto.
Seleccione Nuevo sitio remoto.
Ingrese la URL del sitio remoto usando solo el formato de dominio:
https://<nombre_de_host>
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 etiqueta | Valor |
WATI_Webhook_Endpoint | URL completa del webhook de Wati |
WATI_Webhook_Secret | Secreto de autenticación del Webhook de Wati |
Importante: Los nombres de las etiquetas deben coincidir exactamente. Cualquier variación evitará que la integración funcione.
Paso 3: Implementar la clase de Apex
Vaya a Configuración > Consola de desarrollador.
Cree una nueva clase de Apex.
Nombre de la clase:
WatiSalesforceWebhookSender
Pegue el código de Apex proporcionado por Wati.
Guarde y compile la clase.
Esta clase crea la acción de Salesforce:
Notify WATI of Record Changes
Esta acción será utilizada por los flujos de Salesforce.
Paso 4: Crear flujos activados por registro
Cree dos flujos separados:
Flujo de contacto (Contact Flow)
Flujo de cliente potencial (Lead Flow)
Navegue a: Configuración > Automatización de procesos > Flujos > Nuevo flujo
Configure ambos flujos usando los siguientes ajustes:
Ajuste | Valor |
Tipo de activador | Flujo activado por registro |
Objeto | Contacto o Lead |
Evento activador | Creado o actualizado |
Modo de ejecución | Asincrónicamente (después de guardar) |
Tipo de acción | Apex |
Acción | Notify WATI of Record Changes |
Active ambos flujos después de crearlos.
Importante: Utilice siempre el modo asincrónico. La ejecución síncrona puede provocar retrasos en las transacciones de Salesforce y errores de tiempo de espera.
Paso 5: Entender cómo la clase de Apex usa las etiquetas personalizadas
La clase de Apex hace referencia a sus etiquetas personalizadas automáticamente usando System.Label.WATI_Webhook_Endpoint y System.Label.WATI_Webhook_Secret; no se necesitan ediciones manuales.
Copie la clase completa tal cual. No modifique la estructura de la clase; solo es necesario actualizar las etiquetas personalizadas configuradas en el Paso 2 para que coincidan con sus credenciales de Wati.
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 su URL de identidad de Salesforce. Esto generalmente se construye utilizando Url.getOrgDomainUrl(), seguido de /id/, el ID de su 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 nombre de host no necesita coincidir con el utilizado durante la autenticación OAuth. Por ejemplo, tanto login.salesforce.com como su My Domain (*.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 la conexión y puede normalizar las cargas útiles de webhooks 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 activa 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.
¿Qué sucede cuando se convierte un cliente potencial (Lead) de Salesforce vinculado a Wati?
Cuando se convierte un cliente potencial de Salesforce y se crea un nuevo registro de contacto, la integración actualiza automáticamente el mapeo del antiguo cliente potencial al nuevo contacto; no es necesaria una nueva vinculación manual.
Wati identifica los registros mediante el número de teléfono. Cuando se convierte el cliente potencial, el contacto de Wati existente se conserva y se asocia con el contacto resultante de Salesforce. No se crea ningún contacto duplicado en Wati como resultado de la conversión.
Desduplicación de contactos
Wati utiliza números de teléfono para identificar los contactos existentes.
Si ya existe un número de teléfono coincidente, se actualiza el contacto.
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:
La configuración del sitio remoto
La implementación de la clase de Apex
Las etiquetas personalizadas
Los flujos de Salesforce
Pruebe siempre la integración después de la configuración actualizando un contacto o cliente potencial.
Campos admitidos
Se admiten los campos estándar de Salesforce.
Se admiten campos personalizados de Salesforce que terminan en
__c.
Eliminación de registros
Eliminar un contacto o cliente potencial en Salesforce no elimina el contacto correspondiente en Wati.
La relación con Salesforce se elimina, pero el contacto en 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 inconsistente puede crear contactos duplicados en Wati en lugar de actualizar los registros existentes.
Sincronización Wati-a-Salesforce
La sincronización Wati → Salesforce está disponible en el plan Business de Wati como parte de la funcionalidad de sincronización bidireccional.
Solución de problemas
Si los contactos o clientes potenciales de Salesforce no se sincronizan correctamente, revise los síntomas a continuación para identificar la causa probable y la resolució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 de Wati y actualice la etiqueta personalizada WATI_Webhook_Secret. |
Error HTTP 404 en los registros de Apex | URL de Webhook incorrecta | Copie la URL del webhook más reciente de Wati y actualice la etiqueta personalizada WATI_Webhook_Endpoint. |
Punto final no autorizado o excepción de llamada en los registros de Apex | El sitio remoto falta o está 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 asincrónico |
Los contactos no se sincronizan, pero Salesforce muestra "Conectado" | La configuración del lado de Salesforce está 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 anteriormente y se ha detenido, comuníquese con el soporte de Wati. |
La sincronización dejó de funcionar | Token de OAuth de Salesforce caducado o flujo desactivado | 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 del número de teléfono difiere entre Salesforce y Wati | Asegúrese de que los números de teléfono usen 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 el registro para su usuario de Salesforce.
Actualice un contacto o cliente potencial para generar entradas de registro.
Preguntas frecuentes (FAQ)
Descripción general de la integración
1. ¿Qué admite la integración de Wati con Salesforce?
La integración de Wati con Salesforce admite la sincronización en tiempo real entre Salesforce y Wati, la selección de campos configurable, el mapeo de campos personalizados y una importación única de contactos y clientes potenciales existentes en Salesforce. La sincronización bidireccional admite la sincronización en ambas direcciones: Salesforce → Wati y Wati → Salesforce.
2. ¿Cómo funciona la sincronización bidireccional entre Salesforce y Wati?
La sincronización Salesforce → Wati envía cambios de contactos y clientes potenciales a Wati cuando se crean o actualizan los registros. Utiliza flujos activados por registro de Salesforce, una acción de Apex y un webhook de Wati.
La sincronización Wati → Salesforce envía actualizaciones de contactos de Wati a Salesforce en tiempo real utilizando una sincronización basada en webhooks. No depende de la configuración de flujo del lado de Salesforce.
3. ¿La sincronización bidireccional está disponible en todos los planes de Wati?
No. La sincronización Wati → Salesforce y la funcionalidad completa de sincronización bidireccional requieren el Plan Business de Wati.
4. Cuando Wati sincroniza un contacto con Salesforce, ¿se crea como un cliente potencial o un contacto?
Se crea como un contacto de Salesforce, no como un cliente potencial.
5. ¿La sincronización Wati → Salesforce ocurre en tiempo real?
Sí. La dirección Wati → Salesforce está basada en webhooks y se activa en tiempo real cuando se actualiza un contacto en Wati. No depende de un proceso por lotes programado o sondeo.
6. Si un cliente potencial de Salesforce vinculado a Wati se convierte, ¿debo volver a vincularlo manualmente?
No. Wati hace coincidir los registros por número de teléfono y actualiza automáticamente el mapeo al contacto de Salesforce resultante cuando se convierte un cliente potencial. El contacto de Wati existente se conserva y no se crea ningún duplicado.
7. ¿Cómo puedo solucionar problemas de contactos o clientes potenciales de Salesforce que no se sincronizan?
Primero, verifique que el indicador de Conectado de Salesforce no se considere una prueba de que toda la integración esté configurada. Solo confirma la autenticación OAuth. Verifique que el sitio remoto, las etiquetas personalizadas, la clase de Apex y ambos flujos de Salesforce estén configurados correctamente y activos.
Los errores comunes incluyen:
HTTP 401: Actualice la etiqueta personalizada
WATI_Webhook_Secretcon el secreto de autenticación más reciente de Wati.HTTP 404: Actualice la etiqueta personalizada
WATI_Webhook_Endpointcon la URL del webhook más reciente de Wati.Punto final no autorizado o excepción de llamada: Verifique que el sitio remoto contenga solo
https://<nombre_de_host>y ninguna ruta de URL.No hay registros de depuración: Verifique que el flujo esté activo, que se cumplan sus condiciones de entrada y que se ejecute de forma asincrónica.
Contactos duplicados: Utilice un formato de número de teléfono coherente en Salesforce y Wati.
Los registros de depuración de Salesforce están disponibles en Configuración > Entornos > Registros > Registros de depuración.












