Três resultados diferentes
O agradecimento pode ser apenas um estado da interface. O registro e o email recebido são outras etapas. Envie uma mensagem reconhecível no site publicado e acompanhe a mesma tentativa. Os códigos abaixo são do Formgong; em outro serviço, consulte a documentação correspondente.
Procure a requisição em Network
Abra as ferramentas do navegador e envie o formulário. Procure o POST para https://formgong.com/submit, conferindo chave, campos e resposta. Sem requisição, revise o botão e o evento de envio. HTML usa action e method; JavaScript precisa da URL certa em fetch.
Confira a resposta antes de mostrar sucesso
Peça JSON com Accept: application/json e valide HTTP e success. Fetch pode terminar com erro do servidor. Um POST HTML comum recebe redirecionamento. Use try/catch ao chamar o exemplo e mantenha os campos no erro.
// Call from your form's submit handler inside try/catch.
// Keep the entered fields when the request fails.
async function sendContactForm(form) {
const response = await fetch("https://formgong.com/submit", {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
},
body: JSON.stringify({
...Object.fromEntries(new FormData(form)),
access_key: "fk_your_access_key",
}),
});
const result = await response.json();
if (!response.ok || result.success !== true) {
throw new Error(result.message || "Submission failed");
}
// Accepted by Formgong; this is not email-delivery confirmation.
return result.id;
}O código indica a próxima checagem
unknown_access_key aponta para a chave; origin_not_allowed, para o domínio. turnstile_missing e turnstile_failed indicam token ausente ou inválido. rate_limited e limit_exceeded são limites diferentes, não resolvidos por cliques seguidos.
Desabilite o botão durante a espera e reabilite-o ao terminar. Não apague a mensagem quando algo falhar.
Examine também os registros de spam
Abra o formulário que corresponde à chave da página. Um botcheck preenchido pode produzir uma resposta aparentemente positiva e registrar spam sem avisos. Se a avaliação por IA retiver spam, confira essa classificação também.
Se há registro, siga para os avisos
Confirme o email do proprietário e veja se as notificações desse formulário estão ativas. Confira o destinatário verificado, spam, filtros e encaminhamentos.
Uma mensagem no Telegram ajuda a isolar o canal de email, mas não comprova sua entrega. A resposta automática ao visitante é outra mensagem com configurações próprias.
Depois de mudar a proteção
Atualize o código com site key e cf-turnstile-response. Tokens expiram e só funcionam uma vez; obtenha outro antes de repetir, se necessário. O secret key não entra no navegador. Teste o domínio publicado.
Guarde o que ajuda a investigar
Anote URL, horário, status HTTP, código e ID do envio, quando houver. Não publique dados de clientes ou segredos. Após corrigir, teste todo o caminho.
O exemplo HTML oferece uma base simples, e o guia de Telegram explica outro canal.
Perguntas frequentes
success: true confirma o email?
Não. O Formgong aceitou a requisição; a entrega da notificação é uma etapa separada.
Por que Telegram chega e email não?
Os canais são independentes. Confira notificações, destinatários verificados e spam.
Por que botcheck não mostra erro?
É uma armadilha para bots: o envio pode parecer correto e virar spam sem notificações.
Como tentar novamente com Turnstile?
Obtenha um token novo e confira seu envio em cf-turnstile-response. Não reutilize um já consumido.
Fontes e documentação
Referências oficiais deste guia: MDN: Fetch API, Cloudflare: Turnstile token validation. Documentação do Formgong, Onde os dados ficam.
Ler em Markdown