Migrei meus sites pra Cloudflare Pages e precisava lidar com os forms. O que fiz
Se você já migrou um site estático pra Cloudflare Pages, GitHub Pages, ou qualquer host sem servidor, sabe a dor: tudo funciona perfeitamente até chegar no form de contato.
Não tem backend. Não tem PHP. Não tem para onde mandar o POST.
Fui pesquisar as soluções existentes. Tem bastante coisa: Web3Forms, Formspree, Basin, mais uns dez outros. Todos fazem basicamente a mesma coisa: você aponta o action do seu form pro endpoint deles, eles recebem e mandam um email.
Funciona. Mas fui olhando com mais calma e fui achando os problemas.
O Web3Forms tem free tier generoso (250 submissions/mês) mas não tem dashboard no plano gratuito. Se o email de notificação cair no spam, a submissão some para sempre. Você nunca vai saber que alguém te mandou mensagem.
O Formspree tem dashboard mas o free tier é 50 submissions/mês. Cinquenta. Pra um site com qualquer volume mínimo isso não serve.
Quase todos dependem do Zapier pra qualquer integração além do email. Quer que a submissão vá pro Slack E pro Google Sheets? Zapier no meio, mais $20/mês, mais um ponto de falha.
Nenhum faz validação server-side, ou se fazem, só nos pagos. Se o seu form não validar no frontend, chega lixo no seu inbox. Email inválido, campo vazio, qualquer coisa passa.
Decidi construir o meu!
Chama FormRoute. O endpoint recebe o POST de qualquer form: HTML puro, React, Next.js, Astro, tanto faz. Valida os campos no servidor antes de processar. Bloqueia spam com Cloudflare Turnstile por padrão e IA. Guarda as submissões por até 30 dias com dashboard incluso no free tier. E o diferencial que me faltava em todos os outros: routing nativo, uma submissão pode ir pra múltiplos destinos ao mesmo tempo sem Zapier.
Free tier com 1.000 submissions/mês. Sem precisar de backend.
Está em formroute.devse você tiver o mesmo problema.
Curioso se mais alguém migrou pra Cloudflare Pages e teve essa dor, como vocês resolveram?