CHAPITRE 24 — Les formulaires publics InfraSStudio embarque un moteur de formulaires publics conçu pour transformer la moindre saisie web en lead qualifié dans Dolibarr. Un formulaire de contact rempli sur un site géré par le module ne déclenche pas un simple envoi d'email : il alimente automatiquement le CRM, ouvre un ticket, prévient les équipes commerciales et déclenche, au besoin, un rappel en agenda. Ce chapitre détaille la mécanique interne, la configuration côté administrateur et l'intégration dans un site Dolibarr Website. Architecture du moteur L'architecture repose sur trois pièces : un descripteur JSON par formulaire, un point d'entrée unique côté serveur, et une chaîne d'adapters exécutés à chaque soumission. Aucun code PHP n'est nécessaire pour ajouter ou modifier un formulaire : il suffit d'éditer le descripteur depuis l'interface d'administration. Pièce Rôle Endpoint unique public/forms/submit.php reçoit toutes les soumissions. Le formulaire est identifié par son nom inséré en champ caché form_name . Descripteur JSON Une ligne dans llx_infrasstudio_form_config par formulaire. Décrit les champs, les règles de validation, les paramètres anti-spam et les adapters à exécuter. Pipeline d'adapters Six étapes activables à la carte : validation, anti-spam, tiers, contact, ticket, notification, agenda. Le pipeline étape par étape Chaque soumission acceptée traverse la chaîne ci-dessous. Chaque étape s'active indépendamment dans le descripteur, ce qui permet de couvrir aussi bien un formulaire de newsletter minimaliste qu'une demande de démonstration commerciale complète. Adapter Effet sur la soumission antispam Honeypot, délai minimum de remplissage, rate-limit par adresse IP, captcha délégué au gestionnaire Dolibarr actif. tiers Recherche ou création d'une société dans llx_societe . Application d'une catégorie et d'une origine. contact Recherche ou création d'un contact dans llx_socpeople , libre ou rattaché au tiers. ticket Ouverture d'un ticket Dolibarr avec sujet, message, catégorie et sévérité. notification Envoi d'un email interne à l'équipe commerciale et d'un accusé de réception au visiteur. agenda Création d'un événement de rappel lié au tiers et au ticket. Configurer un formulaire L'administration des formulaires se trouve dans Outils → InfraS → Formulaires . La page liste les configurations existantes, affiche quelques statistiques de soumission et offre un bouton pour créer un nouveau formulaire. L'identité du formulaire À la création, trois informations sont demandées : un nom interne (utilisé dans le HTML, unique par entité) ; un type ( contact , newsletter , demo ou personnalisé) ; un libellé d'affichage pour l'interface d'administration. Le nom interne sert d'identifiant tout au long du cycle de vie du formulaire : il est référencé dans le HTML, dans le viewer de soumissions et dans les logs. Le descripteur JSON Le cœur de la configuration est un descripteur JSON qui décrit le formulaire sous une forme structurée. L'éditeur d'administration valide la syntaxe à l'enregistrement et propose une référence dépliable de toutes les clés supportées pour éviter d'avoir à mémoriser la grammaire. { "antispam": { "honeypot": true, "min_fill_seconds": 3, "rate_limit_per_hour": 5, "captcha": true }, "consent": { "required": true, "field_name": "consent", "text": "..." }, "fields": { "name": { "required": true, "type": "text", "maxlength": 100 }, "email": { "required": true, "type": "email", "maxlength": 200 }, "message": { "required": true, "type": "text", "maxlength": 5000 } }, "tiers": { "enabled": true, "lookup_by_email": true, "category_label": "Lead web" }, "ticket": { "enabled": true, "category_code": "COMMERCIAL" }, "notification": { "autoreply_enabled": true, "autoreply_template_label": "Accusé de réception" } } Connecter le formulaire à votre CRM L'intérêt principal du moteur réside dans la chaîne de traitement qu'il déclenche au moment de la soumission. Chaque adapter peut être activé indépendamment selon les besoins. Tiers et contact Lorsque l'adapter tiers est actif, le moteur recherche d'abord une société existante dont l'adresse email correspond à celle saisie ; à défaut, il regarde si l'email appartient à un contact rattaché à une société, puis tente une correspondance par nom d'entreprise. Si aucune correspondance n'est trouvée, un nouveau tiers est créé, catégorisé automatiquement et associé à un canal d'origine (extrafield origine renseigné depuis le dictionnaire c_input_reason ). La même logique existe pour les contacts, utile notamment pour les inscriptions à la newsletter qui ne nécessitent pas la création d'une société. Ouverture d'un ticket L'adapter ticket ouvre un ticket Dolibarr rattaché au tiers résolu. Le sujet et le message sont construits soit à partir des champs du formulaire, soit à partir de gabarits permettant d'injecter dynamiquement le nom du visiteur, sa demande, l'adresse IP d'origine ou tout autre élément du contexte. Catégorie et sévérité sont déterminées par les codes du dictionnaire Dolibarr ( llx_c_ticket_category , llx_c_ticket_severity ). Notification et accusé de réception Deux emails peuvent être envoyés automatiquement à la suite d'une soumission : une notification interne adressée à l'équipe commerciale, et un accusé de réception destiné au visiteur. L'accusé de réception peut s'appuyer sur un modèle d'email Dolibarr standard stocké dans llx_c_email_templates , ce qui permet de centraliser la rédaction et d'utiliser la même charte pour tous les formulaires d'un site. Rappel automatique en agenda Pour les formulaires à fort enjeu commercial (typiquement une demande de démonstration), un événement de rappel peut être créé dans l'agenda. Le délai est configurable, les week-ends peuvent être évités automatiquement, et l'événement est lié au ticket et au tiers pour garantir la traçabilité. Intégrer le formulaire dans un site Une fois la configuration en place, il reste à exposer le formulaire dans le site. Plusieurs approches sont possibles selon le degré de personnalisation souhaité. L'helper de rendu unifié La voie recommandée pour un nouveau site consiste à utiliser le helper de rendu : une seule ligne PHP suffit à afficher un formulaire entièrement opérationnel. L'helper charge la configuration, choisit automatiquement le template correspondant au type de formulaire et insère toutes les protections anti-spam. dol_include_once('/infrasstudio/core/lib/infrasstudio.lib.php'); infrasstudio_render_public_form('keaticweb-contact', array( 'fk_website' => $website->id, 'fk_page' => $object->id, )); Les templates livrés clé en main Trois templates HTML accessibles sont fournis dans templates/forms/  : contact , newsletter et demande de démonstration . Ils respectent les bonnes pratiques d'accessibilité ( autocomplete , aria-label , libellés visibles), intègrent le marquage anti-spam et affichent automatiquement le bandeau de succès ou d'erreur après une soumission. Conserver un design existant Lorsque le design du site impose une intégration sur mesure, vous pouvez conserver votre propre HTML et l'enrichir des champs cachés nécessaires (nom du formulaire, jeton anti-spam, captcha conditionnel) grâce au helper infrasstudio_render_form_security() . Cette approche est privilégiée sur les sites existants pour ne pas casser la charte graphique en place. Suivre et auditer les soumissions Chaque soumission acceptée est persistée dans llx_infrasstudio_form_submission avec son contenu sanitisé, l'adresse IP d'origine, l'agent utilisateur, la page de provenance et la trace du consentement RGPD. Le viewer d'administration ( Outils → InfraS → Soumissions ) permet de filtrer par formulaire, statut ou plage de dates, d'ouvrir le détail complet d'une soumission et d'accéder en un clic au tiers, au contact, au ticket et à l'événement d'agenda qui en ont découlé. Cette traçabilité complète est précieuse à la fois pour le suivi commercial et pour répondre aux demandes RGPD des visiteurs. Récapitulatif Le moteur de formulaires d'InfraSStudio transforme un simple formulaire web en véritable point d'entrée du CRM. Configurable sans code, sécurisé par défaut et entièrement intégré à l'écosystème Dolibarr, il évite la fragmentation des outils tout en gardant la souplesse nécessaire à chaque projet. Pour aller plus loin, voir le Chapitre 28 (constantes), le Chapitre 31 (modèle SQL des trois tables llx_infrasstudio_form_* ) et l'Annexe B (FAQ) pour les questions opérationnelles courantes.