Le principe en 30 secondes

Dans Le Labo du Yeti, tu ne crées pas un formulaire dans une interface compliquée. Tu poses simplement un <form data-cms-form="contact"> dans ton HTML (layout, page, article, cocon — peu importe), et le CMS le détecte automatiquement. Il apparaît alors dans la section Formulaires de la sidebar, prêt à être configuré.

Cette approche a un gros avantage : tu peux refondre ton design quand tu veux, déplacer un formulaire d'une page à une autre, ou changer ses champs — la configuration reste attachée à l'identifiant du formulaire, pas à un endroit précis du site.

À retenir. Un formulaire est identifié par son attribut data-cms-form="...". Tant que cet identifiant reste le même, la configuration suit, même si tu déplaces ou redessines le formulaire.

Workflow complet

  1. Pose un formulaire dans ton HTML. Que ce soit dans le layout global (formulaire footer), dans une page (contact dédié), dans un article ou dans un template cocon, ajoute simplement data-cms-form="contact" (ou un autre identifiant de ton choix) à la balise <form>.
  2. Ouvre la section Formulaires. Dans la sidebar à gauche, clique sur Formulaires. Le CMS scanne tous les templates et liste les formulaires détectés.
  3. Repère son statut. Chaque formulaire affiche un badge coloré qui indique où il en est (voir tableau plus bas).
  4. Clique sur Configurer (ou Éditer). Renseigne l'email de réception, le sujet du mail, le message de succès, et — si tu le souhaites — une URL de redirection après envoi.
  5. Teste le formulaire. Le bouton Tester envoie un email de test à l'adresse renseignée. Si l'email arrive, le SMTP est bon et le formulaire est prêt.
  6. Active le runtime JavaScript. Pour que le formulaire s'envoie sans recharger la page (AJAX) et bénéficie de la protection anti-spam, inclus le runtime dans ton layout (voir section dédiée).
  7. Surveille les soumissions. Chaque envoi est loggé. L'UI affiche pour chaque formulaire le nombre total de soumissions, celles validées, celles bloquées comme spam, et celles qui n'ont pas pu partir.

Les trois statuts d'un formulaire

Le CMS classe chaque formulaire détecté dans une de ces trois catégories. La couleur du badge te dit en un coup d'œil ce qu'il reste à faire.

Statut Signification Action à mener
Détecté Le formulaire est présent dans un fichier HTML, mais aucune configuration n'a encore été renseignée. Si quelqu'un soumet le formulaire maintenant, rien n'arrivera dans ta boîte mail. Cliquer sur Configurer et renseigner au minimum l'email de réception.
Configuré Le formulaire est présent dans le HTML et l'email de réception est défini. Tout fonctionne (sous réserve que le SMTP soit configuré). Aucune action requise. Tester le formulaire si tu veux confirmer.
Orphelin Une configuration existe pour cet identifiant, mais aucun formulaire avec ce data-cms-form n'est plus présent dans le HTML. Tu as probablement supprimé le formulaire ou changé son identifiant. Soit remettre le formulaire dans le HTML, soit supprimer la configuration orpheline.

Configurer un formulaire en détail

Quand tu cliques sur Configurer à côté d'un formulaire détecté, un panneau s'ouvre avec quatre champs simples.

Email de réception

L'adresse à laquelle seront envoyées les soumissions. Tu peux mettre une seule adresse, ou plusieurs séparées par des virgules (par exemple contact@monsite.com, commercial@monsite.com). C'est le seul champ obligatoire.

Sujet de l'email (optionnel)

Le sujet du mail qui arrive dans ta boîte. Si tu laisses vide, le CMS utilise par défaut Formulaire <id> — par exemple Formulaire contact ou Formulaire devis. Très pratique pour distinguer rapidement les types de demandes dans ta boîte.

Message de succès

Le texte que verra le visiteur après avoir cliqué sur Envoyer. Reste sobre et rassurant, par exemple : « Merci, ton message a bien été envoyé. Nous te répondrons sous 24 heures. »

URL de redirection (optionnel)

Si tu préfères rediriger l'utilisateur vers une page de remerciement dédiée (utile pour le tracking conversion Google Ads / Meta), renseigne ici l'URL relative, par exemple /merci.html. Si tu laisses vide, c'est le message de succès qui s'affichera à la place.

Astuce. Une page de remerciement dédiée permet de poser un pixel de conversion publicitaire et de mesurer précisément ton taux de transformation. C'est presque toujours mieux qu'un simple message inline.

Tester le formulaire avant la mise en ligne

Une fois la configuration enregistrée, un bouton Tester apparaît à côté du formulaire. En cliquant dessus, le CMS envoie immédiatement un email de test à l'adresse de réception configurée, avec un contenu fictif.

C'est le moment de vérité : si l'email arrive bien dans ta boîte (ou dans les spams — pense à vérifier les deux), c'est que ton SMTP est bien configuré et que le formulaire est prêt à recevoir de vraies soumissions. Si rien n'arrive, l'erreur s'affiche directement dans l'UI (en général un problème d'authentification SMTP, ou un mot de passe d'application manquant pour Gmail).

