Automatizaciones
Automatizaciones se contrata por separado. Si tu plan no lo incluye, la sección aparece en el menú pero muestra un aviso de "no incluido en tu plan" al abrirla. Contactá a tu proveedor para habilitarlo.
¿Para qué sirve?
Programa tareas que se ejecutan solas, sin que tengas que estar pendiente:
- Recordatorios: "todos los días a las 9am, avisa a los firmantes que no firmaron todavía".
- Cierres periódicos: "el último día del mes, cierra la contabilidad del período".
- Reportes automáticos: "cada lunes a las 8am, envía el informe semanal por correo".
- Trabajos pesados en segundo plano: "manda 500 correos sin bloquear la pantalla".
- Limpieza y mantenimiento: "cada noche a las 3am, borra registros temporales que ya no sirven".
Los plugins instalados publican qué pueden automatizar. Tú eliges desde el panel cuándo se ejecuta cada acción, con qué frecuencia, y ves en la misma pantalla el estado de cada tarea.
Abrir la sección
En el menú lateral, entra a Automatizaciones. La pantalla tiene hasta cinco partes:
- Cinco tarjetas de estado en la parte de arriba (Pendientes, Ejecutándose, Completadas, Reintentando, Muertas). Un vistazo rápido para saber si todo está en orden.
- Card "Historial" (colapsable, cerrada por defecto): tres gráficos que te muestran cómo viene la actividad. Ver más abajo.
- Card "Dead letters" (sólo aparece cuando hay al menos una corrida muerta): el cementerio de tareas que agotaron sus reintentos, con acciones para reintentar o borrar en bloque. Ver más abajo.
- Tabla de "Tareas programadas": las tareas que ya configuraste, con su cron, la última corrida y la próxima. Incluye botones para editar, ejecutar, pausar y eliminar cada una.
- Tabla de "Historial de ejecuciones": las últimas 50 corridas de cualquier tarea, con estado, duración y un botón para ver el detalle.
Ver la salud del sistema con gráficos
Abre la card Historial. Adentro hay tres pestañas:
- Últimas 24 horas: barras apiladas por hora. Verde = corridas completadas, rojo = fallidas o muertas, naranja = reintentando. Si ves una columna alta y roja, mirala en la tabla de abajo con el filtro por estado.
- Tasa de error (7d): porcentaje diario de corridas que terminaron mal, sobre el total de finalizadas. Un día sin actividad se dibuja como 0; pasa el mouse sobre el punto para ver el total real.
- Duración por tarea (7d): segundos promedio de las corridas exitosas de cada tarea, por día. Muestra las 5 tareas con más ejecuciones. Si alguna empieza a tardar mucho más de lo normal, la ves acá.
Los gráficos respetan el filtro por plugin de abajo, así que puedes ver el estado de un plugin específico sin ruido.
Atender las tareas muertas
Cuando una corrida falla varias veces seguidas, el sistema la marca como dead letter ("muerta") y deja de reintentarla — asume que hay algo que necesitas mirar. La card Dead letters aparece automáticamente si hay al menos una, con un contador rojo al lado del título.
Adentro tienes filtros por plugin y por antigüedad ("más de 1 hora", "más de 1 día", "más de 1 semana"), y por cada fila puedes:
- Reintentar (icono de flecha circular): la corrida vuelve a la cola con
attempts=0y sin rastro de la falla anterior. Se ejecuta en el próximo tick. - Ver detalle (icono de ojo): abre el mismo diálogo que la tabla de historial, con el mensaje de error completo, la traza y todos los tiempos.
Y arriba a la derecha, dos acciones en bloque que respetan el filtro activo:
- Reintentar todo: reencola hasta 500 dead letters de una. Si hay más, corre la acción de nuevo (te aviso en el mensaje si quedó capado).
- Borrar todo: elimina definitivamente hasta 500 filas. Te pido confirmación porque no se puede deshacer.
Editar una tarea programada
En la tabla de "Tareas programadas", botón del lápiz. Se abre el mismo diálogo de "Nueva tarea" con el cron y la config actual precargados. La acción del catálogo no se puede cambiar (una acción distinta es una tarea distinta — la borras y creas una nueva); lo que sí puedes es ajustar el cron o modificar la config avanzada. Guardar cambios aplica la nueva schedule en caliente.
Cómo se usa día a día
Programar una tarea nueva
-
Clic en Nueva tarea (arriba a la derecha).
-
En el diálogo, elige una acción del catálogo. El desplegable las agrupa por plugin — por ejemplo "firma-electronica: Recordar firmas pendientes" o "automations: Limpiar historial de ejecuciones".
El catálogo se llenóHasta ahora el desplegable mostraba 7 acciones. Faltaban catorce que sus módulos ya sabían hacer pero que el catálogo no alcanzaba a ver: los avisos de stock bajo mínimo y de productos por vencer, las diferencias de caja y los turnos sin cerrar, la previsión de insumos de Reservas, las órdenes preventivas de Mantención, los cobros sin reclamar de Mercado Pago y los faltantes de Producción. Si echabas de menos alguna, ya está ahí.
Una que conviene programar«Reintentar los correos que fallaron» vuelve a mandar lo que quedó en Configuración → Correo porque el servidor no respondió, y sirve para todos los módulos a la vez. Cada 15 minutos (
*/15 * * * *) es una buena cadencia: el primer reintento espera 5 minutos de todas formas, así que más seguido no adelanta nada. Si no la programas también se reintenta, pero sólo mientras alguien tenga el panel abierto. -
Escribe cuándo debe ejecutarse en el formato cron de cinco campos (
minuto hora día-mes mes día-semana). Ejemplos:* * * * *— cada minuto.0 9 * * *— todos los días a las 9:00 am.*/15 * * * *— cada 15 minutos.0 8 * * 1— lunes a las 8:00 am.0 3 1 * *— el primer día del mes a las 3:00 am. Debajo del campo, en cuanto termines de escribir, aparece "Próximas 3 ejecuciones" con las fechas y horas exactas para que confirmes que lo escribiste como querías.
-
Si necesitas ajustar reintentos o timeout, expande Config avanzada y escribe un JSON como
{"retry": {"max_attempts": 3}}. Casi nunca es necesario. -
Crear tarea. Aparece en la tabla y se ejecuta en la próxima ventana que le corresponda.
Ejecutar una tarea ya, sin esperar
En la fila de la tarea, botón Ejecutar (icono de play). Encola una corrida para el próximo tick del worker — como máximo se ejecuta en un minuto.
Si necesitas ejecutar todo lo pendiente ahora mismo (útil cuando estás probando algo), usa Ejecutar tick ahora arriba a la derecha. Corre un ciclo completo del worker de forma sincrónica.
Pausar y reanudar
Botón Pausar en la fila. La tarea queda registrada pero no se ejecuta. Cuando quieras volverla a activar, botón Reanudar en la misma fila.
Eliminar una tarea
Botón rojo con icono de basura. Al confirmar, la tarea sale de la tabla y las corridas pendientes que tenía se cancelan. Si más adelante la quieres de vuelta, la puedes volver a crear desde el catálogo — el proveedor del plugin no la eliminó, solo tú la sacaste del calendario.
Ver el detalle de una corrida que falló
En la tabla de "Historial de ejecuciones", botón del ojo. Se abre un diálogo con: el handler que se invocó, el payload que recibió, la salida (si tuvo éxito), el error completo con stack trace (si falló), y todos los tiempos (programado, iniciado, terminado).
Reintentar una tarea que quedó "muerta"
Cuando una corrida falla cinco veces seguidas, el sistema la marca como dead_letter y no la reintenta más — asume que hay un problema que necesitas mirar. Cuando lo arregles, en su fila del historial aparece un botón amarillo de reintentar. Un clic la vuelve a la cola con el estado limpio.
Quién dispara las tareas
El panel administra las tareas, pero algo tiene que activar el motor cada pocos minutos. Sin eso la cola se acumula y no se procesa, y la pantalla sigue mostrando las tareas como programadas.
La propia sección te lo dice y te entrega lo que necesitas: al abrir Automatizaciones verás la tarjeta «Quién dispara las tareas» con las dos opciones listas para copiar.
Opción 1 — La tarea del servidor (recomendada)
Es la de siempre y la más fiable. Sigue las instrucciones de más abajo.
Opción 2 — Desde afuera, por dirección web
Para hospedajes que no ofrecen tareas programadas. El sistema genera una dirección secreta; dásela a cualquier servicio que la visite cada pocos minutos —el monitor de tu hosting, un servicio gratuito de cron por web, otra máquina— y las tareas empiezan a correr.
Quien la tenga puede hacer correr tus tareas. No la publiques. Si crees que alguien más la conoce, el botón de al lado genera una nueva y la anterior deja de servir en el acto.
Configurar la tarea del servidor
En cPanel:
-
Entra a Cron Jobs en el panel de cPanel.
-
En "Common Settings" elige "Once per minute" (equivale a
* * * * *). -
En "Command" pega:
/usr/local/bin/php /home/USUARIO/public_html/plugins/automations/tools/worker.php --tick >> /home/USUARIO/logs/automations.log 2>&1Reemplaza
USUARIOpor tu usuario de cPanel. Si tu path de PHP es distinto (algunos hostings usan/opt/cpanel/ea-php82/root/usr/bin/php), pregunta al soporte del hosting o prueba conwhich phpdesde la terminal. -
Guarda. Listo — el plugin empieza a procesar tareas por su cuenta.
El panel deja programar tareas y ver su historial, pero la ejecución la dispara
algo de afuera. Si te saltas este paso, las tareas se acumulan en estado
pending sin ejecutarse.
Para comprobar que el motor funciona, usa Ejecutar tick ahora en el panel: si esa acción procesa cosas, lo único que falta es quien la llame sola.
Vigilar que la instalación responde
El sistema publica una dirección que contesta si está viva:
https://tu-sitio.cl/health.php
Responde 200 cuando puede atender y 503 cuando no —por ejemplo si la base de
datos se cayó—, que es exactamente lo que leen los servicios de monitoreo
(UptimeRobot y similares). A un desconocido no le cuenta nada más: ni versión, ni
detalles del servidor.
Si le agregas ?token= con la misma dirección secreta de las tareas, responde
además con el detalle: versión, PHP y si quedaron cambios de base de datos
pendientes.
Se conecta con
Cualquier plugin instalado puede publicar acciones para que las programes desde acá. Los que ya lo hacen o están cerca de hacerlo:
- Firma electrónica — recordatorios diarios a firmantes pendientes, limpieza de códigos OTP vencidos.
- Contabilidad — próximamente: cierres mensuales, envío de reportes al SII.
- Notificaciones — próximamente: envíos masivos en segundo plano.
Cuando desinstalas un plugin que publicaba acciones, esas acciones desaparecen del catálogo. Si tenías tareas programadas basadas en ellas, se marcan con una insignia "Handler no disponible" para que sepas por qué dejaron de funcionar.
Preguntas frecuentes
¿Cuánto tarda una tarea en ejecutarse desde que se encola? Como máximo un minuto (hasta que el cron dispare el próximo tick). Si necesitas ejecución inmediata, usa Ejecutar tick ahora en el panel.
¿Qué pasa si el cron no está configurado?
Nada se ejecuta. Las tareas se acumulan en la cola con estado pending. Cuando configures el cron, empiezan a procesarse en orden.
¿Se pierde algo si el hosting se cae? No. Todas las tareas viven en la base de datos. Cuando el hosting vuelva, el próximo cron toma lo que quedó pendiente.
¿Cuántas tareas puede procesar por minuto? Depende del tiempo de cada tarea. El worker procesa una a la vez y corta después de 50 segundos para no chocar con el próximo minuto. Si tienes 20 tareas de 5 segundos, entran todas en un tick. Si tienes una tarea de 45 segundos, solo esa entra por tick.
¿Qué pasa con las tareas viejas? ¿La base de datos crece sin límite?
No. Todos los días a las 3:17 am se ejecuta una limpieza automática que borra las corridas terminadas hace más de 30 días. Se conservan siempre: el último éxito de cada tarea recurrente (para poder ver "cuándo fue la última vez que anduvo") y todos los errores permanentes (dead_letter) por si los necesitas revisar.
¿Puedo cambiar el horario de la limpieza o cuántos días conserva?
Sí, editando el config.php del plugin (sección retention). Ver documentación técnica interna.
Escribí un cron que no corresponde a ninguna fecha real (por ejemplo "30 de febrero"). ¿Qué pasa? El panel lo detecta y muestra "Cron inválido" o "Cron sin ejecuciones" en el preview antes de que crees la tarea. Si igual llegara a guardarse, el worker la pausa sola en el primer tick y la deja con el estado visible para que la corrijas o la elimines.
¿Y si el hosting no tiene cron? El plugin no funciona. Cron es el único mecanismo estándar en hostings compartidos. Prácticamente todo cPanel lo tiene; si el tuyo no, pide al soporte que lo active.
¿Qué sigue?
- Firma electrónica — el primer plugin que aprovecha las tareas automáticas.
- Notificaciones — próximo consumidor para envíos masivos.
- Cambiar la configuración — dónde ajustar zonas horarias y política de reintentos.