logo

LOVE Dental Care

GHL Integration Setup
Integración en vivo

GHL Voice AI → AM Clinic Hub

Configura el webhook de Go High Level para que cada cita agendada por Voice AI aparezca automáticamente en el dashboard en menos de 30 segundos.

Paciente llama
→
GHL Voice AI
→
Webhook POST
→
tables/citas
→
Badge ⚡ Dashboard

Cómo funciona el flujo completo

Sin Make, sin Zapier. GHL habla directamente con las tablas de Genspark.

📞
GHL Voice AI
Agenda la cita
🔗
Webhook HTTP
AppointmentCreate
🗄️
tables/citas
origen: "voice"
⚡
Dashboard
Badge en 30s
Tu URL de producción — Cuando publiques en la pestaña Publish, obtendrás una URL tipo https://tu-proyecto.genspark.site. Esa URL base es la que usas abajo. El endpoint completo del webhook es: /tables/citas
1

Crear el Calendar en GHL

El Voice AI necesita un calendar para saber qué horarios ofrecer a los pacientes.

En Go High Level
Ruta en GHL
Calendars → + New Calendar → Simple Calendar
Configuración del Calendar
1
Nombre del calendar

Escribe: LOVE Dental Care — Citas

2
Duración de cita

Selecciona 60 minutos (o el tiempo promedio de consulta)

3
Horario disponible

Lunes a Viernes: 09:00 – 19:00 · Sábado: 09:00 – 14:00 · Domingo: Cerrado

4
Zona horaria

Selecciona America/Monterrey (UTC-6, Nuevo Laredo)

5
Guardar y copiar Calendar ID

Lo necesitarás al configurar el Voice AI en el siguiente paso.

2

Activar Voice AI en GHL

Configura el AI Employee para que atienda llamadas y agende en el calendar creado.

En Go High Level
Ruta en GHL
AI → AI Employees → + Create Employee → Voice
Configuración del Voice AI
1
Nombre del agente

Sofia — Asistente LOVE Dental Care

2
Instrucciones del sistema (System Prompt)

Copia y pega el prompt de abajo — define cómo se presenta y qué puede hacer.

3
Booking → Calendar

En la sección de booking, selecciona LOVE Dental Care — Citas

4
Número de teléfono

Asigna el número de GHL a este Voice AI en Phone Numbers → Assign AI

System Prompt sugerido para el Voice AI
system-prompt.txt
Eres Sofía, la asistente virtual de LOVE Dental Care,
una clínica dental especializada en Nuevo Laredo, Tamaulipas.

Tu objetivo principal es agendar citas para los pacientes.

PERSONALIDAD:
- Habla en español mexicano, cálido y profesional
- Eres amable, paciente y empática
- Siempre termina con "¡Que tengas un excelente día! 🩷"

SERVICIOS QUE OFRECEMOS:
- Diseño de Sonrisa
- Ortodoncia (brackets y alineadores)
- Blanqueamiento Dental
- Implantes Dentales
- Limpieza Dental Profunda
- Carillas Estéticas
- Evaluación gratuita (para nuevos pacientes)

HORARIOS:
- Lunes a Viernes: 9:00 AM – 7:00 PM
- Sábados: 9:00 AM – 2:00 PM
- Domingos: Cerrado

PARA AGENDAR necesitas preguntar:
1. Nombre completo del paciente
2. Número de WhatsApp
3. ¿Qué servicio busca? (si no sabe, ofrece evaluación gratuita)
4. Fecha y hora preferida

IMPORTANTE: Si el paciente no sabe qué servicio necesita,
siempre ofrece la evaluación gratuita sin costo.
3

Configurar el Webhook en GHL

Este es el paso más importante — conecta GHL directamente con la tabla de citas.

En Go High Level
Ruta en GHL
Settings → Integrations → Webhooks → + Add Webhook
Valores a ingresar
1
Webhook Name

LOVE Dental → Citas Dashboard

2
Webhook URL — tu endpoint de producción
URL del webhook
https://TU-PROYECTO.genspark.site/tables/citas

⚠️  Reemplaza TU-PROYECTO con el nombre real
    de tu proyecto publicado (pestaña Publish)
3
Method

POST

4
Events — activa SOLO estos:

✅ AppointmentCreate   ✅ AppointmentUpdate (opcional, para reprogramaciones)

5
Headers (agregar 1 header)

Key: Content-Type   Value: application/json

