¿Cómo evito el spam en los formularios de contacto de WordPress sin usar un CAPTCHA?
Por Eureka Studio · Actualizado
Respuesta corta
En lugar de un CAPTCHA en tus formularios de WordPress, combina comprobaciones invisibles: un campo trampa oculto que solo rellenan los bots, un tiempo mínimo de cumplimentación, un token que resiste la caché de página y límites por IP y por correo electrónico. Pon en cuarentena los mensajes dudosos en lugar de borrarlos. Un plugin local puede hacerlo para Elementor, Contact Form 7 y WPForms sin enviar datos a ningún otro sitio. En Hushfort, la protección de plugins de formularios es parte de Pro; el plugin gratuito cubre solo los comentarios y las valoraciones.
Pasos
1Paso 1
Observa cómo los bots atacan tu formulario
Los bots rellenan todos los campos que encuentran, incluido uno oculto que una persona nunca ve, o envían sin llegar a cargar la página. El registro de Hushfort nombra cada caso: campo trampa rellenado, sin token, rellenado demasiado rápido, demasiados enlaces.
2Paso 2
Activa el Escudo antispam en modo Supervisión
En Hushfort, abre el Escudo antispam, actívalo y pon Modo en "Solo registrar — modo Supervisión, no bloquea nada". Con Hushfort Pro instalado, deja activado Plugins de formularios y guarda. Registra lo que bloquearía sin bloquear nada todavía.

3Paso 3
Ajusta los límites silenciosos (Pro)
Mantén corto el Tiempo mínimo de cumplimentación (3 segundos). Con Pro, limita además cuántos mensajes por hora puede enviar una IP (Límite por IP) o una dirección de correo electrónico (Límite por correo electrónico). Los mensajes con más enlaces que el Máximo de enlaces van a cuarentena.
4Paso 4
Revisa el registro y cambia a Bloquear
Al cabo de unos días, mira lo que ha detectado el modo Supervisión. Si no hay mensajes reales, pon Modo en "Bloquear (recomendado)" y guarda.

5Paso 5
Las personas reales simplemente envían
Un visitante escribe durante medio minuto, nunca ve el campo oculto y envía. Sin acertijos ni cuadrículas de imágenes.

