
🔧 Contact Form 7: configurar la entrega de correo y solucionar errores de envío
Cómo Contact Form 7 envía correos y por qué no llegan
Contact Form 7 se usa en más de 5 millones de sitios web, lo que lo convierte en el plugin de formularios más popular para WordPress. Configurar un formulario de tres campos toma apenas unos minutos, pero cuando los correos dejan de llegar, empiezan los dolores de cabeza: los dueños de sitios pierden prospectos, no tienen idea de qué falló y terminan sumergiéndose en hilos de foros.
El problema casi nunca es el plugin en sí. CF7 entrega el correo a la función wp_mail(), que lo pasa a su servidor. A partir de ahí, lo que sucede depende de su hosting, la configuración de PHP, los plugins activos y una docena de factores más. Basta con una API REST deshabilitada o un campo «From» incorrecto para que el formulario funcione pero los correos no lleguen.
Hemos compilado una guía paso a paso para configurar la plantilla de correo de CF7 y analizamos todas las razones comunes de fallo en la entrega, con soluciones específicas probadas en decenas de sitios.
💡 Resumen rápido:
- Completar los campos Para, De y Asunto en la configuración de correo
- Copiar una plantilla lista de cuerpo de correo en HTML
- Revisar las razones principales por las que los correos no se envían
- Configurar SMTP para una entrega confiable
Configuración de la plantilla de correo: paso a paso
Abra su formulario en el panel de administración: Contact Form → seleccione su formulario → pestaña «Mail». Aquí es donde CF7 ensambla el correo a partir de tres partes: encabezados, asunto y cuerpo. Un error en cualquier campo interrumpe la entrega, así que repasemos cada uno.
Para, De y Asunto
Para es su dirección de correo funcional donde llegan los envíos. Por ejemplo, [email protected] o una dirección de Gmail si está usando un plugin SMTP.
De tiene una regla clave: el dominio del remitente debe coincidir con el dominio de su sitio. La mayoría de los hostings rechazan correos donde el campo «De» contiene [email protected] mientras el sitio corre en mysite.com. Use [email protected]; no es necesario que el buzón exista realmente, y eso no es problema. El servidor de correo verifica el dominio, no si la dirección es real.
Asunto puede incluir macros de CF7 para datos dinámicos:
1 [_site_title] — Form "Contact Form"
[_site_title] inserta automáticamente el nombre de su sitio desde los ajustes de WordPress. Así ve de inmediato de qué proyecto provino el envío.
Encabezados adicionales: deje Reply-to tal cual; CF7 establecerá automáticamente el correo del campo del formulario que usted especifique en el cuerpo del mensaje.
Cuerpo del correo: plantilla HTML
El correo predeterminado de CF7 es texto plano con etiquetas de campo. Se ve barato y es difícil de leer. Esta es la plantilla que usamos en todos nuestros proyectos, con logotipo, maquetación adecuada y enlaces cliqueables de correo y teléfono:
1 <img src="https://YOUR_DOMAIN.COM/wp-content/uploads/2024/logo-150x150.png" 2 style="max-width: 150px !important;"> 3 4 <h3>The user submitted the following information:</h3> 5 6 <p><b>Name:</b> [text-59]</p> 7 <p><b>E-mail:</b> <a href="mailto:[Email]">[Email]</a></p> 8 <p><b>Phone:</b> <a href="tel:[tel-116]">[tel-116]</a></p> 9 <p><b>Message:</b> [textarea-102]</p> 10 11 <p>Message sent from [_site_title] ([_site_url])</p>
Puntos clave: el logotipo debe ser cuadrado y compacto (unos 150 px por lado), de lo contrario se romperá en los clientes de correo. Las macros entre corchetes ([text-59], [Email]) son las etiquetas de los campos de su formulario; reemplácelas con sus propios nombres de la pestaña «Form». Y asegúrese de marcar la casilla «Use HTML content type» debajo del editor de plantillas, de lo contrario las etiquetas HTML llegarán como texto plano.

