Construir un formulario de contacto funcional en un sitio estático no requiere un backend tradicional: basta con combinar Cloudflare Pages Functions (Workers), reCAPTCHA v3 para filtrar bots y un servicio de envío de correo transaccional como Resend. Esta guía explica, paso a paso, cómo montar ese pipeline en un sitio Eleventy (11ty) alojado en Cloudflare Pages.
El flujo es el siguiente: el visitante rellena el formulario (nombre, correo y mensaje); reCAPTCHA v3 evalúa señales de comportamiento —movimientos del ratón, ritmo de tecleo, patrón de scroll, cambios de foco— y asigna una puntuación de riesgo sin mostrar ningún captcha visual. El formulario envía los datos por POST al endpoint /api/contact, donde una Pages Function valida el token contra Google, sanea los campos y, si todo es correcto, lanza el correo mediante la API de Resend. Finalmente, el usuario es redirigido a una página de confirmación.
El artículo repasa además cinco alternativas previas que el autor fue probando con los años: Netlify Forms, Cloudflare Pages Functions con MailChannels (hasta que MailChannels cerró su plan gratuito para usuarios de Workers), Formspree, Formspark y Botpoison. También menciona Cloudflare Turnstile como sustituto nativo de reCAPTCHA, más sencillo de integrar dentro del ecosistema de Cloudflare. La pieza detalla el funcionamiento interno de reCAPTCHA v3 —incluyendo el fingerprinting de navegador y dispositivo— y los motivos por los que reCAPTCHA v3 resulta más amigable para el usuario que los tradicionales puzzles visuales. Por último, señala que, si el sitio no está en Cloudflare, sigue siendo perfectamente válido recurrir a servicios gestionados como Netlify Forms o Formspree, que evitan mantener infraestructura propia.
