Des formulaires qui marchent sans backend
Ajoute un attribut à un formulaire de ton site statique et chaque réponse arrive dans ton tableau de bord. Pas de JavaScript, pas de widget intégré, pas de service tiers, et rien à signer pour la personne qui le remplit.
<form harvis-form="contact"> <input name="email" type="email" required> <textarea name="message"></textarea> <button>Send</button> </form>
Trois étapes, dont une consiste à redéployer
Il n'y a pas de générateur de formulaires à apprendre ni d'endpoint à copier. L'attribut, c'est toute la configuration.
- 01
Ajoute l'attribut
Mets harvis-form sur n'importe quel formulaire de ton HTML. Donne-lui un nom si le site en a plusieurs. Laisse action et method de côté — ils sont remplis au moment où la page est servie.
- 02
Redéploie
Glisse le dossier à nouveau, ou lance npx harvis. Rien à configurer, aucune clé à coller, aucun interrupteur à activer d'abord dans un tableau de bord.
- 03
Lis ce qui arrive
Les réponses apparaissent sous ton site dans le tableau de bord, les plus récentes en premier. Ouvre une ligne pour tout lire, ou récupère l'ensemble en CSV.
Tout ça tient en deux attributs
harvis réécrit le formulaire à sa sortie du serveur, pour que la page que tu as écrite reste la page que tu as écrite.
<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>Les deux attributs
- harvis-form
- Marque le formulaire comme étant à collecter. La valeur lui donne un nom, pour que plusieurs formulaires d'un même site restent séparés ; sans valeur, la collecte se fait sous « default ».
- data-harvis-redirect
- Facultatif. La page de ton site vers laquelle envoyer les gens après l'envoi. Tout ce qui pointe hors de ton site est ignoré.
Ce que tu obtiens
Tout ce qui suit est actif par défaut. Il n'y a de page de réglages pour aucun de ces points.
Pas de JavaScript
Le formulaire envoie comme le HTML l'a toujours fait. Ça marche encore avec les scripts bloqués, sur un téléphone lent, et dans un navigateur qui n'affiche que du texte.
Le spam est filtré
Chaque formulaire est servi avec un champ leurre que personne ne peut voir, et tout ce qui le remplit est jeté sans le dire. Des limites de débit plafonnent ce qu'un visiteur, et un site, peuvent envoyer en une heure.
Autant de formulaires que tu veux
Donne-leur des noms — un formulaire de contact et un formulaire d'inscription sur le même site gardent chacun leur liste, et tu peux les filtrer et les exporter séparément.
Ta propre page de remerciement
Pointe le formulaire vers une page que tu as écrite et c'est là que les gens atterrissent après l'envoi. Sans ça, ils voient une simple page de confirmation.
Exporte quand tu veux
Un bouton te donne un CSV avec une colonne pour chaque champ jamais envoyé par qui que ce soit, si bien qu'un formulaire qui a gagné une question en cours de route s'ouvre quand même comme un seul tableau.
Personne n'est suivi
Pas de script de suivi, pas de cookie, aucun tiers dans la page. L'adresse du visiteur est hachée avant d'être stockée, et uniquement pour que la limite de débit puisse distinguer deux envois.
Les limites
Généreuses pour un formulaire de contact, assez serrées pour qu'un script braqué sur ton site ne remplisse pas ta boîte de réception.
- Champs par réponse
- 30
- Longueur d'un champ
- 5 000 caractères
- Taille d'une réponse
- 64 Ko
- Réponses par site
- 60 par heure
- Réponses par visiteur
- 20 par heure
- Conservées par site
- 1 000, les plus récentes d'abord
Questions
Ce qu'on demande avant de mettre un formulaire sur un site statique.
Qu'est-ce qu'un formulaire statique ?
Un formulaire sur un site qui n'a pas de serveur à lui. Normalement, cela veut dire que le formulaire n'a nulle part où envoyer quoi que ce soit, et c'est pour ça que les sites statiques empruntent en général un service de formulaires tiers. harvis sert déjà chaque page de ton site : il peut donc récupérer la réponse au passage.
Faut-il savoir coder ?
Il faut savoir ajouter un mot à une ligne de HTML. Si c'est une IA qui a écrit ton site, demande-lui d'ajouter l'attribut harvis-form au formulaire — elle sait faire, parce que les instructions que harvis publie pour les assistants IA le disent.
Est-ce que ça marche avec JavaScript désactivé ?
Oui. C'est même la raison pour laquelle c'est construit comme ça. Le formulaire fait un envoi HTML ordinaire et le navigateur suit ensuite une redirection, exactement comme les formulaires fonctionnaient avant l'existence de JavaScript.
Puis-je continuer à utiliser mon propre endpoint ou un autre service de formulaires ?
Oui — n'ajoute simplement pas l'attribut. Les formulaires sans harvis-form sont servis exactement comme tu les as écrits, action comprise. Sur un formulaire qui l'a, harvis remplace le action, parce qu'ajouter l'attribut est justement la façon de dire où la réponse doit aller.
Peut-on joindre des fichiers ?
Pas encore. Un champ de fichier sur un formulaire collecté fonctionne toujours pour le visiteur, mais le fichier n'est pas stocké — seuls les champs texte sont conservés.
Que deviennent les réponses si je supprime le site ?
Elles partent avec lui. Les réponses appartiennent au site et non à un déploiement : redéployer les conserve, supprimer le site les efface pour de bon. Exporte un CSV d'abord si tu veux les garder.
Mets un site en ligne et essaie
Publier est gratuit et prend environ deux secondes. Ajoute l'attribut à un formulaire, redéploie, et envoie-toi un message de test.