Logotipo de Bitdoze

Añadir un Formulario de Contacto a Cualquier Web Estática (Guía 2025)

Aprende a añadir un formulario de contacto a cualquier web estática gratis. Compara FormSubmit, Static Forms, Web3Forms y más, con configuración paso a paso y consejos de privacidad.

Dragos

Actualizado Publicado 14 min de lectura

Añadir un Formulario de Contacto a Cualquier Web Estática (Guía 2025)

Las webs estáticas creadas con Astro, Hugo, Jekyll o HTML puro no tienen backend, así que no basta con escribir un script PHP para procesar los envíos de formularios. Necesitas un servicio externo que actúe como gestor del formulario.

En un tutorial anterior expliqué cómo añadir un formulario de contacto a Astro usando OpnForms, pero ese enfoque ha cambiado desde entonces (las notificaciones por email pasaron a un plan de pago). Desde entonces han aparecido más opciones, y hoy hay varios servicios gratuitos y centrados en la privacidad disponibles.

Esta guía cubre la opción gratuita más simple (FormSubmit.co), sus problemas conocidos, las mejores alternativas como Static Forms y Web3Forms, una tabla comparativa de funciones, consideraciones de privacidad y una vía autoalojada para usuarios avanzados. Tanto si estás creando un blog gratis con Astro y Cloudflare como si mantienes cualquier sitio estático, encontrarás una solución que encaje.

Por qué añadir un formulario de contacto a una web estática

Un formulario de contacto aporta credibilidad y confianza a cualquier web. En lugar de publicar tu dirección de email donde los bots pueden rastrearla, los visitantes rellenan un formulario y el envío te llega reenviado. Esto es especialmente importante para:

  • Generación de leads: clientes potenciales o colaboradores pueden contactarte directamente
  • Confianza del usuario: un formulario de contacto indica que eres accesible y profesional
  • Reducción de spam: los formularios con CAPTCHA son más difíciles de abusar que una dirección de email en crudo
  • Datos estructurados: obtienes campos consistentes (nombre, email, mensaje) en lugar de emails en formato libre

Como los sitios estáticos no tienen código del lado del servidor, necesitas un gestor de formularios para webs estáticas: un servicio de terceros o un backend autoalojado ligero. Hay varias opciones gratuitas que no requieren nada de código backend.

Método 1: FormSubmit.co (la opción gratuita más simple)

FormSubmit.co era la recomendación habitual cuando se publicó este artículo por primera vez. Sigue siendo la opción más simple. No requiere registro: solo apunta el atributo action de tu formulario a su endpoint. Así funciona.

1. Crea tu formulario HTML

Diseña un formulario con elementos HTML estándar. Incluye un atributo name en cada campo del que quieras recibir datos:

html
<form id="contact-form">
  <label for="name">Name:</label>
  <input type="text" id="name" name="name" required />
  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required />
  <label for="message">Message:</label>
  <textarea id="message" name="message" required></textarea>
  <button type="submit">Send</button>
</form>

2. Apunta el action del formulario a FormSubmit

Añade el endpoint de FormSubmit como atributo action del formulario con tu dirección de email:

html
<form
  id="contact-form"
  action="https://formsubmit.co/[email protected]"
  method="POST"
>
  <label for="name">Name:</label>
  <input type="text" id="name" name="name" required />
  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required />
  <label for="message">Message:</label>
  <textarea id="message" name="message" required></textarea>
  <button type="submit">Send</button>
</form>

3. Verifica tu dirección de email

Envía el formulario una vez (o visita la URL de FormSubmit en tu navegador). Recibirás un email de confirmación con un enlace. Haz clic en él para verificar que la dirección de email es tuya. Es un paso que solo se hace una vez.

4. Personaliza las opciones del formulario

FormSubmit admite varios campos ocultos para personalizar el comportamiento:

Redirección tras el envío:

html
<input
  type="hidden"
  name="_next"
  value="https://yourdomain.com/thanks.html"
/>

Copia (CC) a destinatarios adicionales:

html
<input
  type="hidden"
  name="_cc"
  value="[email protected],[email protected]"
/>

