Conecta tu cuenta de GoHighLevel
Conecta tu CRM una vez y olvídate: cada contacto que etiquetes en GoHighLevel recibirá la llamada de tu agente de Calligence, y el resultado volverá solo al contacto — sin exportar hojas de cálculo ni copiar datos a mano.
Qué hace esta integración
El circuito completo, en tres movimientos:
Tu workflow se dispara (por ejemplo, al añadir una etiqueta a un contacto) y envía el contacto a Calligence.
El contacto entra como lead en tu campaña y el agente de IA le llama dentro de su ventana horaria.
Tras cada llamada, el contacto recibe una nota con el resumen; al cerrar el lead, también una etiqueta con el resultado.
En concreto, después de cada llamada verás en el propio contacto de GoHighLevel:
- Una nota en su timeline que empieza por
Calligence — resumen de la llamada:, con el resumen de la conversación y el resultado. - Cuando el lead llega a un estado final, una etiqueta en su lista de tags:
Calligence: Éxito,Calligence: No interesado,Calligence: InválidooCalligence: Pendiente. Las etiquetas se añaden — nunca se borran las tuyas. - Opcionalmente, el resultado también puede escribirse en un campo personalizado de tu elección (ver el paso 1).
Calligence nunca crea contactos nuevos en tu CRM ni duplica los existentes — solo escribe notas y etiquetas sobre el contacto que tú enviaste.
Antes de empezar
Acceso de administrador a la sub-cuenta (location) de GoHighLevel donde están tus contactos — no a la cuenta Agency. El token del paso 2 se crea dentro de la sub-cuenta; es el error más común.
Un usuario administrador en Calligence — la página Integraciones solo es visible para administradores de tu organización.
Una campaña creada en Calligence (o créala sobre la marcha en el paso 3).
¿Tu CRM se llama LeadConnector u otra marca? Es GoHighLevel con marca blanca — los menús son los mismos. Esta guía navega por nombres de menú, no por URLs, así que te sirve igual.
Paso 1 — Crea la conexión en Calligence
Inicia sesión en Calligence y abre Integraciones en el menú lateral. Pulsa + Crear conexión y rellena el formulario:
- Nombre — un nombre para identificarla en la lista, por ejemplo GHL — cuenta principal.
- Proveedor — GoHighLevel.
- Token — el token de integración privada que crearás en el paso 2. Puedes dejar la ventana abierta y volver aquí con el token copiado. Se cifra en el servidor y no se vuelve a mostrar.
- Location ID — el identificador de tu sub-cuenta en GoHighLevel. Lo encuentras en la URL del navegador dentro de tu sub-cuenta: es el código que aparece justo después de
/location/. Tiene que ser la misma sub-cuenta en la que crearás el token del paso 2: Calligence lo comprueba al guardar. - Mapeo de campos (avanzado, opcional) — solo si además de la etiqueta quieres el resultado en un campo personalizado de tus contactos. El formato que Calligence lee es exactamente este:
{"status": "<id del campo personalizado en GHL>"}, el mismo que verás de ejemplo en el formulario. Si no lo necesitas, déjalo vacío: las etiquetas de resultado se sincronizan igual.
Deberías ver la conexión en la lista, con estado activo y el token enmascarado (solo los últimos 4 caracteres).
Paso 2 — Crea el token en GoHighLevel
Dentro de tu sub-cuenta de GoHighLevel:
- Ve a Settings → Private Integrations. Si no ves esa opción, actívala primero en Settings → Labs.
- Pulsa Create new Integration y ponle un nombre, por ejemplo Calligence.
- En los permisos (scopes), marca exactamente estos dos: View Contacts y Edit Contacts. No necesita ningún otro permiso.
- Crea la integración y copia el token ahora — GoHighLevel solo lo muestra una vez.
Importante: el token correcto empieza por pit-. Las claves de API antiguas de GoHighLevel (las de la versión 1, cadenas largas que empiezan por eyJ) no funcionan — Calligence las rechaza al crear la conexión.
Vuelve a Calligence y pega el token (y el Location ID) en el formulario del paso 1. Al guardar, Calligence comprueba las credenciales contra GoHighLevel antes de crear nada: si el token no es válido, ha caducado o pertenece a otra sub-cuenta distinta de la del Location ID, verás un error en el formulario y la conexión no se creará. Si todo encaja, la verás creada y activa en la lista de Integraciones.
Paso 3 — Asocia la conexión a una campaña y copia tu URL
En Calligence, abre Campañas y crea una campaña nueva (o edita una existente). En el campo Conexión (CRM), selecciona la conexión que acabas de crear y guarda.
Al guardar, Calligence te muestra la URL de webhook de esa campaña — "Conexión asociada. Pega esta URL en tu workflow de GoHighLevel" — con un botón Copiar. Si editas la campaña más adelante, la misma URL aparece como URL actual.
- Cada campaña tiene su propia URL: los contactos que lleguen por ella entran en esa campaña. Si usas varias campañas, repite este paso en cada una.
- La URL es permanente — no cambia aunque edites la campaña. Solo cambia si la rotas a propósito.
Trata esta URL como una contraseña. Cualquiera que la tenga puede crear leads en tu campaña y provocar llamadas. No la publiques ni la compartas fuera de tu workflow de GoHighLevel. Si crees que se ha filtrado, puedes rotarla tú mismo desde la campaña (Editar → botón Rotar junto a la URL): la anterior deja de funcionar al instante y solo tendrás que pegar la nueva en tu workflow.
Paso 4 — Configura el workflow en GoHighLevel
De vuelta en tu sub-cuenta de GoHighLevel:
- Ve a Automation → Workflows y crea un workflow nuevo.
- Como disparador (trigger), añade Contact Tag con la condición Tag added y una etiqueta dedicada, por ejemplo calligence. Así controlas exactamente qué contactos entran en la campaña: etiquetas un contacto, y Calligence le llama.
- Añade una acción de tipo Webhook, método POST, y pega en el campo URL la URL de tu campaña (paso 3). No necesitas configurar cabeceras ni cuerpo: el envío estándar del webhook ya incluye la información del contacto que Calligence necesita.
- Guarda y — esto es lo que más se olvida — publica el workflow (Publish). En borrador, el botón de prueba funciona, pero los contactos reales no disparan nada.
Deberías ver el workflow como Published en la lista de workflows.
Paso 5 — Prueba el circuito completo
La mejor prueba es una de verdad, contigo al otro lado del teléfono:
- Crea en GoHighLevel un contacto de prueba con tu propio móvil en formato internacional, por ejemplo
+34600111222. - Añádele la etiqueta del workflow (calligence). El workflow se dispara y envía el contacto a Calligence.
- En Calligence, abre la campaña: deberías ver el contacto como lead en unos segundos.
- Espera la llamada. Se realiza dentro de la ventana horaria configurada en tu organización y en la disponibilidad del lead — si estás fuera de ventana, quedará programada.
- Al terminar la llamada, abre el contacto en GoHighLevel: deberías ver la nota Calligence — resumen de la llamada: en su timeline y, si el lead quedó cerrado, la etiqueta
Calligence: …con el resultado.
Si algo no cuadra, GoHighLevel te dice mucho: abre el workflow y mira sus Execution Logs — ahí verás si el webhook se disparó y qué respondió.
Detener llamadas desde tu CRM
Si un lead se resuelve por otra vía — el comercial lo cerró por teléfono, la oportunidad se ganó o se cerró en GoHighLevel — puedes avisar a Calligence desde ese mismo workflow para que no siga llamando. Al recibir el aviso, Calligence:
- Deja de llamar a ese lead — cancela cualquier intento de llamada pendiente.
- Lo marca como "Trabajado fuera" — un estado neutro: no cuenta como éxito ni como fracaso. Los minutos ya consumidos en llamadas previas sí se facturan.
- Escribe una nota de confirmación en la ficha del contacto: "Calligence dejó de llamar a este lead." (si añades un motivo, también aparece ahí).
No confundas las dos URLs de tu campaña
La URL del paso 3 inicia llamadas; añadirle /stop-lead al final la convierte en la URL que las detiene. Pegar la URL equivocada en el workflow de "parar" haría que Calligence llamase al contacto en vez de dejar de hacerlo.
…/api/connectors/webhook/<token>
La del paso 3 — la que ya tienes en tu workflow de inscripción.
…/api/connectors/webhook/<token>/stop-lead
La misma URL, con /stop-lead al final.
De vuelta en tu sub-cuenta de GoHighLevel:
- Ve a Automation → Workflows y crea un workflow nuevo (o edita uno existente).
- Como disparador (trigger), usa el que marque para ti el cierre del lead — por ejemplo Opportunity Status Changed a Ganado o Cerrado.
- Añade una acción de tipo Webhook, método POST, y pega en el campo URL la URL para DETENER llamadas — tu URL de campaña (paso 3) con
/stop-leadal final. Nunca la URL de inscripción. - Opcional: añade un campo de Custom Data llamado
reasoncon el motivo del cierre, por ejemplo Cerrado por el comercial. Se muestra como Motivo en Calligence y en la nota del CRM — máximo 64 caracteres, si escribes más se recorta. - Guarda y publica el workflow (Publish). En borrador no se dispara con contactos reales.
El aviso es idempotente: repetirlo no hace nada nuevo. Si el lead ya había llegado a un estado final por su cuenta — éxito, no interesado o inválido — su estado no cambia; "Trabajado fuera" solo se aplica a leads que seguían activos.
Esto no es una lista de exclusión permanente: detiene la llamada dentro de la campaña actual. Si más adelante vuelves a subir el mismo contacto a una campaña nueva, Calligence le llamará de nuevo.
Solución de problemas
El webhook no se dispara
Casi siempre es una de dos: el workflow está en borrador (publícalo — el botón de prueba funciona en borrador, los contactos reales no), o el disparador no coincide (revisa que la etiqueta del trigger es exactamente la que añades al contacto).
El contacto no aparece como lead en Calligence
Comprueba que el contacto tiene teléfono — un contacto sin teléfono no puede recibir llamadas y se descarta. Añádele el teléfono y vuelve a disparar el workflow (quita la etiqueta y vuelve a ponerla). Si tampoco así entra, mira los Execution Logs del workflow en GoHighLevel.
El lead entra pero nunca recibe la llamada
Usa formato internacional (+34…) en el teléfono, y revisa la ventana horaria de llamadas de tu organización y el estado de la campaña — una campaña pausada acumula los leads y llama al reanudarla.
Errores 401 o 403 en los Execution Logs
El token no tiene los permisos necesarios o ha sido rotado. Crea un token nuevo en GoHighLevel (con View Contacts y Edit Contacts) y actualízalo en Calligence con Rotar token en Integraciones. Mientras el token esté mal, ninguna llamada de esa conexión sincroniza.
Reenvié el mismo contacto y no pasó nada
Hay una protección antiduplicados: reintentos del mismo contacto en menos de ~10 minutos se ignoran. Espera 10 minutos y vuelve a disparar el workflow.
"El proveedor ha rechazado estas credenciales" al crear la conexión
Calligence ha preguntado a GoHighLevel y ha recibido un no. Hay dos causas posibles y desde fuera no se distinguen, así que revisa las dos: el token (¿está bien copiado, sigue existiendo, tiene View Contacts y Edit Contacts?) y el Location ID (¿es el de la misma sub-cuenta donde creaste el token?). Un token de la sub-cuenta A con el Location ID de la sub-cuenta B es el fallo más habitual.
Creé el token en la cuenta equivocada
El token debe crearse en la sub-cuenta (location) donde viven tus contactos, no a nivel Agency. Si lo creaste en la agencia, créalo de nuevo dentro de la sub-cuenta y actualízalo en Calligence.
Creo que se ha filtrado la URL de mi campaña
Rótala: abre la campaña, pulsa Editar y usa el botón Rotar que hay junto a la URL. La URL anterior deja de funcionar de inmediato, así que pega la nueva en tu workflow de GoHighLevel en cuanto la tengas — mientras tanto, los contactos que envíe el CRM se descartan. Rotar la URL no toca tu conexión ni tu token de GoHighLevel: las demás campañas siguen funcionando igual.
¿Se crean contactos duplicados en GoHighLevel?
No. Calligence escribe notas y etiquetas sobre el contacto existente — nunca crea contactos en tu CRM, y reintentar un envío no duplica notas ni etiquetas.
Envié el aviso de parada y Calligence sigue llamando
Revisa, en este orden: que la URL del webhook termina en /stop-lead (no la URL de inscripción del paso 3); que el contacto ya existe como lead en Calligence — un aviso sobre un contacto que nunca entró no tiene nada que detener; y que la campaña tiene una conexión activa. Si las tres están bien, mira los Execution Logs del workflow en GoHighLevel para ver qué respondió Calligence.
¿Sigues atascado? Escríbenos y lo miramos contigo.