Formularios que funcionan sin backend
Añade un atributo a un formulario de tu sitio estático y cada envío llega a tu panel. Sin JavaScript, sin widgets incrustados, sin servicios de terceros y sin nada a lo que tenga que registrarse quien lo rellena.
<form harvis-form="contact"> <input name="email" type="email" required> <textarea name="message"></textarea> <button>Send</button> </form>
Tres pasos, y uno de ellos es volver a desplegar
No hay ningún creador de formularios que aprender ni ningún endpoint que copiar. El atributo es toda la configuración.
- 01
Añade el atributo
Pon harvis-form en cualquier formulario de tu HTML. Dale un nombre si el sitio tiene más de uno. Deja fuera action y method — se rellenan al servir la página.
- 02
Vuelve a desplegar
Arrastra la carpeta otra vez o ejecuta npx harvis. Nada que configurar, ninguna clave que pegar, ningún interruptor que activar antes en un panel.
- 03
Lee lo que llega
Los envíos aparecen bajo tu sitio en el panel, los más recientes primero. Abre una fila para leerlo entero, o llévate el conjunto en CSV.
Todo se reduce a dos atributos
harvis reescribe el formulario al salir del servidor, así que la página que escribiste sigue siendo la página que escribiste.
<form harvis-form="contact"
data-harvis-redirect="/thanks.html">
<input name="email" type="email" required>
<button>Send</button>
</form><form harvis-form="contact"
data-harvis-redirect="/thanks.html"
action="/__harvis/form/contact" method="post">
<input type="hidden" name="_harvis_redirect" value="/thanks.html">
<input type="text" name="_harvis_hp" tabindex="-1" aria-hidden="true" style="…">
<input name="email" type="email" required>
<button>Send</button>
</form>Los dos atributos
- harvis-form
- Marca el formulario como uno que hay que recoger. El valor le pone nombre, para que varios formularios de un mismo sitio no se mezclen; si dejas el valor fuera, se recoge bajo “default”.
- data-harvis-redirect
- Opcional. La página de tu sitio a la que enviar a la gente después de que envíen. Cualquier cosa que apunte fuera de tu sitio se ignora.
Lo que consigues
Todo lo de abajo viene activado. No hay página de ajustes para nada de esto.
Sin JavaScript
El formulario envía como HTML ha enviado siempre. Sigue funcionando con los scripts bloqueados, en un móvil lento y en un navegador que solo pinta texto.
El spam se filtra
Cada formulario se sirve con un campo señuelo que nadie puede ver, y todo lo que lo rellena se descarta sin avisar. Los límites de frecuencia acotan lo que un visitante, y un sitio, pueden enviar en una hora.
Tantos formularios como quieras
Ponles nombre — un formulario de contacto y uno de registro en el mismo sitio mantienen cada uno su lista, y puedes filtrarlos y exportarlos por separado.
Tu propia página de gracias
Apunta el formulario a una página que hayas escrito tú y ahí es donde aterriza la gente después de enviar. Si no la pones, verán una página de confirmación sencilla.
Exporta cuando quieras
Un botón te da un CSV con una columna por cada campo que alguien haya enviado alguna vez, así que un formulario que ganó una pregunta por el camino se sigue abriendo como una sola tabla.
Nadie sigue a nadie
Sin script de seguimiento, sin cookies, sin terceros dentro de la página. La dirección del visitante se hashea antes de guardarse, y solo para que el límite de frecuencia pueda distinguir dos envíos.
Los límites
Generosos para un formulario de contacto, y lo bastante estrechos como para que un script apuntado a tu sitio no te llene la bandeja de entrada.
- Campos por envío
- 30
- Longitud de un campo
- 5.000 caracteres
- Tamaño de un envío
- 64 KB
- Envíos por sitio
- 60 por hora
- Envíos por visitante
- 20 por hora
- Guardados por sitio
- 1.000, los más recientes primero
Preguntas
Lo que se pregunta la gente antes de poner un formulario en un sitio estático.
¿Qué es un formulario estático?
Un formulario en un sitio que no tiene servidor propio. Normalmente eso significa que el formulario no tiene a dónde mandar nada, y por eso los sitios estáticos suelen tomar prestado un servicio de formularios de terceros. harvis ya sirve todas las páginas de tu sitio, así que puede recoger el envío al vuelo.
¿Necesito saber programar?
Necesitas saber añadir una palabra a una línea de HTML. Si tu sitio lo escribió una IA, pídele que añada el atributo harvis-form al formulario — sabe hacerlo, porque así lo dicen las instrucciones que harvis publica para asistentes de IA.
¿Funciona con JavaScript desactivado?
Sí. Justamente por eso está construido así. El formulario hace un post HTML normal y corriente y luego el navegador sigue una redirección, exactamente como funcionaban los formularios antes de que existiera JavaScript.
¿Puedo seguir usando mi propio endpoint u otro servicio de formularios?
Sí — simplemente no añadas el atributo. Los formularios sin harvis-form se sirven exactamente como los escribiste, action incluido. En uno que sí lo tenga, harvis sustituye el action, porque añadir el atributo es la forma de decir a dónde debe ir el envío.
¿Puede la gente adjuntar archivos?
Todavía no. Un campo de archivo en un formulario recogido le sigue funcionando al visitante, pero el archivo no se guarda — solo se conservan los campos de texto.
¿Qué pasa con los envíos si elimino el sitio?
Se van con él. Los envíos pertenecen al sitio y no a un despliegue, así que volver a desplegar los conserva y eliminar el sitio los borra para siempre. Exporta un CSV antes si quieres quedártelos.
Pon un sitio online y pruébalo
Publicar es gratis y tarda unos dos segundos. Añade el atributo a un formulario, vuelve a desplegar y mándate un mensaje de prueba.