Aprende a crear una app web sencilla que sustituya los correos de aprobación manuales con un flujo claro, panel de aprobaciones, notificaciones y un rastro de auditoría.

Aprobar por correo parece sencillo porque todo el mundo ya tiene una bandeja de entrada. Pero en cuanto las solicitudes se vuelven frecuentes —o implican dinero, accesos, excepciones de políticas o compromisos con proveedores— los hilos de correo empiezan a crear más trabajo del que ahorran.
La mayoría de los equipos acaban con una mezcla desordenada de:
El resultado es un proceso difícil de seguir—incluso cuando todos intentan ser útiles.
El correo falla porque no ofrece una única fuente de verdad. La gente pierde tiempo respondiendo preguntas básicas:
También ralentiza el trabajo: las solicitudes se quedan en bandejas desbordadas, las aprobaciones ocurren en distintas zonas horarias y los recordatorios o bien resultan groseros o se olvidan.
Un buen sistema de solicitudes y aprobaciones no tiene que ser complicado. Como mínimo debería crear:
No necesitas reemplazar todos los flujos de aprobación el primer día. Elige un caso de uso de alto valor, haz que funcione de extremo a extremo y luego expande según lo que la gente realmente haga—no lo que un diagrama de proceso perfecto sugiera.
Esta guía está escrita para responsables no técnicos de procesos de aprobación—operaciones, finanzas, RRHH, TI y líderes de equipo—además de cualquiera encargado de reducir riesgos y acelerar decisiones sin crear más trabajo administrativo.
Reemplazar correos de aprobación es más fácil cuando empiezas con un único caso de uso de alto volumen. No comiences por “construir una plataforma de aprobaciones”. Empieza por arreglar un hilo doloroso que ocurra cada semana.
Escoge un escenario de aprobación con claro valor de negocio, un patrón consistente y un número manejable de aprobadores. Iniciadores comunes incluyen:
Una buena regla: elige el escenario que actualmente genera más idas y venidas o retrasos—y donde el resultado sea fácil de verificar (aprobado/rechazado, hecho/no hecho).
Antes de diseñar pantallas, documenta lo que realmente pasa hoy—from la primera solicitud hasta el paso final “completado”. Usa un formato de línea de tiempo simple:
Captura también las partes desordenadas: reenvíos al “aprobador real”, aprobaciones dadas en chat, adjuntos faltantes o “aprobado si está por debajo de $X”. Estas son exactamente las cosas que tu app web debe manejar.
Lista las personas involucradas y lo que necesitan:
Documenta reglas de decisión en lenguaje llano:
Para tu caso elegido, define los datos mínimos necesarios para evitar preguntas de seguimiento: título de la solicitud, justificación, monto, proveedor/sistema, fecha de vencimiento, centro de costos, adjuntos y enlaces de referencia.
Mantenlo corto—cada campo extra es fricción—y luego añade “detalles opcionales” una vez que el flujo funcione.
Los estados del flujo son la columna vertebral de una app de aprobaciones. Si los aciertas, eliminarás la confusión “¿Dónde está esta aprobación?” que crean los hilos de correo.
Para un MVP de app de aprobaciones, mantén la primera versión simple y predecible:
Esta columna vertebral “enviar → revisar → aprobar/rechazar → hecho” es suficiente para la mayoría de aprobaciones de procesos de negocio. Siempre puedes añadir complejidad después, pero eliminar estados tras el lanzamiento es doloroso.
Decide pronto si tu sistema soporta:
Si no estás seguro, empieza con un paso único y un camino claro para extender: modela “pasos” como opcionales. La UI puede mostrar un solo aprobador hoy mientras que tu modelo de datos crece hacia multi-pasos más adelante.
Las aprobaciones por correo suelen atascarse porque un aprobador hace una pregunta y la solicitud original queda enterrada.
Añade un estado como:
Haz la transición explícita: la solicitud vuelve al solicitante, el aprobador deja de ser responsable y el sistema puede rastrear cuántos ciclos de ida y vuelta suceden. Esto también mejora las notificaciones porque puedes avisar solo a la próxima persona responsable.
Las aprobaciones no terminan con “Aprobado.” Decide qué hará el sistema a continuación y si es automático o manual:
Si estas acciones son automáticas, mantén un estado Hecho (o Completado) que solo se alcance después de que la automatización tenga éxito. Si la automatización falla, introduce una excepción clara como Acción fallida para que las solicitudes no parezcan terminadas cuando no lo están.
El diseño de estados debe soportar la medición, no solo el proceso. Elige unas pocas métricas para rastrear desde el día uno:
Cuando los estados estén claros, estas métricas se vuelven consultas sencillas—y comprobarás rápido que realmente reemplazaste correos de aprobación.
Antes de diseñar pantallas o automatizaciones, decide qué “cosas” debe almacenar tu app. Un modelo de datos claro previene los dos problemas clásicos del correo: contexto faltante (¿qué se está aprobando exactamente?) e historial perdido (¿quién dijo qué y cuándo?).
Una Solicitud debe contener el contexto de negocio en un solo lugar para que los aprobadores no tengan que cavar en hilos.
Incluye:
Consejo: guarda el “estado actual” de la solicitud (p. ej., Borrador, Enviado, Aprobado, Rechazado) en la Solicitud misma, pero guarda las razones en Decisiones y Eventos de Auditoría.
Una aprobación no es solo un sí/no—es un registro que puede ser necesario meses después.
Cada Decision (o Aprobación) debe capturar:
Si soportas aprobaciones multi-paso, guarda un paso de aprobación (número de secuencia o nombre de regla) para reconstruir la ruta.
Mantén roles simples al principio:
Si tu empresa trabaja por departamentos, añade grupos/equipos como capa opcional para que una solicitud se enrute a “Aprobadores de Finanzas” en lugar de a una sola persona.
Un AuditEvent debe ser append-only. No lo sobreescribas.
Registra eventos como: creado, actualizado, adjunto añadido, enviado, visto, decidido, reasignado, reabierto. Almacena quién lo hizo, cuándo y qué cambió (un breve “diff” o referencia a los campos actualizados).
Modela las notificaciones como suscripciones (quién quiere actualizaciones) más canales de entrega (email, Slack, in-app). Esto facilita reducir el spam: luego podrás añadir reglas como “notificar solo en decisión” sin cambiar los datos centrales del flujo.
Si la gente no puede completar una solicitud o aprobarla en menos de un minuto, volverán al correo. Tu objetivo es un conjunto pequeño de pantallas que sean obvias, rápidas y tolerantes.
Empieza con una sola página “Nueva solicitud” que guíe al solicitante paso a paso.
Usa validación clara (inline, no después de enviar), valores por defecto sensatos y texto de ayuda en lenguaje llano (“¿Qué pasa después?”). La carga de archivos debe soportar arrastrar y soltar, múltiples archivos y límites comunes (tamaño/tipo) explicados antes de que ocurra un error.
Añade una vista previa del “resumen” que verán los aprobadores para que los solicitantes aprendan cómo son buenas presentaciones.
Los aprobadores necesitan una bandeja, no una hoja de cálculo. Muestra:
Haz que la vista por defecto sea “Mis pendientes” para reducir el ruido. Mantén esta área enfocada en decisiones: los aprobadores deben poder escanear, abrir y actuar—rápido.
Aquí se construye la confianza. Combina todo lo necesario para decidir:
Añade cuadros de confirmación para acciones destructivas (rechazar, cancelar) y muestra qué ocurrirá después (“Se notificará a Finanzas”).
Los admins normalmente necesitan tres herramientas: gestionar plantillas de solicitud, asignar aprobadores (por rol/equipo) y establecer políticas simples (umbrales, campos obligatorios).
Mantén las páginas de admin separadas del flujo de aprobador, con etiquetas claras y valores por defecto seguros.
Diseña para escaneo rápido: etiquetas fuertes, estados consistentes, timestamps legibles y estados vacíos útiles (“No hay aprobaciones pendientes—revisa ‘Todas’ o ajusta filtros”). Asegura navegación por teclado, estados de foco y textos descriptivos en botones (no solo iconos).
Las aprobaciones por correo fallan en parte porque el acceso es implícito: cualquiera a quien se reenvíe el hilo puede opinar. Una app web necesita lo contrario—identidad clara, roles definidos y salvaguardas sensatas que eviten “ups”.
Elige un método de login principal y hazlo sencillo.
Sea cual sea la opción, asegura que cada acción de aprobación esté ligada a una identidad verificada—no a un “Aprobado ✅” desde una bandeja de entrada no rastreable.
Define roles pronto y mantenlos simples:
Aplica mínimos privilegios: los usuarios deben ver solo las solicitudes que crearon, las que tienen asignadas para aprobar o las que administran. Esto importa aún más si las solicitudes incluyen sueldos, contratos o datos de clientes.
Decide si hacer cumplir separación de funciones:
Mantén sesiones seguras con timeouts de inactividad cortos, cookies seguras y un cierre de sesión claro.
Para adjuntos, usa almacenamiento seguro (buckets privados, URLs firmadas, escaneo antivirus si es posible) y evita enviar archivos como adjuntos de email.
Finalmente, añade limitación básica de tasa para logins y endpoints sensibles (como solicitud de enlace mágico) para reducir intentos de fuerza bruta y spam.
Los hilos fallan porque mezclan tres trabajos distintos: alertar al siguiente aprobador, reunir contexto y registrar la decisión. Tu app debe mantener contexto e historial en la página de la solicitud y usar notificaciones solo para volver a atraer a las personas en los momentos adecuados.
Mantén el email para lo que hace bien: entrega fiable y búsqueda fácil.
Cada mensaje debe ser corto, contener el título de la solicitud, fecha límite y una llamada a la acción clara que apunte a la misma fuente de verdad: /requests/:id.
Las herramientas de chat son geniales para aprobaciones rápidas—si la acción queda dentro de la app.
Define una política simple:
Usa preferencias (email vs chat, horas silenciosas), agregación (un resumen para múltiples pendientes) y resúmenes diarios/semanales opcionales (p. ej., “5 aprobaciones esperando”). La meta es menos notificaciones, mayor señal y que cada aviso apunte a la página de la solicitud—no a un nuevo hilo.
Las aprobaciones por correo fallan en auditorías porque el “registro” está disperso en bandejas, reenvíos y capturas. Tu app debe crear un historial único y fiable que responda cuatro preguntas siempre: qué pasó, quién lo hizo, cuándo y desde dónde.
Para cada solicitud, captura eventos de auditoría como: creado, editado, enviado, aprobado, rechazado, cancelado, reasignado, comentario añadido, adjunto añadido/eliminado y excepciones de política.
Cada evento debe almacenar:
Usa un registro de auditoría append-only: nunca actualices o borres eventos pasados—solo añade nuevos. Si necesitas garantías más fuertes, encadena entradas con un hash (cada evento almacena el hash del anterior) y/o copia los logs a un almacenamiento write-once.
Define una política de retención pronto: conserva eventos de auditoría más tiempo que las solicitudes (por cumplimiento y resolución de disputas) y documenta quién puede verlos.
Las aprobaciones suelen depender de cómo se veía la solicitud al momento de decidir. Mantén un historial de versiones de campos editables (monto, proveedor, fechas, justificación) para que los revisores puedan comparar versiones y ver exactamente qué cambió entre envío y aprobación.
Los auditores rara vez quieren capturas de pantalla. Proporciona:
Cuando todos ven la misma línea de tiempo—quién cambió qué, cuándo y desde dónde—hay menos idas y venidas, menos “aprobaciones perdidas” y resolución más rápida cuando algo sale mal.
Las aprobaciones solo son útiles si desencadenan el siguiente paso de forma fiable. Una vez aprobada (o rechazada) una solicitud, tu app debería actualizar el sistema de registro, notificar a las personas correctas y dejar un trazo limpio de lo ocurrido—sin que alguien tenga que copiar y pegar decisiones en otras herramientas.
Empieza por el destino donde el trabajo realmente ocurre. Destinos comunes incluyen:
Un patrón práctico es: la app de aprobaciones es la capa de decisión, mientras que la herramienta externa sigue siendo el sistema de registro. Eso mantiene tu app más simple y reduce duplicaciones.
Si la gente no puede enviar solicitudes rápido, volverán al correo.
El reenvío de email es especialmente útil durante el despliegue; trátalo como un método de intake, no como el hilo de aprobación.
Tras una decisión, dispara acciones en varios niveles:
Haz que las acciones salientes sean idempotentes (seguras de reintentar) y registra cada intento en tu rastro de auditoría para que las fallas no se vuelvan trabajo invisible.
Las aprobaciones suelen involucrar adjuntos (presupuestos, contratos, capturas). Almacena archivos en un proveedor dedicado, haz escaneo antivirus al subir y aplica permisos de descarga según quién pueda ver la solicitud. Enlaza cada archivo a la solicitud y a la decisión para poder probar qué se revisó.
Si comparas opciones de empaquetado para integraciones y manejo de archivos, consulta /pricing.
Desplegar una app de flujo de aprobación es menos acerca de un “gran lanzamiento” y más de probar que funciona y luego expandir con seguridad. Un plan de despliegue claro también evita que los usuarios vuelvan al correo la primera vez que encuentran fricción.
Elige un tipo de solicitud (p. ej., solicitud de compra) y un grupo de aprobadores (p. ej., responsables de departamento). Mantén la primera versión enfocada:
La meta es reemplazar el hilo de correo para un flujo de principio a fin, no modelar todas las reglas de negocio el primer día.
Si la velocidad es la restricción (suele serlo), los equipos a veces prototipan este MVP en una plataforma de prototipado tipo “vibe-coding” como Koder.ai: describe el flujo de solicitudes en chat, genera una UI en React con backend en Go + PostgreSQL, e itera rápido con snapshots/rollback. Cuando estés listo, puedes exportar el código fuente, desplegar y añadir dominios personalizados—útil para pasar de “piloto” a un sistema interno real sin una pipeline legacy completa.
Pilota con un equipo pequeño que tenga suficiente volumen para aprender rápido, pero no tanto como para que los errores sean caros. Durante el piloto, compara el nuevo sistema con el proceso por correo:
Pide feedback semanal y lleva una lista de cambios—luego agrupa actualizaciones en lotes en lugar de desplegar sorpresas diarias.
Decide por adelantado qué pasa con las solicitudes ya en curso en email:
Sea cual sea la opción, publica una regla, cúmplela y comunica la fecha límite.
Evita talleres largos. Proporciona una hoja de trucos de una página, un par de plantillas de solicitud y horas de oficina cortas para preguntas durante la primera semana.
Tras el piloto, expande al siguiente tipo de solicitud o grupo de aprobadores. Prioriza mejoras que reduzcan fricción: mejores valores por defecto, etiquetas de estado más claras, recordatorios más inteligentes e informes sencillos para managers.
La mayoría de equipos no fracasan porque no puedan construir una app de aprobaciones—fracasan porque el nuevo sistema recrea los mismos problemas del correo con una UI más bonita. Estos son los problemas que suelen descarrilar un sistema de solicitudes y aprobaciones, y formas prácticas de evitarlos.
Si nadie puede responder “¿quién es responsable de esta solicitud ahora mismo?”, seguirás teniendo atascos—solo que dentro de un panel en vez de una bandeja.
Evítalo haciendo la propiedad explícita en cada estado (p. ej., Enviado → Pendiente Manager → Pendiente Finanzas → Aprobado/Rechazado) y mostrando un aprobador responsable (aunque otros puedan ver).
Los correos fallan cuando el aprobador tiene que pedir lo básico: alcance, coste, fecha, enlaces, decisiones previas.
Evítalo exigiendo campos obligatorios, embebiendo artefactos clave (enlaces, PDFs) y añadiendo una nota estructurada “Qué cambió?” cuando una solicitud se reenvía. Mantén los comentarios ligados a la solicitud, no dispersos por hilos de notificación.
Los equipos suelen sobredimensionar el proceso con enrutamientos condicionales, ramas de casos límite y largas cadenas de revisores. El resultado: aprobaciones lentas y reglas en constante edición.
Evítalo escogiendo un caso de uso y lanzando un MVP con un conjunto pequeño de estados. Rastrea qué excepciones aparecen realmente y añade reglas gradualmente.
Si la app es lenta para cargar “Mis aprobaciones”, la gente vuelve al correo.
Evítalo planificando consultas rápidas estilo bandeja (p. ej., filtrar por aprobador asignado + estado), búsqueda full‑text indexada y límites sensatos para adjuntos (capas de tamaño, uploads asíncronos, escaneo antivirus en background).
Cuando cualquiera puede cambiar notificaciones o reglas de enrutamiento, la confianza se erosiona—especialmente para auditorías.
Evítalo definiendo un propietario para plantillas y automatizaciones, requiriendo revisión para cambios y registrando actualizaciones de configuración en el rastro de auditoría.
Si no puedes demostrar impacto, la adopción se resiente.
Evítalo rastreando métricas base desde el inicio: tiempo medio de aprobación, razones comunes de rechazo, tamaño del backlog y bucles de retrabajo (reenvíos). Haz estas métricas visibles para los dueños del proceso.
Una vez estable el flujo central, prioriza delegación (cobertura por ausencia), enrutamiento condicional según monto/tipo y aprobaciones optimizadas para móvil que mantengan las decisiones rápidas sin aumentar notificaciones spam.