Por qué importa
El spam en formularios es una simple molestia hasta que deja de serlo. Entierra las consultas reales, te acostumbra a leer el correo por encima y puede hundir la reputación de envío de tu servidor de correo si el formulario manda respuestas automáticas. En webs con mucho tráfico también consume tiempo de servidor, porque cada envío pasa por todo el procesamiento del plugin de formularios.
La solución habitual, un CAPTCHA, traslada el coste a tus visitantes. Resuelven acertijos, algunos se rinden y quienes usan herramientas de privacidad se quedan atascados. La mayoría de los servicios CAPTCHA también cargan código de terceros y envían datos de los visitantes fuera de tu servidor.
Hay una forma más discreta. Los bots se comportan de manera distinta a las personas, y eso se puede comprobar en silencio:
- Rellenan campos ocultos. Un campo trampa (honeypot) es un campo oculto para las personas pero visible en el HTML. Una persona lo deja vacío; un bot lo rellena.
- Son rápidos. Una persona necesita unos segundos para rellenar un formulario. Un bot, milisegundos.
- Se repiten. Una IP o una dirección de correo que envía diez mensajes en una hora no es un cliente.
- Pegan enlaces. Un mensaje lleno de enlaces rara vez es una consulta real.
Errores habituales
- Bloquear en lugar de poner en cuarentena. Cuando una comprobación no está segura, guarda el mensaje para revisarlo. Borrar la pregunta de un cliente real es peor que leer un spam.
- Pasar directamente a Bloquear. Empieza unos días en un modo que solo registra. Comprueba lo que se habría bloqueado antes de dejar que bloquee.
- Tokens que se rompen con la caché. Si tu token antispam forma parte de una página en caché, todos los visitantes comparten un mismo token caducado. Usa una protección que obtenga su token al cargar la página.
- Una sola comprobación. Un campo trampa por sí solo frena a los bots simples. Añade un control del tiempo de cumplimentación y límites.
Sin plugin
La mayoría de los plugins de formularios traen una versión básica de esto:
- Formularios de Elementor Pro: añade un campo "Honeypot" desde la lista de campos.
- Contact Form 7: añade un campo trampa mediante un complemento; CF7 también es compatible con Akismet si aceptas enviar datos a ese servicio.
- WPForms: incluye un token antispam integrado y un campo trampa opcional en los ajustes de cada formulario.
También puedes añadir a mano un campo trampa sencillo a cualquier formulario que controles:
<div style="position:absolute;left:-9999px" aria-hidden="true">
<label>Leave this empty <input type="text" name="website" tabindex="-1" autocomplete="off"></label>
</div>
<?php
if ( ! empty( $_POST['website'] ) ) {
wp_die( 'Spam detected.', 403 );
}
Las limitaciones: cada plugin de formularios lo hace a su manera, normalmente no hay un límite de envíos compartido entre formularios, ni una cuarentena que recoja los errores, ni nada para los comentarios o las valoraciones. Acabas configurando la misma idea cinco veces.
Si algo sale mal
- Han dejado de llegar mensajes reales. Cambia el Escudo antispam a modo Supervisión, envía una prueba y mira en el registro qué comprobación lo detuvo.
- Los formularios fallan solo a algunos visitantes. Vacía una vez la caché de página después de activar la protección.
- Sigue colándose spam. Baja el límite de enlaces, añade palabras o dominios a la lista de bloqueo, o activa el modo estricto en los formularios que solo deban aceptar proveedores de correo conocidos.
Con Hushfort
El Escudo antispam de Hushfort protege los comentarios y las valoraciones de WooCommerce en Hushfort Security, el plugin de seguridad gratuito para WordPress. Los plugins de formularios necesitan Hushfort Pro, que añade seis de los más populares (Elementor Pro, Contact Form 7, WPForms, Gravity Forms, Fluent Forms y Forminator) a la misma pantalla.
- Campo trampa invisible, tiempo mínimo de cumplimentación y tokens firmados que resisten la caché de página. El token lo proporciona un script diminuto de unos 2 KB y sin cookies.
- Pro: límites por defecto por IP (5 por hora) y por correo electrónico (3 por hora); los mensajes con más de 2 enlaces van a cuarentena.
- Pro: una lista de unos 9.900 dominios de correo desechable, tus propias listas de bloqueo y filtros de palabras.
- Pro: cuarentena con aprendizaje mediante "No es spam".
- Tiene un modo Supervisión, para que veas lo que bloquearía antes de que bloquee.
Sin CAPTCHA, sin API externas y sin que ningún dato de los formularios salga nunca de tu servidor.
Preguntas frecuentes
¿De verdad los campos trampa frenan el spam en formularios?
¿Por qué evitar reCAPTCHA?
¿Funciona con la caché de página?
¿Qué plugins de formularios están cubiertos?
¿Qué pasa con un mensaje que parece spam pero podría ser auténtico?
Guías relacionadas
¿Cómo acabo con el spam en los comentarios de WordPress o desactivo los comentarios?
Frena el spam en los comentarios de WordPress sin CAPTCHA, o desactiva los comentarios en todo el sitio. Reglas separadas para entradas y valoraciones.
Ver los pasos¿Cómo evito los registros de usuarios spam en WordPress?
Frena los registros de spam en WordPress y WooCommerce con límites por hora, un tope para todo el sitio y campos trampa invisibles, sin bloquear el pago.
Ver los pasos¿Cómo detecto y bloqueo los bots maliciosos y el Googlebot falso en WordPress?
Los bots que se hacen pasar por Googlebot ralentizan WordPress. Verifica los rastreadores por IP, limita las peticiones por IP y no bloquees nunca el pago.
Ver los pasos