6 Razones por las que los correos no se envían y cómo solucionarlas
1. Campo «De» incorrecto
El error más común: el campo «De» contiene el correo del cliente desde el formulario, [Email]. El servidor receptor ve un correo de un dominio gmail.com enviado desde su hosting y lo bloquea por suplantación. Solución: «De» siempre debe ser una dirección en el dominio de su sitio. Ponga el correo del cliente en Reply-to mediante un encabezado adicional:
1 Reply-To: [Email]
2. Conflictos con plugins de seguridad
Plugins como Wordfence, iThemes Security (ahora Solid Security) y All-In-One Security pueden bloquear las solicitudes HTTP salientes de WordPress, incluido el envío de correos. El diagnóstico es simple: desactive todos los plugins excepto Contact Form 7 y pruebe el formulario. Si funciona, active los plugins uno por uno para encontrar al culpable.
3. La API REST está deshabilitada
Contact Form 7 usa la API REST de WordPress para enviar formularios mediante AJAX. Los plugins de optimización, como Clearfy Cache (nota: a octubre de 2025, el proyecto ha sido absorbido por Super Page Cache y ya no se desarrolla por separado; se recomienda a los usuarios actuales migrar a Super Page Cache), pueden deshabilitar la API REST para acelerar el sitio. Revise la configuración de su optimizador: la opción de API REST debe estar en «Off», lo que significa que la API REST está habilitada y funcionando.
4. El hosting bloquea la función mail()
En hostings baratos, la función PHP mail() a menudo está deshabilitada o restringida. Contact Form 7 envía correos a través de ella por defecto. Contacte al soporte de su hosting y pregunte si mail() está permitida en su plan. Si no es así, cambie a SMTP (vea la sección siguiente); esto resuelve el problema por completo.
5. Los correos caen en spam
Incluso si el correo se envió, Gmail o el servicio de correo de su hosting pueden ponerlo en spam. Las razones incluyen: falta de registros SPF/DKIM para el dominio, un encabezado «De» «sospechoso», HTML sin una parte de texto. Solución: un plugin SMTP que envíe a través de un servicio externo (Gmail API, Mailgun, SendGrid). Estos firman cada correo con una firma DKIM y usan servidores SMTP de buena reputación, lo que hace que la entregabilidad sea cercana al 100%.
6. Sensibilidad a la versión de PHP y WordPress
CF7 se actualiza activamente (verifique la versión actual en wordpress.org; a mediados de 2026, es la rama 6.x, que corre en PHP 7.4 y superior). Si su hosting ejecuta un PHP 5.6 anticuado, o por el contrario, habilitó PHP 8.4 experimental sin verificar la compatibilidad, los correos pueden fallar silenciosamente. Manténgase en PHP 8.1-8.2; ese es el punto óptimo.
Configuración de SMTP: resuelva el problema de entrega de una vez por todas
SMTP es un protocolo que transmite el correo no a través de la función mail() de su servidor, sino mediante un servicio de correo completo. WordPress tiene una docena de plugins que interceptan wp_mail() y enrutan los correos a través de un servidor SMTP externo.
Qué elegir:
- Gmail API: gratis hasta 500 correos por día a través de Google Workspace o una cuenta personal de Gmail. Ventajas: excelente entregabilidad. Desventajas: necesita crear un proyecto en Google Cloud Console y obtener claves OAuth.
- Brevo (antes Sendinblue): 300 correos gratis por día, SMTP simple con usuario y contraseña. No requiere OAuth.
- Mailgun: 100 correos gratis por día, obtenga una clave API y listo. Para desarrolladores.
Instale cualquier plugin SMTP (WP Mail SMTP, Post SMTP, FluentSMTP; todos son gratuitos en el repositorio de WordPress), ingrese las credenciales de su proveedor y ya no necesitará la función mail(). CF7 sigue funcionando como siempre, pero los correos van por un canal confiable.
CSS y fuentes personalizadas en correos de CF7
Si no solo envía consultas de contacto sino, por ejemplo, confirmaciones de pedido con breves detalles del producto, tiene sentido estilizar el correo. El CSS en el correo electrónico funciona mediante estilos en línea (style=""); los clientes de correo ignoran las hojas de estilo externas. Aquí tiene un ejemplo de plantilla con estilos:
1 <img src="https://YOUR_DOMAIN.COM/logo.png" 2 style="max-width: 150px !important;"> 3 4 <h2 style="font-family: Arial, sans-serif; color: #333;"> 5 The user selected a product: 6 </h2> 7 <h2 style="font-family: Arial, sans-serif;">[hidden-120]</h2> 8 9 <hr style="border: 1px solid #eee;"> 10 11 <h3 style="font-family: Arial, sans-serif; color: #555;"> 12 The user submitted the following information: 13 </h3> 14 15 <p style="font-size: 14px;"><b>Name:</b> [text-59]</p> 16 <p style="font-size: 14px;"><b>Phone:</b> <a href="tel:[tel-116]">[tel-116]</a></p> 17 <p style="font-size: 14px;"><b>Email:</b> [Email]</p> 18 19 <p style="color: #999; font-size: 12px;"> 20 Message sent from <b>[_site_title] ([_site_url])</b> 21 </p>
Se aplican las mismas reglas: logotipo cuadrado, casilla de formato HTML marcada, macros reemplazadas por las suyas. Las fuentes personalizadas de Google Fonts no funcionan en el correo; use pilas de fuentes del sistema (Arial, Helvetica, sans-serif).
⁉️🤔 Preguntas frecuentes
¿Por qué CF7 muestra «Mensaje enviado» pero no hay correo?
CF7 es responsable de recolectar datos y pasarlos a WordPress, no de la entrega final. La respuesta de «éxito» significa que la solicitud AJAX se completó sin errores. El envío real del correo ocurre en segundo plano mediante
wp_mail(), y si algo sale mal en ese paso (el hosting bloqueómail(), la dirección De falló la validación, el correo fue a spam), CF7 no mostrará un error. Por eso siempre debe probar el formulario enviando a un buzón real después de la configuración.
¿Es obligatorio un plugin SMTP?
No es obligatorio, pero sí muy recomendable. Sin SMTP, sus correos los envía la función PHP
mail(), que no autentica al remitente, no firma DKIM y a menudo es bloqueada por los filtros de spam. Un plugin SMTP añade autenticación y mejora drásticamente la entregabilidad. En la práctica, hemos visto docenas de sitios donde el formulario «funcionaba» pero los correos iban a spam o nunca llegaban. Después de habilitar SMTP mediante Post SMTP o FluentSMTP, el problema desapareció en 5 minutos.
¿Qué debo hacer si CF7 dejó de funcionar después de una actualización de WordPress?
Primero, verifique su versión de PHP; CF7 requiere PHP 7.4 o superior (confírmelo en la documentación oficial). Luego desactive los plugins de caché y optimización: a menudo rompen la API REST cuando el núcleo se actualiza. Si eso no ayuda, cambie temporalmente a un tema predeterminado de WordPress y pruebe el formulario. En la mayoría de los casos, es un conflicto con un plugin de caché o seguridad que aún no se ha adaptado a la nueva versión del núcleo.
¿Cómo verifico si la API REST está funcionando?
Abra
https://your-site.com/wp-json/en su navegador. Si ve JSON con una lista de endpoints disponibles, la API REST está activa. Si obtiene un 404 o una página en blanco, la API REST ha sido deshabilitada por un plugin de optimización o seguridad. Este es el método de diagnóstico más rápido: si el endpoint devuelve JSON, CF7 tiene todo lo que necesita para funcionar. Busque ajustes de API REST en plugins como Clearfy, Perfmatters, WP-Optimize o en soluciones de seguridad como Wordfence.
¿Puedo enviar correos con archivos adjuntos mediante CF7?
Sí, CF7 admite la carga de archivos mediante el campo
[file]. En la configuración de correo, en el campo «Attachments», ingrese la macro de ese campo y el archivo se adjuntará al correo. La mayoría de los hostings limitan el tamaño de los adjuntos medianteupload_max_filesizeen PHP (generalmente 2-8 MB). Para cargas múltiples, use campos separados. Si los correos con adjuntos no se envían pero el formulario funciona sin adjuntos, el problema es el límite de tamaño; reduzca el tamaño de los archivos o pida a su hosting que aumente el límite.
¿Qué usar en 2026: CF7 + SMTP o alternativas?
Contact Form 7 sigue siendo el mejor plugin gratuito para formularios de WordPress si necesita personalización y no le teme a explorar configuraciones. Pero el problema de entrega de correos está integrado en la arquitectura misma de WordPress: la función mail() es inherentemente poco confiable.
Así que la fórmula de 2026 es: Contact Form 7 + plugin SMTP. Instale FluentSMTP (gratuito, ligero, sin anuncios en el admin) o Post SMTP y configure el envío a través de Gmail API, Brevo o Mailgun. Estos dos componentes juntos le dan: personalización ilimitada de formularios + entregabilidad de nivel empresarial. Costo: $0, tiempo de configuración: 10 minutos.
Si quiere un formulario que funcione «de fábrica» sin complicaciones, considere WPForms o Ninja Forms. Son de pago, pero el envío SMTP viene integrado por defecto a través de sus propios servidores. La elección es suya: la flexibilidad de CF7 o la simplicidad de las soluciones comerciales.