Importante: GHL envía su propio formato de JSON. En el siguiente paso configuramos el Custom Body para que el formato coincida exactamente con la tabla citas.
4

Custom Body — Field Mapping

En el webhook activa "Custom Body" y pega este JSON. GHL reemplazará las variables automáticamente.

En Go High Level — dentro del webhook
Mapeo de campos GHL → tabla citas
Campo en tabla Tipo Valor / Variable GHL Descripción
clinica_id Fijo clinica-love-001 Siempre el mismo
paciente_nombre Variable {{contact.name}} Nombre completo del contacto
fecha Variable {{appointment.startTime}} Formato YYYY-MM-DD
hora Variable {{appointment.startTime}} Formato HH:MM
hora_fin Variable {{appointment.endTime}} Formato HH:MM
servicio Variable {{appointment.title}} Nombre del servicio en GHL
estado Fijo pendiente Siempre entra como pendiente
origen Fijo voice Activa el badge ⚡ en dashboard
ghl_appointment_id Variable {{appointment.id}} ID único en GHL
notas Variable {{contact.phone}} Teléfono + notas adicionales
Custom Body — Copia y pega en GHL
webhook-body.json
{
  "clinica_id":          "clinica-love-001",
  "paciente_nombre":     "{{contact.name}}",
  "paciente_id":         "{{contact.id}}",
  "fecha":               "{{appointment.startTime | date: 'YYYY-MM-DD'}}",
  "hora":                "{{appointment.startTime | date: 'HH:mm'}}",
  "hora_fin":            "{{appointment.endTime | date: 'HH:mm'}}",
  "servicio":            "{{appointment.title}}",
  "estado":              "pendiente",
  "origen":              "voice",
  "doctor_nombre":       "Dra. [Nombre Apellido]",
  "ghl_appointment_id": "{{appointment.id}}",
  "notas":               "⚡ Voice AI · {{contact.phone}}{{contact.email | prepend: ' · '}}",
  "precio":              0
}
El campo origen: "voice" es el que hace que el dashboard muestre el badge ⚡ y active el indicador ● EN VIVO. No lo cambies.

Tester en vivo

Simula un webhook de GHL y verifica que aparece en el dashboard en 30 segundos.

Prueba ahora mismo
Enviar cita de prueba → tables/citas
Completa los datos y haz clic en Enviar. La cita aparecerá en el dashboard con el badge ⚡ Voice AI.
Después de enviar, ve al Dashboard → sección Hoy. En máximo 30 segundos aparecerá la cita con el badge ⚡ Voice.

Test con cURL (alternativa)

Si prefieres probar desde terminal o Postman.

terminal / bash
curl -X POST https://TU-PROYECTO.genspark.site/tables/citas \
  -H "Content-Type: application/json" \
  -d '{
    "clinica_id":          "clinica-love-001",
    "paciente_nombre":     "Test cURL Voice AI",
    "fecha":               "2026-05-22",
    "hora":                "10:00",
    "hora_fin":            "11:00",
    "servicio":            "Evaluación Gratuita",
    "estado":              "pendiente",
    "origen":              "voice",
    "ghl_appointment_id":  "ghl-curl-test-001",
    "notas":               "⚡ Prueba manual con cURL",
    "precio":              0
  }'

Schema completo — tabla citas

Referencia de todos los campos disponibles en la tabla.

tables/citas — schema
{
  "clinica_id":          "text",   // "clinica-love-001" — SIEMPRE IGUAL
  "paciente_id":         "text",   // ID del paciente (puede estar vacío)
  "paciente_nombre":     "text",   // "María González" — REQUERIDO
  "doctor_id":           "text",   // "doc-001" (opcional)
  "doctor_nombre":       "text",   // Nombre del doctor
  "fecha":               "text",   // "2026-05-22" — REQUERIDO
  "hora":                "text",   // "10:00" — REQUERIDO
  "hora_fin":            "text",   // "11:00"
  "servicio":            "text",   // "Diseño de Sonrisa" — REQUERIDO
  "estado":              "text",   // "pendiente" | "confirmada" | "cancelada"
  "origen":              "text",   // "voice" ← activa el badge ⚡
  "ghl_appointment_id": "text",   // ID único de GHL
  "notas":               "text",   // Notas / teléfono
  "precio":              0         // number, en MXN
}

Checklist de integración

Marca cada paso conforme lo completes. Se guarda automáticamente.

Progreso de integración 0 / 8 completados