Como corrigir o erro de reCAPTCHA no WPForms
O que é o reCAPTCHA do WPForms que não funciona?
O reCAPTCHA do WPForms é a proteção antispam do Google que você liga no plugin para barrar bots nos formulários. O WPForms suporta três tipos: reCAPTCHA v2 Checkbox (a caixa ‘Não sou um robô’), v2 Invisible (sem campo visível, só um selo) e v3 (roda em segundo plano e dá uma nota de comportamento de 0.0 a 1.0). Cada tipo usa um par próprio de chaves (Site Key e Secret Key) que você gera no painel do Google reCAPTCHA e cola em WPForms -> Settings -> CAPTCHA. Quando algo na configuração não bate, o formulário deixa de enviar, exibe um erro de chave inválida ou o desafio simplesmente não aparece. Na maioria absoluta dos casos não é bug do WPForms nem do Google: é chave trocada, tipo de chave diferente do que está selecionado no plugin, domínio que não foi cadastrado no painel do Google, ou um plugin de cache que minificou e quebrou o JavaScript do reCAPTCHA. O conserto é alinhar tipo, chaves e domínio, e isolar conflito de cache ou de scripts duplicados.
Como identificar
- Ao enviar o formulário aparece ‘Google reCAPTCHA verification failed, please try again later’ e o envio não conclui.
- No lugar da caixa do reCAPTCHA aparece o aviso ‘Error for site owner: Invalid site key’ ou ‘Error for site owner: Invalid domain for site key’.
- O reCAPTCHA não aparece no formulário, mesmo com o campo ou a opção de CAPTCHA ativada no construtor.
- O formulário acusa ‘This field is required’ embaixo do reCAPTCHA, mesmo quando o visitante marcou a caixa corretamente.
- Em formulários com v2 Invisible ou v3 o badge do Google some ou some o envio trava sem nenhuma mensagem visível para o visitante.
- No console do navegador aparecem erros de script duplicado do reCAPTCHA ou falha ao carregar o api.js do Google.
Como prevenir
- Sempre que gerar chaves no Google, anote qual tipo de reCAPTCHA elas são e selecione exatamente esse tipo em WPForms -> Settings -> CAPTCHA antes de salvar.
- Cadastre o domínio de produção e o de homologação na chave do Google já na configuração, usando o domínio puro sem http nem www, para nunca cair em ‘Invalid domain for site key’.
- Ao instalar um plugin de cache, exclua o api.js do reCAPTCHA da minificação e da combinação de JavaScript antes de ativar a otimização no site todo.
- Depois de qualquer mudança de chaves, de tipo de reCAPTCHA ou de plugin de cache, faça um envio de teste em janela anônima e confirme que o formulário conclui antes de considerar o ajuste pronto.
Causa
- A Site Key e a Secret Key foram coladas trocadas, com espaço extra, ou são de outro tipo de reCAPTCHA; o WPForms documenta que formulário que não envia após configurar o reCAPTCHA quase sempre é chave incorreta ou incompatível.
- O tipo de chave gerado no Google (v2 Checkbox, v2 Invisible ou v3) é diferente do reCAPTCHA Type selecionado em WPForms -> Settings -> CAPTCHA; cada tipo exige um par de chaves próprio e gerar chaves de tipo errado dispara 'Invalid site key'.
- O domínio do site não está cadastrado na lista de domínios da chave no painel do Google reCAPTCHA, ou foi cadastrado com 'http' ou 'www' na frente, o que gera 'Invalid domain for site key'.
- Um plugin de cache ou de otimização (WP Rocket, Autoptimize, W3 Total Cache) minificou, adiou ou combinou o JavaScript e quebrou o api.js do reCAPTCHA, fazendo a validação falhar com 'verification failed'.
- Há dois scripts de reCAPTCHA carregando na mesma página (o do WPForms mais o de um plugin antispam ou do tema), e o conflito faz o campo exigir validação que nunca completa, gerando o 'This field is required'.
- As chaves foram criadas no painel legado e pararam de validar após a migração do reCAPTCHA para o Google Cloud, retornando 'Invalid key type' ou o aviso de que a chave não está protegendo o site.
- Em v3, o Score Threshold ficou alto demais nas configurações do WPForms e visitantes legítimos com nota baixa são barrados como bot mesmo sem nenhum erro aparente no formulário.
Como resolver
- Confirme o tipo de reCAPTCHA e cole as chaves certas: abra a aba CAPTCHA do WPForms, veja qual tipo está selecionado e confirme que a Site Key e a Secret Key coladas são exatamente as desse mesmo tipo no Google, sem espaços extras. Se você trocou de tipo, é preciso gerar um par novo de chaves.
WPForms -> Settings -> CAPTCHA Selecionar o reCAPTCHA Type: v2 Checkbox, v2 Invisible ou v3 Colar Site Key e Secret Key do MESMO tipo, sem espaco antes ou depois Clicar em Save Settings - Cadastre o domínio do site no painel do Google reCAPTCHA: no painel do Google, abra a chave do site e confirme que o domínio está na lista de domínios permitidos. O WPForms orienta cadastrar o domínio puro, sem o protocolo nem o www na frente.
Acessar o Google reCAPTCHA admin -> selecionar a chave do site Adicionar o domínio em Domains, ex.: seusite.com.br Não usar https:// nem www. (use seusite.com.br, não https://www.seusite.com.br) Salvar e aguardar alguns minutos para propagar - Ative o reCAPTCHA no formulário e teste em janela anônima: com as chaves salvas, ligue a proteção no formulário e faça um envio de teste em janela anônima para validar sem cache de sessão. No v2 Checkbox o campo aparece no construtor; no v2 Invisible e no v3 a proteção é só uma chave que você liga.
Editar o formulário -> Settings -> Spam Protection and Security -> ativar Enable Google reCAPTCHA Ou, no v2 Checkbox: arrastar o campo reCAPTCHA em Standard Fields Salvar o formulário e enviar um teste em janela anonima - Isole o conflito de cache e de minificação de JavaScript: se o erro é 'verification failed', desligue temporariamente a otimização de JavaScript do plugin de cache, limpe todos os caches e teste de novo. O api.js do reCAPTCHA não pode ser combinado nem adiado.
Desligar Minify/Combine/Delay JavaScript no WP Rocket ou Autoptimize Limpar o cache do plugin, do servidor e do CDN Testar o envio; se voltar a funcionar, excluir o api.js do Google da otimização https://www.google.com/recaptcha/api.js - Resolva scripts duplicados com o No-Conflict Mode: se o erro é 'This field is required' mesmo com a caixa marcada, costuma haver dois scripts de reCAPTCHA na página. Abra o console do navegador para confirmar e ligue o modo sem conflito do WPForms para forçar só o script dele.
Abrir o console do navegador (F12) e procurar erro de script reCAPTCHA duplicado WPForms -> Settings -> CAPTCHA -> ativar No-Conflict Mode Desativar outro plugin antispam que também injete reCAPTCHA na mesma página - Recrie chaves legadas e ajuste o Score Threshold do v3: se a chave é antiga e dá 'Invalid key type', gere um par novo no painel atual do Google e cole no WPForms selecionando o tipo correspondente. No v3, se visitantes reais estão sendo barrados, baixe o Score Threshold para um valor mais permissivo.
Gerar novo par de chaves no painel atual do Google reCAPTCHA WPForms -> Settings -> CAPTCHA -> colar as chaves novas e selecionar o tipo No v3, reduzir o Score Threshold (ex.: de 0.5 para 0.4) e salvar
// functions.php do tema filho — exclui o api.js do reCAPTCHA da otimizacao de
// JavaScript que quebra a validacao (causa comum do 'verification failed').
// Marca o handle do Google como excluido de defer/combine de plugins de cache
// que respeitam o atributo data-no-optimize / o filtro script_loader_tag.
add_filter( 'script_loader_tag', function ( $tag, $handle, $src ) {
if ( false !== strpos( $src, 'recaptcha/api.js' ) || false !== strpos( $src, 'gstatic.com/recaptcha' ) ) {
// remove defer/async injetado por plugins de cache e sinaliza 'nao otimizar'
$tag = str_replace( array( ' defer', ' async' ), '', $tag );
$tag = str_replace( ' src=', ' data-no-optimize="1" data-cfasync="false" src=', $tag );
}
return $tag;
}, 20, 3 );