Añadir reCAPTCHA:

html
<input type="hidden" name="_captcha" value="true" />

Puedes consultar todas las opciones disponibles en la documentación de FormSubmit.co.

Problemas de FormSubmit.co que debes conocer

FormSubmit es fácil de configurar, pero tiene problemas reales que conviene conocer antes de usarlo en un sitio en producción.

Limitaciones de la protección antispam

Usuarios en Reddit reportan que el spam se cuela incluso con reCAPTCHA y honeypot activados. Un usuario en r/webdev comentó: “Tenía las opciones de captcha y honeypot activadas y aun así recibía mensajes de spam a diario.” Otros reportan que reCAPTCHA puede provocar tiempos de carga de más de 30 segundos en las páginas con formulario, lo que perjudica la experiencia de usuario.

Dirección de email expuesta en el código fuente (riesgo RGPD)

Tu dirección de email queda incrustada directamente en el código fuente HTML a través de la URL del action del formulario:

html
<form action="https://formsubmit.co/[email protected]">

Esto la hace recolectable por bots de rastreo de emails. También es un posible problema de RGPD: estás exponiendo una dirección de email personal de una forma trivialmente fácil de recolectar de forma automática. Si te preocupa esto, consulta nuestra guía sobre cómo bloquear a los rastreadores de IA que rastrean tu web.

Problemas de fiabilidad

La web de FormSubmit.co estuvo inaccesible durante varias peticiones de prueba. Usuarios en Reddit reportan inconsistencias y tiempo perdido depurando. Como FormSubmit no tiene planes de pago (es “gratis para siempre”), hay dudas sobre su sostenibilidad y soporte a largo plazo.

Advertencia importante

FormSubmit sirve para prototipos rápidos y sitios personales de bajo riesgo. Para webs en producción donde no puedes permitirte perder envíos, considera una de las alternativas de abajo, que ofrecen paneles, registros de envíos y garantías de uptime transparentes.

Las mejores alternativas a FormSubmit para sitios estáticos

Han aparecido más servicios de backend para formularios desde 2024. Varios ofrecen ahora mejor protección antispam, garantías de privacidad, paneles y modelos de negocio sostenibles, muchos con tiers gratuitos generosos. Si te interesan las herramientas de formularios autoalojadas, también puedes echar un vistazo a OpnForm, un constructor de formularios open source.

Antes de elegir un servicio, esto es lo que debes mirar:

  • Privacidad: ¿expone tu email en el código fuente HTML?
  • Protección antispam: reCAPTCHA, Turnstile, Altcha o filtrado basado en ML
  • Límites del tier gratuito: cuántos envíos al mes antes de pagar
  • Panel: ¿puedes ver envíos anteriores sin rebuscar en el email?
  • Integraciones: Slack, Google Sheets, Zapier, webhooks
  • Subida de archivos: ¿pueden los usuarios adjuntar archivos a los envíos?
  • Autorespuestas: ¿recibe quien envía un email de confirmación?

Static Forms (mejor tier gratuito, 500/mes)

Static Forms ofrece el tier gratuito más generoso, con 500 envíos al mes. Admite reCAPTCHA v2, reCAPTCHA v3, Cloudflare Turnstile y Altcha (centrado en la privacidad, compatible con RGPD, sin rastreo de usuarios). También tienes webhooks, subida de archivos, un panel de envíos y autorespuestas con IA que redactan respuestas a partir de una base de conocimiento.

La configuración es similar a FormSubmit —apuntas el action del formulario a su endpoint— pero usa una clave de acceso en lugar de tu dirección de email. Los planes de pago empiezan en $7.50/mes.

Web3Forms (el mejor para privacidad, sin exponer el email)

Web3Forms usa una clave de acceso en lugar de tu dirección de email en el HTML, así que tu email permanece oculto a los rastreadores. El tier gratuito incluye 250 envíos al mes. Admite subida de archivos, reCAPTCHA y cumple el RGPD por diseño.

La configuración es sencilla. Crea una cuenta, obtén tu clave de acceso y añádela como campo oculto:

