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