Volver al blog
Email10 de junio de 20265 min de lectura

Tu formulario funciona y el mensaje no llega: así se pierden clientes

Un formulario que no entrega no es un fallo de diseño. Esto es lo que ocurre entre el clic y tu bandeja.

El formulario está en la página, la gente lo llena y tú no recibes nada. A veces el mensaje llega a spam, a veces no sale del servidor, y a veces existe pero nadie mira ese buzón. El visitante cierra la pestaña y llama al siguiente de la lista.

Qué ocurre entre el clic y tu bandeja

Cuando alguien pulsa enviar, el navegador entrega el mensaje a tu servidor, y el servidor tiene que reenviarlo a tu correo. Ese segundo paso es el que falla en silencio.

  • El servidor usa la función de correo del sistema, que casi nunca está autenticada: el mensaje se pierde o acaba en spam.
  • Faltan los registros SPF, DKIM y DMARC, las firmas que demuestran a Gmail y Outlook que el correo sale de tu dominio.
  • El filtro anti-spam del servidor bloquea el mensaje por una palabra del asunto o porque no permite respuesta.
  • El formulario tiene una trampilla antispam que también atrapa los mensajes buenos.
  • El buzón que recibe los formularios no existe, o existe y nadie lo revisa.

Cómo comprobarlo en diez minutos

  • Rellena el formulario con tu propio correo. Si llega, repítelo desde el móvil con datos móviles.
  • Si no llega, revisa la carpeta de correo no deseado y los registros del servidor.
  • Comprueba los registros SPF, DKIM y DMARC de tu dominio: hay verificadores gratuitos que responden en segundos.
  • Envía un correo a tu dominio desde Gmail y desde Outlook y lee el encabezado Recibido por.
  • Si nada llega, el fallo es del servidor y el envío tiene que moverse a un servicio de correo transaccional.
javascript
// El envío sale por SMTP autenticado, no por la función mail() del servidor
const transporter = nodemailer.createTransport({
  host: "smtp.mailprovider.com",
  port: 587,
  auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS },
});

await transporter.sendMail({
  from: '"Formulario web" <form@tudominio.com>',
  to: "ventas@tudominio.com",
  replyTo: datos.correo, // responder con un clic al visitante
  subject: "Nuevo mensaje de " + datos.nombre,
  text: datos.mensaje,
});

Lo que dejo en cada proyecto

El envío pasa por un servicio de correo transaccional, el mensaje se guarda también en la base de datos por si el correo se pierde, el visitante recibe una copia confirmando que su mensaje llegó, y si un formulario deja de entregar te avisa.

Prueba de fuego

Rellena hoy tu propio formulario desde el móvil, con datos móviles, y espera a verlo en la bandeja. Es la única prueba que importa.

Un formulario que no llega no es un fallo de diseño. Es una venta que no existió.