html
<form action="https://api.web3forms.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
  <input type="text" name="name" required />
  <input type="email" name="email" required />
  <textarea name="message" required></textarea>
  <button type="submit">Send</button>
</form>

Formspree (el mejor para integraciones)

Formspree existe desde 2014 y es uno de los actores más consolidados. El tier gratuito se limita a 50 envíos al mes, pero el plan de $10/mes añade filtrado antispam basado en ML, un panel e integraciones con Slack, Google Sheets y Zapier. Buena opción si necesitas que los envíos fluyan a tus herramientas de trabajo habituales.

Netlify Forms (el mejor si estás alojado en Netlify)

Si tu sitio ya está en Netlify, Netlify Forms viene integrado. No necesitas ningún servicio extra. El tier gratuito incluye 100 envíos al mes con filtrado antispam incorporado. Añade netlify a la etiqueta del formulario y funciona sin más:

html
<form name="contact" method="POST" data-netlify="true">
  <input type="text" name="name" required />
  <input type="email" name="email" required />
  <textarea name="message" required></textarea>
  <button type="submit">Send</button>
</form>

EmailJS (el mejor solo del lado del cliente)

EmailJS permite enviar emails directamente desde JavaScript del lado del cliente, sin redirección del action del formulario. El tier gratuito incluye 200 emails al mes. Funciona con plantillas de email y admite adjuntos. Útil para aplicaciones de una sola página o sitios donde quieres envío AJAX sin redirección de página.

Tabla comparativa: servicios gratuitos de formularios de contacto

Servicio Envíos gratis/mes Protección antispam Subida de archivos Panel Webhooks ¿Email expuesto? Precio desde
FormSubmit Ilimitados* reCAPTCHA, honeypot No No No Sí Solo gratis
Static Forms 500 reCAPTCHA v2/v3, Turnstile, Altcha Sí Sí Sí No (clave de acceso) $7.50/mes
Web3Forms 250 reCAPTCHA Sí Sí Sí No (clave de acceso) Planes de pago
Formspree 50 Filtrado ML Sí Sí Sí No (ID de formulario) $10/mes
Netlify Forms 100 Filtro antispam integrado Sí Sí Sí No (ID de formulario) $9/mes
EmailJS 200 reCAPTCHA Sí (plantillas) Sí Sí No (ID de servicio) $9/mes
Forminit 100 reCAPTCHA Sí (25 MB) Sí Sí No (ID de formulario) $19/mes

*FormSubmit afirma ser ilimitado, pero los usuarios reportan problemas de fiabilidad.

Consejo

Si esperas menos de 50 envíos al mes, Formspree funciona bien. Para más volumen, Static Forms o Web3Forms ofrecen los mejores tiers gratuitos. Si ya estás en Netlify, sus formularios integrados son el camino más fácil.

Consideraciones de privacidad y RGPD para formularios de contacto

Si recibes visitantes de la UE (o te importa la privacidad en general), el servicio de formularios que elijas tiene implicaciones reales para el cumplimiento normativo.

Exposición del email en el código HTML

FormSubmit incrusta tu dirección de email directamente en el atributo action del HTML. Es visible para cualquiera que vea el código fuente y para todos los bots que rastrean tu sitio. Servicios como Web3Forms, Formspree, Forminit y Static Forms usan claves de acceso o IDs de formulario, manteniendo tu dirección de email solo del lado del servidor.

Alerta RGPD

Exponer una dirección de email personal en el código fuente HTML puede considerarse un problema de cumplimiento del RGPD. Si tu sitio recibe visitantes de la UE, usa un servicio que emplee IDs de formulario o claves de acceso en lugar de direcciones de email en el action del formulario.

Para una protección de privacidad más amplia en tu sitio, considera combinar un servicio de formularios respetuoso con la privacidad con Plausible Analytics, una alternativa a Google Analytics centrada en la privacidad.

Opciones de CAPTCHA respetuosas con la privacidad

