formulaires

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.

index.html
<form harvis-form="contact">
  <input name="email" type="email" required>
  <textarea name="message"></textarea>
  <button>Send</button>
</form>
how it works

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.

  1. 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.

  2. 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.

  3. 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.

the markup

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.

ce que tu écris
<form harvis-form="contact"
      data-harvis-redirect="/thanks.html">
  <input name="email" type="email" required>
  <button>Send</button>
</form>
ce que reçoivent tes visiteurs
<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é.
included

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.

limits

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
faq

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.

Mettre un site en ligne