Como corrigir o spam no WPForms mesmo com reCAPTCHA ativo
O que é spam no WPForms com reCAPTCHA ativo?
O WPForms recebendo spam mesmo com reCAPTCHA ativo e a situacao em que entradas automatizadas continuam chegando pelo formulário apesar de o reCAPTCHA do Google estar configurado em WPForms – Settings – CAPTCHA. O reCAPTCHA e apenas uma das camadas de proteção do WPForms, e sozinho ele não cobre todos os vetores de spam. Bots modernos, granjas de resolucao de CAPTCHA e envios diretos ao endpoint do formulário conseguem passar por um reCAPTCHA v2 ou por um v3 com limiar de pontuacao mal calibrado.
A documentação do WPForms trata o anti-spam como defesa em camadas: a Proteção Antispam Moderna baseada na técnica de honeypot, o tempo mínimo de envio, o filtro de palavras, o filtro de pais e o Akismet trabalham juntos. Formulários criados em versões antigas do plugin frequentemente nasceram sem a Proteção Antispam Moderna ligada, entao o reCAPTCHA acaba sendo a única barreira ativa, e ela e insuficiente isoladamente.
Como identificar
- Novas entradas de spam aparecem em WPForms – Entries com nomes aleatorios, links e textos em outro idioma, mesmo com o reCAPTCHA habilitado no formulário.
- Notificações por e-mail de envios de formulário chegam com conteúdo promocional ou ofensivo, várias vezes ao dia, sempre do mesmo padrão.
- O selo do reCAPTCHA aparece no rodape ou no botão do formulário, mas as entradas de spam não param.
- As entradas de spam tem o campo de tempo de preenchimento praticamente zero, sinal de envio automatizado por bot.
- Em formulários antigos, a aba Spam Protection and Security mostra a opção Enable anti-spam protection desligada.
Como prevenir
- Sempre deixar a Proteção Antispam Moderna ligada em todos os formulários novos e auditar os formulários antigos, que podem ter nascido com ela desligada.
- Tratar o anti-spam em camadas: reCAPTCHA ou Turnstile mais Proteção Antispam Moderna mais tempo mínimo de envio mais filtro de palavras, nunca depender de uma única barreira.
- Manter a opção de armazenar entradas de spam ligada para revisar falsos positivos e ajustar os filtros sem perder contatos legitimos.
- Manter o WPForms e o plugin de CAPTCHA atualizados, já que novas versões melhoram a detecção e corrigem brechas exploradas por bots.
- Revisar periodicamente a lista de palavras bloqueadas e o limiar de pontuacao do reCAPTCHA v3 conforme o padrão de spam recebido muda.
Causa
- A Proteção Antispam Moderna (Enable anti-spam protection) esta desligada no formulário. Formulários criados em versões antigas do WPForms nasceram sem essa opção ligada, deixando o reCAPTCHA como única barreira.
- Apenas um tipo de CAPTCHA fica ativo no site inteiro, e o reCAPTCHA v2 checkbox e contornado por granjas de resolucao de CAPTCHA; o reCAPTCHA v3 com limiar de pontuacao (Score Threshold) muito permissivo aprova bots.
- O reCAPTCHA esta configurado globalmente em WPForms - Settings - CAPTCHA, mas o botão Enable Google reCAPTCHA não foi ativado dentro do formulário específico, em Settings - Spam Protection and Security.
- O tempo mínimo de envio (Minimum time to submit, padrão 2 segundos) esta zerado ou desativado, permitindo que bots enviem o formulário instantaneamente.
- Faltam camadas de filtro de conteúdo: o filtro de palavras (keyword filter) e o filtro de pais (country filter) estão desativados, entao spam com links e termos promocionais passa sem bloqueio.
- As chaves do reCAPTCHA pertencem a outra versão (v2 gerada para um site v3, ou vice-versa) ou o domínio cadastrado no console do Google não corresponde ao site, fazendo a validação falhar silenciosamente.
Como resolver
- Ative a Proteção Antispam Moderna no formulário: Abra o formulário afetado no construtor do WPForms e va para a aba de proteção contra spam e segurança. Localize a opção de proteção antispam moderna baseada em honeypot e ligue o botão. Em formulários antigos ela costuma estar desligada, e essa e a camada que barra a maioria dos bots sem pedir nada ao visitante. O caminho de menu e este:
WPForms -> All Forms -> abrir o formulário -> Settings -> Spam Protection and Security Enable anti-spam protection = ON - Defina um tempo mínimo de envio: Ainda na mesma aba, configure o tempo mínimo de envio. Bots preenchem e enviam em fracoes de segundo; um valor de 3 a 5 segundos descarta esses envios automatizados sem afetar quem preenche de verdade. Ajuste o campo correspondente:
Settings -> Spam Protection and Security -> Minimum time to submit = 3 Store spam entries in the database = ON - Ligue o filtro de palavras e o filtro de pais: Ative o filtro de palavras para bloquear envios que contenham termos de spam; o WPForms já traz uma lista padrão de palavras comuns de spam que você pode complementar com uma palavra ou frase por linha. Se o spam vem concentrado em determinadas regioes, ligue também o filtro de pais no modo de bloqueio. Use os controles abaixo:
Settings -> Spam Protection and Security -> Enable keyword filter = ON Edit keyword list -> uma palavra ou frase por linha Enable country filter = ON -> Deny -> selecionar paises - Confira e calibre o reCAPTCHA: Garanta que o reCAPTCHA esta de fato ativo no formulário, e não apenas configurado no painel global. Verifique se as chaves de site e secreta correspondem a versão escolhida e ao domínio cadastrado no console do Google. Se usa o reCAPTCHA v3, reduza o limiar de pontuacao para reprovar mais visitantes suspeitos. Os pontos de verificacao são:
WPForms -> Settings -> CAPTCHA -> conferir Site Key e Secret Key Settings -> Spam Protection and Security -> Enable Google reCAPTCHA = ON reCAPTCHA v3 -> Score Threshold = 0.6 - Ative o Akismet para os casos restantes: Se ainda restar spam após as camadas anteriores, ligue o Akismet, que avalia cada envio contra a base global de spam da Automattic. Ele exige o plugin Akismet instalado e uma chave de API valida configurada nas Configurações do Akismet. Depois ative a integração no formulário:
Plugins -> Add New -> instalar e ativar Akismet -> inserir chave de API Settings -> Spam Protection and Security -> Enable Akismet anti-spam protection = ON
<?php
// functions.php do tema filho ou snippet do plugin FULL
// Eleva o tempo minimo padrao de envio dos formularios WPForms para 4 segundos,
// reforcando o bloqueio de bots que enviam instantaneamente.
add_filter( 'wpforms_process_min_submit_time', function( $min_time, $form_data ) {
return 4; // segundos
}, 10, 2 );
// Bloqueia envios cujo campo de mensagem contenha uma URL,
// padrao tipico de spam que passa pelo reCAPTCHA.
add_filter( 'wpforms_process_filter', function( $fields, $entry, $form_data ) {
foreach ( (array) $fields as $field ) {
$value = isset( $field['value'] ) ? (string) $field['value'] : '';
if ( preg_match( '#https?://#i', $value ) ) {
wpforms()->process->errors[ $form_data['id'] ]['header'] = 'Envio bloqueado por suspeita de spam.';
break;
}
}
return $fields;
}, 10, 3 );














