Flujos
Flujos de email
El recorrido operativo de un correo y sus señales: envío, entrega, rebote y reclamo. Los flujos de interacción (tracking e interés) tienen su propia página.
Resumen
El sistema maneja seis flujos. Tres pertenecen al lado del correo y se documentan aquí; los otros tres corresponden a la interacción del destinatario.
Envío
listmonk compone y entrega vía SES.
02Tracking
Registro del click en el CTA.
03Clicks
Redirección a la landing con UUID.
04Registro de interés
FastAPI valida y persiste.
05Bounce
Hard bounce → blocklist.
06Complaint
Reclamo de spam → blocklist.
Flujo de envío
El operador prepara una campaña en listmonk asociada a una lista de suscriptores; el mensaje viaja hasta la bandeja de entrada del destinatario a través de Amazon SES.
Explicación paso a paso
Preparación
El operador crea la campaña en listmonk asociada a una lista de suscriptores.
Renderizado
listmonk lee los datos desde PostgreSQL y renderiza un mensaje por destinatario, reemplazando el CTA por un enlace individual bajo trk.medinodo.com.
Conexión SMTP
Abre una conexión SMTP autenticada y cifrada (LOGIN + STARTTLS) con Amazon SES usando las credenciales de AWS IAM.
Entrega
SES valida la identidad de envío con los registros DNS de Cloudflare y entrega el mensaje al proveedor de correo del destinatario.
Errores posibles
Fallo de autenticación SMTP; rechazo de SES por identidad no verificada o por límites de cuota/sandbox por región; alineación DKIM/SPF/DMARC incorrecta.
Buenas prácticas
Mantener verificados los registros de autenticación en Cloudflare antes de cada envío masivo y vigilar las cuotas de SES por región.
Flujo de bounce
Cuando SES detecta un hard bounce (dirección inválida), el evento viaja por un camino separado del de entrega para evitar reenvíos futuros.
Detección
SES detecta un hard bounce y publica el evento en el tópico SNS ses-bounces.
Notificación
SNS hace un POST al webhook público https://trk.medinodo.com/webhooks/service/ses.
Enrutamiento
Cloudflare Tunnel entrega la solicitud a listmonk.
Registro y blocklist
listmonk registra el evento en PostgreSQL y coloca al suscriptor en blocklist según los umbrales configurados.
Errores posibles
Webhook inaccesible o rechazado; reintentos de SNS; el suscriptor no queda en blocklist si el evento no llega.
Buenas prácticas
Monitorear la disponibilidad del webhook: si falla, se pierde la supresión y se corre el riesgo de reenviar a direcciones inválidas.
Flujo de complaint
Un complaint ocurre cuando una persona marca el mensaje como spam. Sigue el mismo transporte de feedback que el bounce, pero refleja intención del destinatario, no una dirección inválida.
Reclamo
El destinatario marca el mensaje como spam en su proveedor de correo.
Feedback
SES genera el complaint y lo publica en el tópico SNS ses-bounces.
Entrega del evento
SNS hace POST al webhook; Cloudflare Tunnel lo entrega a listmonk.
Supresión
listmonk registra el evento y coloca al suscriptor en blocklist, evitando volver a escribir a quien marcó el mensaje como spam.
Errores posibles
Pérdida del evento por webhook caído; el suscriptor podría recibir nuevos envíos pese al reclamo si no se aplica la blocklist.
Buenas prácticas
Tratar los complaints como señal prioritaria de reputación: respetar la blocklist protege la capacidad de entrega de futuras campañas.
Nota: correo entrante
Si una persona responde al mensaje, la respuesta llega a info@medinodo.com mediante Google Workspace. No regresa a listmonk ni pasa por el flujo de SNS: es un camino independiente del feedback de entrega.
Consideraciones
Dos caminos, una fuente de verdad
Entrega y feedback usan rutas distintas, pero ambos terminan escribiendo en PostgreSQL. La blocklist es la decisión que evita reenvíos costosos.