Historial, cola y reenvío
Dos pantallas muestran lo que el plugin hizo con cada mensaje:
- Joinotify → Historial — qué se envió, a quién, por qué flujo y qué pasó.
- Joinotify → Procesando cola — lo que todavía va a salir: pasos esperando un Tiempo de espera y mensajes aguardando un reintento.
Historial de mensajes
Cada fila es un mensaje, con el estado procedente de la confirmación real de entrega de Meta:
| Estado | Significado |
|---|---|
| Enviado | Meta aceptó el mensaje |
| Entregado | Llegó al dispositivo del destinatario |
| Leído | El destinatario lo abrió |
| En cola | Falló por un motivo pasajero y espera un reintento |
| Fallido | No se entregó. La columna Error dice el motivo, en lenguaje legible |
| Cancelado | Un reintento pendiente se canceló a mano |
El detalle de una fila muestra la respuesta de WhatsApp y, en una plantilla, el texto que leyó el cliente, con el idioma y el valor de cada variable. Los códigos de inicio de sesión (OTP) se ocultan siempre.
El historial está siempre activado
Desde la 2.7.0 ya no existe la opción «Historial de mensajes» en Configuraciones → Acerca de,
y los sitios que la tenían desactivada volvieron a registrar. El historial es lo que permite
reenviar un fallo y responder «¿salió este mensaje?». Quien necesita dejar de guardar un mensaje
concreto usa el filtro Joinotify/Message_History/Should_Record.
El tiempo que se guardan los registros se elige en Configuraciones → Acerca de → Retención del historial, de 30 días a «Mantener para siempre».
Enviar de nuevo
Un mensaje que falló se puede reenviar desde la 2.7.0 — con la acción Enviar de nuevo de la fila, desde la ventana de detalles o seleccionando varias filas, hasta 50 a la vez. También se puede con un mensaje cuyo reintento automático se canceló.
- Cada reenvío es un único intento, fuera de la cola de reintentos, y se convierte en una fila nueva con el origen y el flujo del original.
- El original recibe la marca Reenviado y deja de ofrecer el reenvío, para que un fallo nunca se mande dos veces por error.
- Los mensajes interactivos, de ubicación, de contacto, las reacciones y los stickers guardan el contenido completo en el historial, así que el reenvío manda exactamente el mismo mensaje.
No ofrecen reenvío: los códigos de inicio de sesión, las plantillas con los valores ocultados del historial y los mensajes con adjunto local, cuyo archivo el historial no guarda.
Tabla, filtros y exportación
Las tres tablas — flujos, historial y cola — tienen el selector Elementos por página (10, 25, 50, 100 o 200), que el navegador recuerda, y exportan a JSON:
- Exportar en la fila descarga solo ese elemento; las filas seleccionadas salen juntas.
- En el historial y en la cola, el botón de la barra exporta todo lo que seleccionan los filtros actuales cuando no hay nada marcado. El historial se detiene en los 5.000 registros más recientes y lo avisa.
- Un flujo exportado desde aquí es el mismo archivo que exporta el constructor, y se puede volver a importar.
Reintentos automáticos
Cuando WhatsApp rechaza un mensaje por un motivo que puede pasar — tiempo agotado, límite de envío, inestabilidad —, Joinotify aparca el mensaje y lo vuelve a intentar. Se configura en Configuraciones → General → Reintentos de entrega:
| Opción | Valores | Predeterminado |
|---|---|---|
| Máximas intentos | «No reintentar» o de 1 a 10 | 5 |
| Primer reintento después de | 5, 15, 30, 60 o 120 minutos | 30 minutos |
Cada intento espera el doble que el anterior. Un envío rechazado por límite de tasa (429) espera exactamente el tiempo que indique la API, en lugar de la tabla anterior.
Los errores de configuración no entran en esta cola, porque insistir no cambia el resultado: clave de la API inválida, plantilla inexistente o rechazada, ventana de 24 horas cerrada. Van directamente a Fallido, con el motivo.
Cola de procesamiento
La cola muestra cada elemento programado con el flujo, el próximo horario y las acciones que todavía faltan por ejecutar. Un elemento se puede enviar en el momento, con Enviar ahora, o cancelar, y la exportación incluye los datos de ejecución de cada elemento.
Nada en esta cola avanza sin WP-Cron — consulta Requisitos mínimos.
Registro de depuración
Con el Modo de depuración activado en Configuraciones → Acerca de, el plugin registra
también cada mensaje entregado (código dispatch_sent) y, en cada fallo, la explicación del
propio WhatsApp. El registro se abre en la misma pestaña, tiene retención propia y muestra el
contexto en JSON indentado.