El reCAPTCHA tradicional de Google rastrea a los usuarios entre sitios y carga JavaScript pesado. Las alternativas más nuevas son más respetuosas con la privacidad:

  • Cloudflare Turnstile: CAPTCHA invisible que no requiere interacción del usuario ni lo rastrea entre sitios. Static Forms lo admite de forma nativa.
  • Altcha: CAPTCHA open source compatible con RGPD, sin rastreo de usuarios. Funciona resolviendo un reto proof-of-work en el navegador. Admitido por Static Forms.
  • Campos honeypot: un campo oculto del formulario que los bots rellenan pero los humanos no. Simple y eficaz contra bots de spam básicos; lo usan la mayoría de servicios.

Si la privacidad es una prioridad, elige un servicio que admita Turnstile o Altcha en lugar de Google reCAPTCHA.

Cómo añadir un formulario de contacto en Astro

Si usas Astro con ViewTransitions, puedes encontrarte con este error al enviar un formulario:

Make sure your form has the method=“POST” attribute

Ocurre porque las ViewTransitions de Astro interceptan los envíos de formularios. La solución es añadir el atributo data-astro-reload al elemento del formulario. Esto indica a Astro que maneje el envío como una navegación de página normal en lugar de interceptarlo.

Consejo para Astro

Esta solución funciona con cualquier servicio de formularios que uses (FormSubmit, Web3Forms, Static Forms u otro). El atributo data-astro-reload es un workaround específico de Astro, no ligado a ningún backend de formularios concreto.

html
<form
  id="contact-form"
  action="https://formsubmit.co/[email protected]"
  method="POST"
  data-astro-reload
>
  <label for="name">Name:</label>
  <input type="text" id="name" name="name" required />
  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required />
  <label for="message">Message:</label>
  <textarea id="message" name="message" required></textarea>
  <button type="submit">Send</button>
</form>

Si vas a desplegar tu sitio Astro, consulta nuestras guías sobre cómo desplegar Astro en Cloudflare o desplegar una web Astro estática en un VPS. También te pueden resultar útiles nuestros tutoriales sobre cómo mostrar vídeos de YouTube en tu blog Astro y añadir vídeos de YouTube responsive a Astro MDX para otras partes de tu sitio.

Opción autoalojada de formulario de contacto (avanzado)

Si no quieres depender de un servicio externo, o necesitas control total sobre tus datos, puedes ejecutar tu propio backend de formularios.

Para quienes autohospedan

Un gestor de formularios autoalojado te da control total sobre envíos, almacenamiento y privacidad. Sin dependencias de terceros, sin límites de envíos, sin exposición del email. Toda la cadena es tuya.

Backend de formularios en Go con Docker

El proyecto caffsoft/hugo-contact es un backend ligero de formularios de contacto escrito en Go que corre en Docker usando unos 10 MB de RAM. Tiene licencia MIT y está diseñado para sitios estáticos.

El enfoque general:

  1. Despliega el contenedor en un VPS
  2. Apunta el action de tu formulario a la URL del contenedor
  3. El backend procesa los envíos y los reenvía por email o los almacena

Si necesitas un VPS para esto, un VPS asequible de Hetzner empieza en unos 4 €/mes con un rendimiento excelente. Hostinger VPS es otra opción económica con almacenamiento NVMe.

Los precios de los VPS subieron en todos los proveedores en 2026 — si te estás replanteando un servidor alquilado, mira qué cambió y cuándo gana un mini PC.

Para más soluciones autoalojadas, consulta nuestra guía de alternativas autoalojadas a herramientas SaaS populares.

Enfoque con Cloudflare Workers

Si ya estás en Cloudflare, puedes construir un gestor de formularios serverless usando Cloudflare Workers. El enfoque es:

  1. Crear un Worker que reciba peticiones POST de tu formulario
  2. Reenviar los envíos a tu email (vía SendGrid o Mailgun) o almacenarlos en Airtable/D1
  3. Desplegar el Worker junto a tu sitio de Cloudflare Pages

Así obtienes un backend de formularios que corre en el edge sin gestión de servidores. Es gratis hasta 100.000 peticiones al día en el plan gratuito de Cloudflare.

Cómo elegir el servicio de formularios adecuado para tu sitio

Cada sitio tiene necesidades distintas. Aquí va una guía rápida de decisión:

Solo necesito que funcione

