La reserva de citas en WordPress
sin franjas fantasma.
OW Agenda gestiona la reserva online, la validación, los recordatorios y la agenda diaria del profesional. Cada solicitud de un visitante debe confirmarse mediante un enlace enviado a su dirección de email antes de ocupar una plaza: un bot nunca llega a tu agenda. Gratis, GPL, sin versión Pro.
¿Por qué otro plugin de citas más?
En la web de una consulta, un formulario de reserva conectado sin salvaguardas genera más trabajo del que ahorra. Cualquier bot rellena una agenda pública, y la persona que descuelga el teléfono se pasa el día separando las citas reales de las solicitudes que nunca existieron.
Los plugins consolidados funcionan, pero todos están construidos sobre el mismo modelo: una versión gratuita capada a propósito — un solo empleado, un solo lugar, un puñado de servicios — y una suscripción anual para recuperar el uso normal del software. Para un profesional que trabaja solo, lo que se paga es sobre todo el derecho a salir de la demo.
OW Agenda parte de una consulta real y de tres restricciones: una solicitud no existe hasta que se confirma por email, dos visitantes no pueden reservar la misma franja, y la agenda debe poder manejarse de pie entre dos pacientes, desde un teléfono. El resto — directorio de clientes, invitaciones, ICS, recordatorios — se deriva de esas tres reglas.
Sin validación por email, un formulario abierto es una agenda que los bots rellenan gratis. Aquí la solicitud queda pendiente, retiene la franja 45 minutos y desaparece sola si nadie llega a hacer clic en el enlace.
Dos visitantes sobre la misma franja con tres segundos de diferencia: una simple transacción MySQL no coloca ningún bloqueo de fila y registra las dos. OW Agenda serializa la reserva con un bloqueo con nombre — el segundo recibe un mensaje, no un duplicado.
Entre dos pacientes, nadie abre wp-admin en un teléfono. La gestión se hace en una página de tu web protegida por login: vista del día, solicitudes pendientes, reprogramación, estados hecho / no presentado, en unos pocos toques con el pulgar.
Lo que cambia concretamente
Sin eslóganes. Estas son las decisiones técnicas que distinguen este producto.
El shortcode [ow_agenda] muestra los 14 próximos días disponibles y después las horas libres: elección del día, de la franja, formulario breve (nombre, teléfono, email, mensaje) y casilla de consentimiento RGPD. Tú ajustas la granularidad, la duración de la consulta, el margen entre dos citas, la antelación mínima y el horizonte de reserva. Cualquier evento de tu agenda — reserva web, cita telefónica anotada a mano, franja bloqueada — retira su tramo de las disponibilidades.
La solicitud de un visitante sigue sin verificar mientras no se hace clic en el enlace recibido por email. Retiene la franja 45 minutos y después se purga automáticamente. Antes de eso, el campo trampa y la marca de tiempo del formulario son obligatorios — omitirlos ya no desactiva nada —, la cuota horaria se cuenta por dirección IPv4 y por prefijo /64 en IPv6, y un tope limita las solicitudes sin validar en un mismo día.
El email de notificación contiene dos botones, Confirmar y Rechazar, cuyos enlaces van firmados en HMAC-SHA256: decides con un toque, sin abrir WordPress ni iniciar sesión. La validación manual es el modo recomendado; la confirmación automática sigue disponible para las actividades que no tienen nada que arbitrar.
El shortcode [ow_agenda_admin] crea una página «Agenda» en tu web, protegida por login y por una capacidad dedicada: vista del día, solicitudes pendientes, alta de una cita concertada por teléfono, bloqueo de franjas, reprogramación, estados hecho y no presentado. Añadida a la pantalla de inicio de tu teléfono, se comporta como una aplicación.
Búsqueda, creación, edición y borrado de fichas de cliente, alimentadas automáticamente por las citas validadas. Para una sesión de seguimiento, un enlace privado nominativo deja que el propio cliente elija su fecha, sobre un servicio y una duración que tú has fijado: la invitación caduca, se consume una sola vez y vuelve a quedar disponible si la cita se anula.
Emails HTML cuidados en cada etapa, con un archivo ICS adjunto: tu cliente añade la cita al calendario de su teléfono con un gesto, una reprogramación actualiza la entrada y una anulación la elimina. El recordatorio de la víspera sale en una ventana deslizante de 12 a 36 horas y se recupera en la siguiente ejecución; la tarea horaria se reprograma sola si desaparece.
Frente a las alternativas
Datos verificables. Marcar solo lo que existe realmente en la competencia.
| Criterio | OW Agenda | Amelia | Bookly | Simply Schedule Appointments |
|---|---|---|---|---|
| Modelo de negocio | Gratis, GPL-2.0 | Freemium (Pro de pago) | Freemium (Pro de pago) | Freemium (Pro de pago) |
| Límites de la versión gratuita | Ninguno: todo está incluido | Lite: 1 empleado, 1 lugar | 5 servicios, 1 empleado | Funciones básicas |
| Clave de licencia que activar | Ninguna | Para la versión Pro | Para la versión Pro | Para la versión Pro |
| Doble opt-in por email antes de ocupar la franja | Activado por defecto | No anunciado | No anunciado | No anunciado |
| Confirmar / Rechazar desde el email, sin iniciar sesión | Enlaces firmados HMAC-SHA256 | Sí | No anunciado | No anunciado |
| Archivo ICS adjunto a los emails del cliente | REQUEST, actualizaciones y CANCEL | |||
| Anonimización automática de las citas pasadas | Incluida, plazo configurable | No anunciado | No anunciado | No anunciado |
| Gestión del día a día | Página de la web, mobile-first | Back-office de WordPress | Back-office de WordPress | Back-office de WordPress |
Tres formas de integrar un formulario
Sin page builder propietario impuesto. Elige el enfoque que encaja con tu stack.
[ow_agenda]
// La page « Prendre rendez-vous » est créée automatiquement à l'activation.
// Le même shortcode sert aux invitations de séance : le lien privé envoyé
// à un client existant pointe vers cette page avec son jeton en paramètre.
//
// https://ton-site.be/prendre-rendez-vous/?owag_invite=<jeton>Dudas razonables, respuestas directas
Sí. Todo lo que figura en tu agenda ocupa el tiempo que necesita: una reserva web, una cita anotada a mano después de una llamada, un tramo bloqueado para una reunión. El cálculo de disponibilidades parte de tu horario de apertura, resta esos tramos y aplica la duración del servicio, el margen entre dos citas, la antelación mínima antes de reservar y el horizonte máximo. Una franja mostrada es una franja realmente libre.
Con una solicitud que no existe mientras no se confirma. El visitante recibe un enlace de validación; si no hace clic, su solicitud retiene la franja 45 minutos y después se purga. A eso se suman un campo trampa y una marca de tiempo ahora obligatorios — un envío que los omite se rechaza en lugar de pasar sin control —, una cuota horaria por dirección IP (agregada por prefijo /64 en IPv6, donde una sola máquina dispondría si no de miles de millones de direcciones) y un tope de solicitudes sin validar por día, para que un mismo visitante no pueda congelar toda tu agenda.
Solo prospera una reserva. La sección crítica se serializa con un bloqueo con nombre de MySQL: la comprobación de disponibilidad y la escritura se hacen bajo bloqueo, algo que una simple transacción no garantizaba — una lectura sin más no coloca ningún bloqueo de fila en REPEATABLE READ. El nombre del bloqueo se deriva de la base de datos y del prefijo de tablas, para que dos webs de un mismo alojamiento compartido no se bloqueen mutuamente. El segundo visitante recibe una invitación a elegir otra franja.
Sí, con el enlace que aparece en sus emails, hasta el plazo de preaviso que tú fijes (24 horas por defecto); a partir de ahí, la página le invita a llamarte. La anulación envía un archivo ICS de cancelación que retira el evento de su calendario, y si la cita venía de una invitación privada, esta vuelve a quedar disponible en lugar de darse por consumida para siempre.
Abre la página «Agenda» de tu web en el teléfono, inicia sesión y usa «Añadir a la pantalla de inicio». La interfaz se comporta entonces como una aplicación: día en curso, solicitudes por validar, alta de una cita telefónica, bloqueo de una franja, reprogramación, estados hecho y no presentado. Sin instalación, sin tienda de aplicaciones y sin que nada salga de tu alojamiento.
Sí, y es enteramente traducible. Desde la 1.3.1, todas las cadenas visibles — ajustes, páginas de reserva y de anulación, mensajes de la API, plantillas de email e interfaz JavaScript — pasan por el dominio de traducción ow-agenda, con el inglés como idioma de origen. La plantilla languages/ow-agenda.pot se incluye para los traductores, y ya se ha producido y enviado a translate.wordpress.org una traducción francesa completa. El español puede añadirse por esa misma vía.
Sin versión Pro, sin clave de licencia.
OW Agenda se publica bajo licencia GPL-2.0. Todo lo que describe esta página está en el .zip que te descargas: ninguna función reservada, ninguna suscripción, ningún límite en el número de citas, de empleados o de servicios.
- Todo está incluido: reserva online, doble opt-in, invitaciones de sesión, directorio de clientes, emails con ICS y recordatorios.
- El .zip se descarga en optionweb.dev. El plugin no está publicado en wordpress.org: instálalo desde Plugins → Añadir nuevo → Subir plugin.
- Ningún servicio de terceros, ninguna verificación de licencia, ningún rastreador: los datos de contacto de tus clientes se quedan en tu alojamiento.
- El código es GPL-2.0, legible y modificable: puedes auditarlo, adaptarlo y hacerlo evolucionar, con nosotros o sin nosotros.