Aprobaciones por chat para flujos de trabajo internos: una configuración práctica
Las aprobaciones por chat para flujos de trabajo internos permiten a los equipos aprobar o rechazar solicitudes desde enlaces en Telegram o correo electrónico, usando tokens que expiran y un registro de auditoría.

Por qué las aprobaciones se quedan atascadas en los equipos internos
Las aprobaciones normalmente no se paran porque la gente sea perezosa. Se paran porque la decisión está separada del momento en que alguien realmente puede tomarla. Una solicitud se queda en una herramienta que nadie revisa a menudo, o llega cuando el aprobador está lejos de su escritorio, y se convierte en un “más tarde”.
Los cuellos de botella más comunes son sencillos:
- Esperar a la persona correcta que está ocupada o viajando
- Estado poco claro (¿está pendiente, rechazado o simplemente sin ver?)
- Falta de contexto (¿qué se aprueba, por qué y cuánto cuesta?)
- Demasiadas preguntas de ida y vuelta en hilos separados
- Sin un dueño claro cuando el aprobador original no está
Ahí es donde las aprobaciones por chat para flujos de trabajo internos pueden ayudar. En términos simples, significa que el aprobador recibe un mensaje breve en un canal que ya usa (a menudo Telegram o correo electrónico) con detalles claros y dos acciones: aprobar o rechazar. El objetivo no es mover todo el proceso al chat. El objetivo es permitir que la gente tome decisiones pequeñas y sensibles al tiempo sin buscar un panel.
Esto funciona mejor para decisiones de bajo a medio riesgo donde la velocidad importa más que una revisión larga. Ejemplos: aprobar una compra pequeña, conceder acceso a una carpeta compartida, firmar un cambio de horario o confirmar un reembolso a un cliente dentro de un límite.
No es la herramienta adecuada cuando la decisión requiere un análisis cuidadoso, múltiples revisores o una separación estricta de funciones. Para acciones de alto riesgo (pagos grandes, gestiones de RR. HH., contratos con proveedores), un botón en el chat puede crear presión para hacer clic rápidamente, y eso es precisamente lo que no quieres.
Si construyes este tipo de flujo en una herramienta no-code como AppMaster, la verdadera ventaja es reducir la “fricción de aprobación” manteniendo el proceso controlado, registrado y fácil de entender.
Cómo es un flujo de aprobación por chat
Un flujo de aprobación por chat es un bucle simple: alguien pide permiso, la persona adecuada responde rápido desde donde esté y el sistema registra lo que pasó. Cuando funciona, elimina el problema de “no vi tu ticket” sin convertir las aprobaciones en un chat casual y sin registro.
Hay tres roles.
- Solicitante: crea la solicitud (por ejemplo, “Aprobar suscripción de software de $120”).
- Aprobador: decide qué hacer.
- Sistema: envía mensajes, aplica reglas y guarda el resultado final.
El sistema puede notificar a los aprobadores en dos lugares comunes: un mensaje de Telegram para respuestas rápidas y un correo electrónico para quienes viven en su bandeja de entrada. Ambos deben mostrar los mismos detalles principales, para que el aprobador nunca tenga que adivinar qué está aprobando.
Un mensaje típico incluye un resumen corto, campos clave (importe, proveedor, motivo, centro de coste) y tres acciones claras: Aprobar, Rechazar o Pedir cambios. “Pedir cambios” es útil cuando la solicitud está cerca, pero falta un detalle como un recibo o un código de proyecto.
Una vez que el aprobador elige una acción, el sistema debe hacer cuatro cosas de inmediato:
- Actualizar el estado de la solicitud (por ejemplo, Pending -> Approved).
- Notificar al solicitante (y a cualquier observador) de la decisión.
- Registrar un registro de auditoría con quién, qué y cuándo.
- Bloquear que la acción se repita por accidente.
Para las aprobaciones por chat en flujos internos, el patrón más seguro es: mostrar todo el contexto en el mensaje, pero hacer que la acción real ocurra en el sistema (no “responder SÍ”). Si lo construyes en AppMaster, el módulo de mensajería puede enviar notificaciones por Telegram y correo, mientras que la lógica del backend hace cumplir los estados y registra cada decisión.
Tokens que expiran en enlaces de aprobación, explicado de forma simple
Un token que expira es un código corto y aleatorio que prueba que una persona puede realizar una acción específica, durante un tiempo limitado. En las aprobaciones por chat para flujos internos, es lo que hace que un botón de Telegram o un enlace de aprobación en un correo sea lo bastante seguro para usar en el trabajo diario.
Piensa en el token como una “llave” temporal que solo abre una cerradura. Cuando haces clic en Aprobar o Rechazar, el sistema lee el token, lo verifica y luego registra la acción.
Lo que el token debe (y no debe) autorizar
Un token en un enlace debe otorgar exactamente un permiso: “realizar esta decisión de aprobación para esta solicitud”. No debe dar acceso al historial completo de la solicitud, a la cuenta del usuario ni a nada más.
Los buenos tokens están ligados a:
- Una solicitud (por ejemplo: solicitud de compra #1842)
- Un aprobador (o un grupo de aprobadores, si permites eso)
- Un conjunto de acciones (aprobar/rechazar)
- Un tiempo de expiración claro
- Un estado claro (sin usar, usado, revocado)
Caducidad, un solo uso y revocación
La expiración limita el daño si un mensaje se reenvía, una bandeja de entrada se ve comprometida o alguien hace clic días después. Una ventana común es de unas pocas horas para elementos urgentes, o de 24 a 72 horas para trabajo normal.
Los tokens de un solo uso suelen ser los mejores para aprobaciones. Una vez usados, cualquier segundo clic debe bloquearse, incluso si la página sigue abierta. Los tokens de varios usos pueden tener sentido para acciones de “acuse de recibo”, pero son arriesgados para aprobar/rechazar porque invitan a envíos duplicados y confusión.
La revocación importa cuando cambian los detalles. Si se edita el importe, el proveedor o el alcance de la solicitud, revoca los tokens viejos y emite otros nuevos. Herramientas como AppMaster pueden modelarlo como campos simples en el registro de aprobación (expires_at, used_at, revoked_at) más un proceso de negocio que los valide antes de aceptar la decisión.
Cuando el token está caducado o ya fue usado
No muestres un error alarmante. Muestra un resultado claro:
- “Este enlace de aprobación expiró. Solicita uno nuevo.”
- “Esta solicitud ya fue aprobada por Alex a las 10:42.”
Luego ofrece un paso seguro siguiente: enviar un nuevo mensaje de aprobación al/los aprobador(es) actuales, con un token nuevo.
Diseñar el mensaje de solicitud para que sea claro y seguro
Un buen mensaje de aprobación permite decidir en segundos, sin abrir nada. Uno malo hace que adivinen o, peor, empuja detalles sensibles al historial del chat. Para las aprobaciones por chat en flujos internos, busca “suficiente para decidir” y “no suficiente para filtrar datos”.
Empieza con un resumen consistente que se lea bien en un teléfono. Pon los hechos críticos para la decisión cerca de la parte superior, luego los detalles y después los botones o enlaces de acción.
Qué incluir (mínimo)
Los aprobadores suelen necesitar solo un pequeño conjunto de campos para decir sí o no:
- Quién solicita (nombre + equipo)
- Qué se solicita (título corto)
- Coste o impacto (importe, plan, horas o unidades)
- Cuándo se necesita (fecha límite o urgencia)
- Por qué se necesita (una frase)
Ejemplo (Telegram o correo): “Solicitud de compra: lector de códigos Bluetooth, $189, necesario para el 2 de feb, motivo: reemplazar unidad rota en almacén.”
Qué no incluir
Asume que los mensajes se reenvían, hacen captura de pantalla y se almacenan. Mantén secretos fuera tanto del texto del mensaje como de la URL.
No incluyas números completos de tarjeta, datos bancarios, contraseñas, datos privados de clientes ni comentarios internos destinados solo a finanzas o RR. HH. Si necesitas referenciar algo sensible, incluye una etiqueta corta como “Presupuesto del proveedor: en archivo” en lugar del presupuesto completo.
Para los enlaces de aprobación, mantén el token opaco y de corta duración. No pongas datos legibles (como importe o correo del usuario) en el enlace. Pon esos datos en el cuerpo del mensaje.
Finalmente, añade una alternativa segura para que la gente pueda aprobar el ítem correcto si el enlace expira o parece sospechoso: incluye un ID de solicitud (por ejemplo, PR-10438) y una opción simple “Abrir en la app”. Si lo construyes en AppMaster, trata el ID de solicitud como ancla: es lo que el aprobador puede buscar en el portal interno para confirmar que actúa sobre la solicitud correcta.
Reglas y estados de aprobación que definir antes de construir
Antes de enviar la primera solicitud de aprobación por Telegram o correo, decide qué significa “hecho”. Las aprobaciones por chat en flujos internos parecen simples en la superficie, pero fallan cuando el flujo no tiene estados claros.
Empieza con un pequeño conjunto de estados de solicitud que guardarás en tu base de datos. Mantenlos aburridos y previsibles, para que cada persona y cada informe lea lo mismo.
- Draft (opcional): creada pero no enviada
- Submitted: enviada a aprobadores
- Pending: esperando al menos una decisión
- Approved o Rejected: decisión final registrada
- Cancelled: solicitud retirada antes de la decisión final
Luego, define quién puede aprobar. No dependas de “quienquiera que vea el mensaje primero”. Vincula los derechos de aprobación a un rol o equipo y decide qué pasa cuando el aprobador principal no está.
Un conjunto simple de reglas para acordar desde el principio:
- Aprobador primario (por rol o equipo)
- Aprobador de respaldo (cuando el primario no está)
- El solicitante puede cancelar (sí/no y hasta cuándo)
- Regla de conflicto (¿alguien puede aprobar su propia solicitud?)
Si tienes varios aprobadores, elige un patrón y ponle nombre. “Any-of” significa que la primera aprobación completa la solicitud. “All-of” significa que todos los aprobadores listados deben aprobar. También decide cómo manejar un rechazo en un flujo all-of (por lo general: un rechazo lo termina).
Finalmente, escribe qué ocurre después de la aprobación. Ejemplo: una solicitud de compra aprobada puede crear una tarea de pago, notificar a finanzas y bloquear la solicitud original para que no se pueda editar. En AppMaster, esto se mapea claramente a cambios de estado en la base de datos más un Business Process que dispara los siguientes pasos y notificaciones.
Paso a paso: construir el flujo de aprobar o rechazar
Para construir aprobaciones por chat en flujos internos, mantén el flujo pequeño: un registro de solicitud, una decisión y una entrada clara de auditoría. Puedes añadir reglas extra más tarde sin cambiar la forma básica.
Primero, crea un único registro “Request” con los campos que necesitas para decidir: qué es, quién lo pidió, quién debe aprobar y el importe o impacto. Ajusta status = Pending y guárdalo antes de notificar a nadie, para que cada acción tenga algo real a lo que apuntar.
A continuación, genera un token de aprobación que expire. Guárdalo en un registro separado “ApprovalToken” que referencia la solicitud y al aprobador previsto, más expires_at y used_at. Esta vinculación importa: evita que alguien reenvíe un mensaje y que otra persona lo apruebe.
Aquí tienes un orden de construcción simple:
- Guarda la solicitud con estado
Pending. - Crea dos tokens (Approve, Reject) o un token más un parámetro
action, con una expiración corta. - Envía un mensaje de Telegram y/o correo que incluya dos botones o enlaces claros.
- Al hacer clic, valida token, expiración e identidad del aprobador; luego aplica la decisión.
- Notifica al solicitante y escribe una entrada de auditoría.
Al manejar el clic, trátalo como una transacción: comprueba “no expirado” y “no usado”, confirma que el token coincide tanto con la solicitud como con el aprobador, y luego actualiza la solicitud a Approved o Rejected. Guarda quién actuó, cuándo actuó y qué eligió.
En AppMaster, esto encaja bien con un modelo de Data Designer (Request, ApprovalToken, ApprovalAudit) y un Business Process que ejecuta la validación y las actualizaciones. Usa los módulos de mensajería integrados para Telegram y correo para que el mismo proceso pueda notificar ambos canales.
Termina enviando dos mensajes cortos: uno al solicitante (“Aprobado por Maria, 10:42”) y otro al aprobador (“Registrado, token cerrado”). Ese feedback reduce los clics repetidos y las consultas de soporte.
Hacer las acciones auditables sin complicarlo
Una trazabilidad no es solo para cumplimiento. Es cómo respondes preguntas básicas después: ¿Quién aprobó esto, cuándo, desde dónde y con qué información? Para las aprobaciones por chat en flujos internos, la clave es registrar unos pocos hechos de forma consistente, no todo.
Empieza por decidir qué cuenta como una “acción de aprobación”. Normalmente es un solo clic en Aprobar o Rechazar desde un mensaje de Telegram o un enlace de aprobación por correo. Cada acción debe crear un registro inmutable.
Registra los mismos campos centrales cada vez:
- Marca temporal (hora del servidor, más zona horaria del usuario opcional)
- Actor (el usuario autenticado y su rol en ese momento)
- Canal (Telegram, email, web, móvil)
- Decisión (aprobar/rechazar) y motivo/comentario opcional
- Instantánea de la solicitud (los campos importantes tal como estaban cuando el usuario decidió)
Los motivos de rechazo merecen recogerse, pero mantenlo simple: un campo de texto corto más un pequeño conjunto de etiquetas opcionales (por ejemplo “presupuesto”, “falta info”, “política”). Si exiges un motivo, hazlo solo para Rechazar y limita la longitud para que la gente escriba algo útil.
Para manejar disputas, muestra un historial legible en la solicitud: creada, enviada, aprobada/rechazada y cualquier reenvío. Evita exponer secretos en el registro. En lugar de almacenar detalles completos de pago o notas privadas, guarda una instantánea segura (nombre del proveedor, importe, centro de coste) y mantén los datos sensibles en un área protegida.
Los informes pueden seguir siendo ligeros. Las señales útiles son:
- Quién aprueba con más frecuencia
- Tiempo medio hasta la decisión
- Principales motivos de rechazo
- Dónde se quedan las solicitudes más tiempo
Si lo construyes en AppMaster, un enfoque práctico es una tabla dedicada “ApprovalActions” en el Data Designer y un único paso en el Business Process que escribe el registro de auditoría antes de cambiar el estado de la solicitud. Esto mantiene el historial fiable incluso cuando el mensaje se reenvía o un enlace con token expira.
Errores comunes y trampas
La mayoría de las aprobaciones por chat fallan por razones aburridas: alguien hace clic en un enlace dos veces, lo reenvía o la solicitud cambia después de enviar el mensaje. Puedes evitar la mayoría con unas pocas reglas fáciles de aplicar.
Una trampa clásica es tratar el enlace de aprobación como una contraseña. Si un token se puede reutilizar, la misma acción podría registrarse dos veces. Si el enlace se reenvía, otra persona puede aprobar algo que no debía ver.
Otro problema común es no vincular el token al aprobador previsto. Si tu sistema solo comprueba “¿es válido este token?”, cualquier usuario conectado (o incluso alguien con el enlace) podría actuar. Vincúlalo tanto a la solicitud como a la identidad del aprobador y exige inicio de sesión si el canal no es de confianza.
La expiración causa problemas en ambas direcciones. Los tokens que nunca expiran se convierten en puertas traseras permanentes. Los tokens que expiran demasiado pronto crean carga de soporte y empujan a la gente a “hacer trucos” para evitar el proceso. Apunta a una ventana práctica (como unas horas) y ofrece siempre una forma segura de solicitar un enlace nuevo.
Los cambios en la solicitud son otra fuente de malas aprobaciones. Alguien edita el importe o el proveedor después de enviar el mensaje, y el aprobador hace clic en “Aprobar” en una vista desactualizada.
Observa estos síntomas:
- El mismo token puede aprobar dos veces (o aprobar y rechazar)
- El enlace funciona para cualquiera que lo tenga
- El enlace nunca caduca (o caduca en minutos)
- La acción no comprueba la versión de la solicitud
- Los tokens inválidos producen un fallo silencioso y confuso
Un conjunto simple de correcciones (fácil de implementar en herramientas como AppMaster) incluye tokens de un solo uso, vinculación al aprobador y pantallas de error claras. Por ejemplo: “Este enlace ha expirado. Solicita un nuevo mensaje de aprobación.” Esa frase evita la mayoría de clics de pánico y aprobaciones en la sombra.
Controles de seguridad que realmente importan
Las aprobaciones por chat parecen simples porque el usuario solo pulsa Aprobar. El trabajo de seguridad está mayormente en las partes que no ven: cómo creas enlaces, validas tokens y manejas casos límite.
Empieza por el propio enlace de aprobación. Usa endpoints solo HTTPS y trata el token como una contraseña. Evítalo en lugares que se copian con frecuencia, como logs de servidor, analytics y vistas previas de chat. Un truco práctico es no registrar URLs completas y almacenar solo una huella corta del token en el servidor.
El rate limiting es la siguiente gran mejora. La validación de tokens y el endpoint final de aprobar/rechazar deben protegerse contra adivinanzas y reintentos repetidos. Aunque tus tokens sean largos, los límites frenan ataques ruidosos y también protegen de toques dobles accidentales.
Algunas aprobaciones son de mayor riesgo que otras. Para cosas como pagos a proveedores o acceso a datos de clientes, exige un paso extra tras hacer clic, como un inicio de sesión rápido o MFA. En AppMaster, esto puede modelarse como una regla en tu Business Process: solicitudes de bajo riesgo se completan con un token válido, mientras que las de alto riesgo redirigen a una sesión autenticada antes de cambiar el estado.
Ten una forma clara de revocar tokens cuando cambian los roles. Si alguien cambia de equipo, deja la empresa o pierde un teléfono, deberías poder invalidar todos los tokens pendientes para esa persona y para cualquier solicitud en la que haya intervenido.
Algunas decisiones para tomar desde el inicio:
- Expira tokens rápidamente (minutos u horas, no días) y hazlos de un solo uso.
- Decide qué pasa si un correo se reenvía o se comparte un mensaje de Telegram.
- Maneja dispositivos compartidos exigiendo una verificación rápida de identidad para acciones sensibles.
- Prevén la repetición registrando el primer uso exitoso y rechazando los siguientes.
- Devuelve un mensaje seguro en caso de fallo (no reveles si un token está “casi válido”).
Ejemplo: si un manager reenvía un correo de aprobación a un colega, el sistema debería bloquear la acción o forzar al colega a iniciar sesión antes de aprobar.
Escenario de ejemplo: aprobar una pequeña solicitud de compra
Maya, una responsable de operaciones, necesita una impresora de etiquetas de reemplazo por $180 para el despacho de envíos. Abre el formulario interno “Purchase Request”, rellena proveedor, importe y una nota corta, y luego lo envía. La solicitud obtiene el estado Pending y se asigna a su jefe de equipo, Jordan.
Jordan recibe un mensaje de Telegram fácil de escanear: “Solicitud de compra de Maya: impresora de etiquetas, $180. Necesaria esta semana.” Debajo hay dos acciones claras: Approve y Reject. Cada acción es un botón o un comando corto que mapea a un token de un solo uso y que expira.
Jordan pulsa Reject y añade un motivo: “Usa la lista de proveedores aprobados y adjunta el presupuesto.” El sistema hace inmediatamente dos cosas. Primero, actualiza la solicitud a Rejected con el motivo de Jordan. Segundo, notifica a Maya por el mismo canal que usó (o por correo, según tus reglas) para que pueda corregir y reenviar sin adivinar qué falló.
En segundo plano, mantienes una trazabilidad simple que responde a las preguntas básicas sin añadir papeleo:
- Quién decidió (ID de usuario de Jordan)
- Qué decidió (Rejected)
- Cuándo decidió (marca temporal)
- Dónde decidió (Telegram vs email)
- Por qué (texto de motivo opcional)
Si alguien hace clic en el enlace de Approve o Reject después de que el token haya expirado, la acción no se realiza. En su lugar ven un mensaje claro como “Este enlace de acción ha expirado” y la solicitud permanece en Pending. Eso evita aprobaciones accidentales desde mensajes antiguos y mantiene limpio tu registro.
Este es el tipo de flujo que puedes construir en una herramienta no-code como AppMaster usando una tabla simple de solicitudes, un campo de estado y un business process que envía acciones por Telegram o correo y escribe el registro de auditoría.
Próximos pasos: lanzar una versión pequeña y mejorarla
La forma más rápida de obtener valor de las aprobaciones por chat para flujos internos es lanzar una versión pequeña que sea segura, medible y fácil de soportar. Elige un tipo de solicitud que ya cause demoras (como compras pequeñas o solicitudes de acceso) y pruébalo con un equipo primero.
Antes de lanzarlo, haz un repaso rápido con una lista de verificación corta:
- Las reglas de aprobación están claras (quién puede aprobar, cuándo hay escalado, qué significa “rechazar”)
- Los enlaces expiran y solo se usan una vez (token + expiración + manejo de “ya usado”)
- Se capturan campos de auditoría (quién, qué acción, cuándo, desde qué canal)
- Los mensajes de error son comprensibles (token expirado, aprobador equivocado, ya decidido, solicitud no encontrada)
- Las notificaciones son consistentes (solicitud recibida, aprobada/rechazada y alternativa cuando falla la entrega por chat)
Después de la primera semana, mide el tiempo de respuesta: cuánto tarda desde “solicitado” hasta “decidido”, y con qué frecuencia la gente ignora el mensaje y necesita un recordatorio. Una métrica simple como “tiempo medio hasta la aprobación” hace las mejoras evidentes.
Planifica una vista de administración básica desde el principio. No tiene que ser bonita, pero debe permitir buscar por ID de solicitud, solicitante y estado, y ver el historial completo de decisiones. Esto es lo que usará tu equipo de ops o finanzas cuando alguien diga, “Lo aprobé ayer, ¿dónde quedó?”.
Si quieres construir esto sin código pesado, AppMaster puede ayudarte a modelar las tablas de solicitud y auditoría, diseñar la lógica de aprobar/rechazar en un flujo visual y enviar mensajes por Telegram o correo como parte del mismo flujo. Empieza pequeño, observa el uso real y luego añade extras como recordatorios, delegación y escalado solo cuando lo básico esté estable.