Usa FormSubmit.co

La forma más rápida de tener un formulario de contacto funcionando. Sin registro, sin claves API: solo añade tu email al action del formulario y verifica una vez. Funciona para blogs personales y sitios de poco tráfico donde algo de spam o caídas ocasionales no son críticas.

html
<form action="https://formsubmit.co/[email protected]" method="POST">

Mejor tier gratuito

Usa Static Forms

500 envíos gratis al mes, más un panel, subida de archivos, webhooks y soporte para los CAPTCHA Turnstile y Altcha. El tier gratuito más generoso y con más funciones. Regístrate en staticforms.dev para obtener tu clave de acceso.

Privacidad ante todo

Usa Web3Forms

Clave de acceso en lugar de email en el HTML, cumple RGPD, 250 envíos gratis al mes. Tu dirección de email nunca aparece en el código de la página. Regístrate en web3forms.com.

Control total

Autoalójalo con Docker

Ejecuta tu propio backend de formularios en un VPS con caffsoft/hugo-contact o construye un Cloudflare Worker. Sin límites de envíos, sin dependencias de terceros, propiedad completa de los datos. Requiere un servidor. Considera Hetzner o Hostinger VPS.

Preguntas frecuentes

¿Puedo añadir un formulario de contacto a una web estática sin backend?

Sí, eso es exactamente lo que hacen los servicios de backend para formularios como FormSubmit, Web3Forms y Static Forms. Proporcionan una URL de endpoint que pones como atributo action de tu formulario. Cuando alguien envía el formulario, el servicio recibe los datos y los reenvía a tu email (o los guarda en un panel). No necesitas código del lado del servidor.

¿Sigue siendo gratis FormSubmit.co en 2025?

Sí, FormSubmit.co sigue siendo gratis y sin planes de pago. Sin embargo, los usuarios reportan problemas de fiabilidad, spam que atraviesa reCAPTCHA y un servicio intermitentemente inaccesible. Para sitios en producción, considera Static Forms o Web3Forms, que tienen tiers gratuitos más robustos y modelos de negocio transparentes.

¿Qué servicio de formularios gratuito tiene el límite de envíos más alto?

Static Forms ofrece 500 envíos al mes en su tier gratuito, el más alto entre los servicios comparados en este artículo. Web3Forms va segundo con 250/mes, seguido de EmailJS con 200/mes y Netlify Forms con 100/mes.

¿Necesito un CAPTCHA en mi formulario de contacto?

Sí, deberías añadir algún tipo de protección antispam. Las mejores opciones son Cloudflare Turnstile (invisible, sin rastreo de usuarios), Altcha (open source, compatible con RGPD) o reCAPTCHA v3 (puntuación invisible). Evita el reCAPTCHA v2 estándar con casillas si puedes: perjudica la experiencia de usuario y carga JavaScript pesado.

¿Puedo usar estos servicios de formularios con Astro, Hugo o Jekyll?

Sí. Estos servicios funcionan con cualquier generador de sitios estáticos porque son formularios HTML estándar. Apunta el atributo action al endpoint del servicio y funciona. Si usas Astro con ViewTransitions, añade data-astro-reload al elemento del formulario para evitar el error del método POST.

Conclusión

Añadir un formulario de contacto a una web estática es más fácil que nunca. FormSubmit.co sigue siendo la opción más rápida para un prototipo o sitio personal: apunta y listo. Pero para uso en producción, Static Forms y Web3Forms ofrecen mejor protección antispam, garantías de privacidad y paneles sin coste.

Si la privacidad es tu prioridad, elige un servicio que use claves de acceso en lugar de direcciones de email (Web3Forms, Static Forms). Si necesitas integraciones con Slack o Google Sheets, Formspree es una opción sólida. Y si quieres cero dependencias, un backend autoalojado con Docker te da control total.

Si estás montando un sitio Astro nuevo, empieza por nuestra guía para añadir un formulario de contacto a Astro. Para herramientas de privacidad más amplias, Plausible Analytics combina bien con un servicio de formularios respetuoso con la privacidad.

Explorar Static Forms Probar Web3Forms