Ir al contenido principal

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

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 https://<nombre_de_host> 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 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_Secret con el secreto de autenticación más reciente de Wati.

  • HTTP 404: Actualice la etiqueta personalizada WATI_Webhook_Endpoint con 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.

¿Ha quedado contestada tu pregunta?