Saltar al contenido principal

Tu CRM de clientes

/app/clientes centraliza todos los clientes de tu workspace, sin duplicados, con métricas de comportamiento y timeline.

Listado consolidado por workspace

El listado muestra todos los clientes independientemente de en qué local de tu workspace hayan reservado. RestaPro consolida automáticamente: si Juan reservó en Bar A y luego en Bar B, sigue siendo el mismo cliente.

Cada tarjeta muestra:

  • Nombre + email/teléfono principal
  • Total de reservas (en cualquier local)
  • Última reserva
  • Indicador "Revisar" si hay conflictos de identidad

Orden por defecto: por última actividad descendente.

Métricas por cliente

RestaPro calcula automáticamente:

  • Total reservas
  • Confirmadas / completadas / canceladas / no-shows
  • Restaurantes visitados (cuenta de locales distintos del workspace)
  • Última reserva (timestamp)

Búsqueda flexible

El buscador (Buscar cliente) acepta nombre, email o teléfono — incluso parcial:

  • "Juan" → encuentra Juan García, Juanita Martín…
  • "gmail" → todos los emails de Gmail
  • "600" → encuentra +34 600 123 456, +34 600 987 654
  • "34 600" → mismo conjunto (RestaPro normaliza dígitos)
  • "+34" → todos los españoles

El normalizador de teléfono guarda solo dígitos. Cuando buscas, RestaPro extrae los dígitos de tu query y filtra por substring contra el campo normalizado. Funciona con o sin espacios, guiones, paréntesis o +.

Búsqueda con debounce de 300 ms — actualiza al instante.

Filtro por restaurante

Dropdown "Todos los locales" para filtrar el listado por uno solo. Combinable con la búsqueda.

Identidades múltiples por cliente

Un cliente puede tener varios teléfonos y emails:

  • Juan García: juan@gmail.com, juan@empresa.com, +34 600..., +34 91 234...

Al entrar una reserva con identidad nueva, RestaPro hace fuzzy matching: si encuentra coincidencia probable con un cliente existente, vincula automáticamente.

Indicador "Requiere revisión"

Aparece cuando RestaPro tiene dudas: detectó identidades parecidas pero no idénticas. Tu equipo revisa manualmente y confirma o separa.

Ficha individual

Click en un cliente → panel lateral con:

  • Cabecera: nombre, "Desde [fecha]", emails y teléfonos vinculados.
  • Notas internas: textarea privado del equipo.
  • Reservas: últimas 8 (si hay más, contador). Cada una con local, fecha, hora, party size, estado, referencia.
  • Timeline: eventos de reservas + eventos de marketing (vistas, clicks, campañas).

Timeline

Combina dos fuentes:

  • Reservation events: cambios de estado (confirmed, arrived, completed, cancelled).
  • Marketing events: vistas a /c/:slug, clicks en campañas, parámetros UTM.

Orden cronológico descendente. Permite ver el customer journey completo: primer contacto → primera reserva → segunda visita → click en email → tercera reserva.

GDPR: borrar un cliente

Solo admins. Edge function customer-gdpr ejecuta el RPC gdpr_delete_customer:

  1. Anonimiza nombre, email y teléfono en reservations (mantiene la fila para auditoría/contabilidad).
  2. Anonimiza email_logs, email_queue, marketing_campaign_sends.
  3. Borra todas las identidades (customer_identities).
  4. Borra el cliente.
  5. Registra el borrado en activity_log para auditoría legal.

El cliente aparece como "Eliminado" en reservas pasadas.

Recibir solicitudes GDPR

Si un cliente te escribe pidiendo "borren mis datos":

  1. Verifica que es realmente él (email coincide).
  2. Abre su ficha en /app/clientes.
  3. Acción Borrar (GDPR).
  4. Confirma — es irreversible.
  5. Comunícale por email que se ha procesado.

Plazo legal de respuesta: 30 días.

ESENCA