À vérifier toujours. Fais le test au moins une fois après la mise en production. Les paramètres SMTP de ton hébergeur local ne sont pas forcément les mêmes que ceux du serveur Plesk où tournera le site final.

Activer le runtime AJAX et l'anti-spam

Par défaut, un <form> HTML se soumet en rechargeant la page entière. Pour offrir une meilleure expérience (envoi en arrière-plan, message de succès affiché sans recharger) et activer le honeypot anti-spam, il faut inclure un petit script JavaScript dans ton layout global.

Dans ton layout.html, juste avant la fermeture </body>, ajoute cette ligne :

<script src="/api/forms/runtime.js"></script>

Ce script est servi directement par le CMS, il n'y a rien d'autre à installer. Une fois en place, il :

Bonne pratique. Inclus toujours le runtime dans le layout global, jamais dans chaque page individuellement. Comme ça, tous les formulaires du site en bénéficient automatiquement, partout.

Configurer le SMTP (étape préalable)

Sans serveur SMTP configuré, les formulaires ne pourront pas envoyer d'email. C'est la première chose à régler avant même de configurer ton premier formulaire.

  1. Dans la sidebar, va dans Réglages puis dans la section Général.
  2. Descends jusqu'au bloc SMTP.
  3. Renseigne les paramètres fournis par ton hébergeur ou ton service de messagerie : host (ex : smtp.gmail.com), port (587 ou 465 selon le mode), secure (coché pour le port 465, décoché pour 587), user (l'identifiant complet), pass (le mot de passe, ou un mot de passe d'application si tu utilises Gmail/Outlook).
  4. Renseigne aussi from : l'adresse qui apparaîtra comme expéditeur. Idéalement, mets ici une adresse du même domaine que ton site (par exemple contact@monsite.com) pour éviter que les emails atterrissent en spam.
  5. Enregistre.
Gmail et 2FA. Si ton compte Gmail a la double authentification activée (ce qui est très recommandé), tu ne peux pas utiliser ton mot de passe Gmail standard. Il faut générer un mot de passe d'application spécifique dans les paramètres Google. Sinon tu auras une erreur d'authentification SMTP.

Suivre les soumissions

Chaque envoi de formulaire est enregistré dans les logs du CMS, avec un type form_submission et un statut qui te dit immédiatement ce qui s'est passé :

Statut Ce que ça veut dire
sent La soumission a été validée, l'email est parti, tout va bien.
spam Le honeypot a piégé un robot, ou le filtre anti-spam a détecté un envoi suspect. Aucun email n'est envoyé. Pas d'action à mener.
mail_failed Le formulaire a été validé mais l'envoi SMTP a échoué. À investiguer immédiatement : SMTP mal configuré, quota dépassé, mot de passe expiré, etc.

Dans l'UI Formulaires, chaque formulaire affiche un mini-tableau de bord avec : nombre total de soumissions, nombre de succès, nombre de spams bloqués, nombre d'échecs SMTP, et date de la dernière soumission. C'est ton thermomètre — un pic soudain de mail_failed signifie qu'il faut aller vérifier le SMTP, et un volume anormalement élevé de soumissions sent peut indiquer une vague de spam qui passe à travers le honeypot (rare, mais possible).

Bonnes pratiques

Dépannage rapide

Symptôme Cause probable Solution
Le formulaire n'apparaît pas dans la liste L'attribut data-cms-form est absent ou mal orthographié, ou le HTML n'a pas encore été enregistré Vérifier l'attribut, sauvegarder le template, rafraîchir la page Formulaires
Le formulaire est en statut Orphelin Le HTML qui contenait ce formulaire a été modifié ou supprimé Remettre le formulaire dans le HTML, ou supprimer la config orpheline
Le test échoue avec une erreur SMTP Configuration SMTP incorrecte, mot de passe expiré, ou 2FA Google sans mot de passe d'application Aller dans Réglages → Général → SMTP, vérifier chaque champ, regénérer un mot de passe d'application si Gmail
Le formulaire recharge la page au lieu de s'envoyer en AJAX Le runtime JavaScript n'est pas inclus dans le layout Ajouter <script src="/api/forms/runtime.js"></script> avant </body>
Beaucoup de soumissions reçues sont du spam Le runtime n'est pas chargé (donc pas de honeypot), ou des bots sophistiqués passent à travers Vérifier la présence du runtime, et envisager d'ajouter un captcha via une extension

Pour aller plus loin

Si tu veux comprendre comment le CMS détecte les formulaires, comment l'API gère les soumissions, et comment ajouter ta propre logique (webhook vers un CRM, validation custom, captcha externe), consulte la documentation technique des formulaires. Tu y trouveras la liste complète des endpoints, le format JSON des payloads, et la structure du runtime JavaScript.

Pour personnaliser le rendu visuel de tes formulaires (champs, boutons, messages d'erreur), garde en tête que tu travailles avec du HTML standard : les CSS de ton layout s'appliquent directement. Aucune classe magique imposée par le CMS — c'est ton terrain de jeu.