Webhooks de Integración

Dos endpoints para conectar GoHighLevel directamente — sin Make

Flujo Completo

1. Cliente agenda

GHL envía datos de la cita

POST /api/webhook/lead

Se crea el lead (solo agenda)

2. Cliente llena formulario

GHL envía perfil + respuestas

POST /api/webhook/score

Se enriquece + IA califica (1-4)

Webhook 1 — Agenda Nueva
Paso 1

Configura este endpoint en GHL para cuando alguien agenda una demo o intro. Solo recibe los datos básicos de la cita.

POSThttps://sacacrm-fjutj9pt.manus.space/api/webhook/lead
CampoTipoDescripción
NombrestringNombre completo del lead {{contact.name}}
TelefonostringTeléfono con código de país {{contact.phone}}
CorreostringEmail del lead (clave para vincular con scoring) {{contact.email}}
Fecha_AgendastringFecha y hora de la cita {{appointment.start_time}}
Link_CRMstringURL del contacto en GHL
FacturacionstringFacturación del lead (monto en USD)
Ejemplo de Payload
{
  "Nombre": "Dr. María García",
  "Correo": "[email protected]",
  "Telefono": "+52 55 1234 5678",
  "Fecha_Agenda": "2026-02-22T10:00:00",
  "Link_CRM": "https://clientes.sacamedi.com/v2/location/5h.../contacts/abc123",
  "Facturacion": "15000"
}
Respuesta:{ success: true, leadId: 42, message: "Lead created successfully" }
Webhook 2 — Formulario de Scoring
Paso 2

Configura este endpoint en GHL para cuando el cliente envía el formulario de calificación. Recibe toda la información de perfil (Instagram, país, rubro, etc.) junto con las respuestas P1-P6. El sistema busca al lead por correo o teléfono, lo enriquece con los datos de perfil, y ejecuta el scoring con IA.

POSThttps://sacacrm-fjutj9pt.manus.space/api/webhook/score
CampoTipoDescripción
correostringEmail para vincular con el lead de la agenda
telefonostringTeléfono alternativo para vincular
instagramstringHandle de Instagram de la clínica
paisstringPaís del lead
rubrostringEspecialidad de la clínica
origenenumADS | REFERIDO | ORGANICO
tipoenumDEMO | INTRO
p1_frustracionstringRespuesta P1: Frustración con marketing actual
p2_marketing_previostringRespuesta P2: Experiencia con marketing previo
p3_urgenciastringRespuesta P3: Plazo para resultados
p4_tiempo_operandostringRespuesta P4: Tiempo operando la clínica
p5_tratamientosstringRespuesta P5: Tratamientos de mayor valor
p6_impedimentostringRespuesta P6: Impedimento para implementar
score_overridenumberScore manual 1-4 (omite IA si se envía)
Azul= campos de vinculaciónVerde= datos de perfilPúrpura= preguntas de scoring
Ejemplo de Payload
{
  "correo": "[email protected]",
  "telefono": "+52 55 1234 5678",
  "instagram": "clinicaejemplo",
  "pais": "México",
  "rubro": "Odontología",
  "origen": "ADS",
  "tipo": "DEMO",
  "p1_frustracion": "Estoy cansado de no ver resultados con mi marketing actual",
  "p2_marketing_previo": "Invertí $5,000 USD y perdí dinero sin resultados",
  "p3_urgencia": "YA (mi negocio depende de esto)",
  "p4_tiempo_operando": "Más de 5 años",
  "p5_tratamientos": "Implantes dentales, carillas de porcelana",
  "p6_impedimento": "Nada, tengo autoridad y recursos"
}
Respuesta:{ success: true, leadId: 42, score: 4, scoreLabel: "HOT" }
Notas Importantes
!

El correo o teléfono del Webhook 2 debe coincidir con el del Webhook 1 para vincular correctamente el scoring al lead existente.

Si el Webhook 2 llega antes que el Webhook 1 (o sin lead previo), el sistema crea el lead automáticamente para no perder datos.

AI

El scoring con IA se ejecuta automáticamente con las respuestas P1-P6. Si envías score_override, se usa ese valor y se omite la IA.

+

El Webhook 2 también enriquece el lead con los datos de perfil (Instagram, país, rubro, origen, tipo) que no vienen en la agenda.

Health Check
GEThttps://sacacrm-fjutj9pt.manus.space/api/webhook/health