Formulaire de contact PrestaShop : router chaque demande par sujet

Un formulaire de contact par sujet dans PrestaShop : champs conditionnels, routage vers le bon service, pièces jointes protégées, anti-spam, RGPD et ce que change la version 2.0.1 pour la licence.

Formulaire de contact PrestaShop : router chaque demande par sujet

Un client qui signale une panne, un autre qui demande un devis et un troisième qui veut retourner un article ne devraient pas remplir le même formulaire. Dynamic Contact Form remplace le formulaire de contact de PrestaShop par un formulaire propre à chaque sujet : les champs apparaissent selon les réponses, la demande part vers le service concerné et reste consultable dans le back-office. Ce guide montre comment le régler, ce qu'il fait et ce qu'il ne fait pas.

À quoi sert un formulaire de contact dynamique par sujet ?

Il pose à chaque client les questions de son motif, puis envoie la demande à l'équipe concernée, au lieu d'imposer les mêmes champs à tout le monde.

Le formulaire natif propose un e-mail, un objet et un message, quel que soit le sujet ; votre équipe demande ensuite le numéro de commande ou une photo. Avec un formulaire par sujet, ces questions arrivent au bon moment et le client ne répète pas son problème. Un sujet sans formulaire garde un formulaire simple : e-mail, message, pièce jointe.

Il convient aux boutiques qui reçoivent plusieurs types de demandes (service après-vente, retours, devis), où plusieurs personnes traitent les messages, ou qui réservent un formulaire à un groupe de clients.

Il n'est pas nécessaire si la boutique n'a qu'une adresse et un seul type de demande : le formulaire natif suffit. Il ne remplace pas un logiciel de support ni un outil de devis. Il demande PrestaShop 1.7.8, 8.0+ ou 9.0+ et PHP 7.4 ; 1.7.7 et les versions antérieures ne sont pas prises en charge.

La fiche du module détaille ses fonctions : Dynamic Contact Form.

Comment créer un formulaire par sujet, étape par étape ?

Créez d'abord le sujet dans Paramètres de la boutique > Contact > Contacts, puis un formulaire pour ce sujet dans Modules > Gestionnaire de modules > Dynamic Contact Form > Configurer.

La page Configurer mène à Gérer les formulaires et Ouvrir les demandes. Les pages Formulaires et Demandes ont trois liens : Formulaires, Demandes et Réglages.

La page Configurer avec une licence active : la clé masquée, le domaine, l'échéance et les jours restants, puis Gérer les formulaires, Ouvrir les demandes et le panneau Anti-spam.
La page Configurer avec une licence active : la clé masquée, le domaine, l'échéance et les jours restants, puis Gérer les formulaires, Ouvrir les demandes et le panneau Anti-spam.
  1. Dans Formulaires, cliquez sur Ajouter un formulaire et choisissez son sujet de contact.
  2. Laissez Actif coché, choisissez les groupes de clients si le sujet est réservé, et cochez Référence de commande pour que les clients connectés indiquent leur commande.
  3. Activez Consentement RGPD et écrivez le texte du consentement si le formulaire doit demander un accord, puis enregistrez : le panneau Champs apparaît.
  4. Cliquez sur Ajouter un champ, choisissez le type parmi les neuf proposés (texte (une ligne), texte (plusieurs lignes), liste déroulante, boutons radio, case à cocher, plusieurs cases à cocher, date, fichier, bloc d'information). Écrivez ensuite le libellé, le texte indicatif et l'aide dans chaque langue, et cochez Obligatoire si la réponse est nécessaire.
  5. Pour une liste ou des cases, ajoutez les réponses une par une ou collez-les une par ligne avec Ajouter ces réponses.
  6. Pour un champ texte, dans Contrôle, choisissez la valeur attendue : e-mail, adresse web, téléphone, nombre ou votre propre expression régulière.
  7. Dans Condition, choisissez le champ dont dépend celui-ci et les réponses qui doivent le faire apparaître.

Le tableau des champs affiche chaque condition en clair, par exemple Affiché si « Motif » est l'une de Panne, Retour. Une condition porte sur un seul autre champ, sans combinaison sur deux niveaux. Le navigateur et le serveur appliquent les mêmes règles, et un champ masqué n'est ni obligatoire ni enregistré.

Terminez par Voir sur la boutique : choisissez le sujet et remplissez le formulaire comme un client. La documentation du module détaille chaque écran. Pour que le formulaire reste utilisable par tous, l'audit accessibilité EAA analyse vos pages réelles, contrastes compris.

Comment acheminer chaque demande vers le bon service ?

Chaque formulaire part vers l'adresse du sujet, et une route peut remplacer ou compléter ce destinataire selon la réponse à une liste.

Le panneau E-mail à votre équipe définit les adresses et l'objet. Copie à et Copie cachée à ajoutent des adresses fixes à chaque demande. Objet de l'e-mail accepte des variables : {firstname}, {lastname}, {email}, {order_reference}, {reference}, {subject}, {shop_name} et {field:clé} pour la réponse à un champ.

Dans Routes, choisissez un champ de type liste, une ou plusieurs réponses, puis les destinataires, et décidez si la demande part à la place de l'adresse du sujet ou en plus de celle-ci. Un exemple courant : quand la réponse à Motif est Retour, la demande part vers l'équipe des retours ; quand c'est Panne, le support est en copie.

Testez chaque route avant l'ouverture : envoyez une demande par réponse, vérifiez la boîte du destinataire et ouvrez l'onglet Demandes, où la demande doit figurer avec ses réponses. Si un message n'arrive pas, vérifiez l'adresse du sujet et celles de la route.

Si une demande de devis doit devenir une commande négociée, le module Devis B2B prend le relais.

Comment accepter des pièces jointes sans exposer la boutique ?

Ajoutez un champ de type Fichier au formulaire : vous fixez les types acceptés, la taille maximale et le nombre de fichiers, et les fichiers sont conservés hors du dossier public.

Dans les réglages du champ, listez les extensions acceptées, par exemple pdf, png ou jpg. Dans l'onglet Réglages, le panneau Demandes, fichiers et confidentialité fixe la taille maximale d'un fichier et celle des fichiers joints à l'e-mail de votre équipe.

Les fichiers sont inspectés d'après leur contenu lorsque l'extension fileinfo de PHP est disponible ; sans elle, seule l'extension est contrôlée. Ils sont renommés aléatoirement, stockés en dehors du dossier public et téléchargeables depuis la demande, sans jamais s'ouvrir dans le navigateur. Les fichiers plus gros que la limite d'e-mail restent dans le back-office ; vérifiez l'espace disque de l'hébergement si vous acceptez de gros fichiers.

Comment freiner le spam sans décourager les clients ?

Le module combine plusieurs barrières avant le captcha : des limites par heure et par adresse ou par e-mail, une durée minimale de remplissage, une limite de liens et un champ piège invisible.

Ces réglages sont dans l'onglet Réglages, panneau Anti-spam. Les valeurs par défaut sont 10 demandes par heure et par adresse, 5 par heure et par e-mail, 3 secondes de remplissage minimum et 3 liens par message. Adaptez-les à votre trafic : une limite trop basse refuse un client pressé, une limite trop haute laisse passer les robots.

Un jeton de sécurité accompagne chaque envoi, et un champ piège invisible arrête les robots les plus simples. Vous pouvez ajouter Cloudflare Turnstile ou Google reCAPTCHA avec vos propres clés ; le module demande alors quoi faire si le service est injoignable : accepter la demande ou la refuser.

Le module ne dépend pas d'un captcha : limites, durée minimale et champ piège s'appliquent même sans lui. Un développeur peut brancher actionWeprestaDcfSubmitBefore pour accepter ou refuser une demande.

Que fait le module pour le RGPD, et que ne fait-il pas ?

Il recueille un consentement avec votre texte, en garde la date, laisse le module RGPD officiel exporter ou effacer les demandes et les supprime après le délai que vous fixez.

Chaque formulaire peut afficher une case de consentement avec votre texte, HTML compris, ou celle du module RGPD officiel s'il est activé. La date du consentement est enregistrée avec la demande. Le module RGPD officiel peut exporter ou effacer les demandes d'un client, comme les autres données de la boutique.

Dans Réglages, le panneau Demandes, fichiers et confidentialité permet de conserver les demandes et de les supprimer après un nombre de jours ; la valeur 0 les garde jusqu'à suppression manuelle. Un export CSV est disponible par sujet et par dates dans l'onglet Demandes.

Ce que le module ne fait pas : il n'écrit pas votre politique de confidentialité, ne choisit pas la base légale de vos traitements et ne rend pas votre boutique conforme à lui seul. Le consentement, la durée de conservation et les mentions restent votre décision, à valider avec votre conseil juridique. Il ne remplace pas non plus le module RGPD officiel : il s'y raccorde.

Les demandes contiennent des données personnelles : l'accès au back-office mérite une protection propre. Le module 2FA back-office ajoute un code à usage unique après le mot de passe.

Que change la version 2.0.1 quand la licence n'est plus valide ?

La version 2.0.1 retire le formulaire simple qui restait sans licence. Le module se désactive entièrement ; vos formulaires, demandes et réglages restent en base, vos fichiers sur le serveur.

Concrètement, la page de contact retrouve le formulaire natif de PrestaShop si votre boutique l'utilisait avant, et les pages Formulaires et Demandes se ferment, téléchargement des fichiers compris. La page Configurer reste ouverte. L'entrée de menu du module disparaît. Pendant ce temps, le module RGPD officiel ne reçoit plus vos demandes, et leur suppression automatique est suspendue.

Le retour se fait depuis la page Configurer : activez ou renouvelez la licence, et le module se réactive avec vos formulaires, à la place du formulaire natif.

Une licence payée ne se coupe pas sur une réponse passagère. Pendant les sept jours qui suivent la date d'échéance enregistrée, le module fonctionne sans contacter le serveur ; au-delà, il vérifie au plus une fois par heure si l'abonnement est renouvelé. Une erreur, une limite de requêtes, une horloge décalée ou un serveur injoignable ne rendent pas la licence expirée : ces incidents sont tolérés pendant sept jours à compter du premier. Une réponse définitive s'applique tout de suite : licence expirée, suspendue ou révoquée, licence inconnue, domaine ou signature incorrects. La visite qui déclenche la vérification peut attendre jusqu'à trois secondes ; la suivante a lieu au moins une heure plus tard.

En multiboutique, activez la licence depuis « Toutes les boutiques » : une licence activée dans une seule boutique n'est pas vue par les autres, qui se désactivent à leur première requête.

Avec une licence expirée, Configurer affiche l'avertissement et le formulaire d'activation ; les formulaires, demandes et réglages restent en place.
Avec une licence expirée, Configurer affiche l'avertissement et le formulaire d'activation ; les formulaires, demandes et réglages restent en place.

Questions fréquentes

Comment faire arriver une demande au service après-vente plutôt qu'à l'adresse générale ?
Créez un formulaire pour le sujet Service après-vente, puis une route dans le panneau E-mail à votre équipe. Choisissez le champ Motif, la réponse Panne ou Retour, l'adresse du service et l'option « à la place de l'adresse du sujet ». Testez avec une demande par réponse et vérifiez la boîte du service et l'onglet Demandes.
Peut-on accepter des pièces jointes sans modifier le code du thème ?
Oui. Ajoutez un champ de type Fichier au formulaire et choisissez les extensions acceptées, la taille maximale et le nombre de fichiers. Les fichiers sont stockés hors du dossier public et téléchargeables depuis la demande. La taille des fichiers joints à l'e-mail de l'équipe se règle séparément dans Réglages, panneau Demandes, fichiers et confidentialité.
Le module suffit-il à arrêter le spam quand le reCAPTCHA ne bloque pas tout ?
Le module ne repose pas sur le captcha seul. Les limites de demandes par heure et par adresse ou par e-mail, la durée minimale de remplissage, la limite de liens et le champ piège s'appliquent même sans captcha. Cloudflare Turnstile ou Google reCAPTCHA restent facultatifs, avec vos clés, et vous choisissez si une demande est acceptée ou refusée quand le service est injoignable.
Que deviennent mes formulaires et mes demandes si la licence expire ?
Ils sont conservés. Sans licence valide, le module se désactive : la page de contact retrouve le formulaire natif de PrestaShop si votre boutique l'utilisait avant, et les pages Formulaires et Demandes se ferment. Vos formulaires, demandes et réglages restent en base, vos fichiers sur le serveur. Après le renouvellement, ouvrez Configurer : le module se réactive avec vos formulaires.
Peut-on afficher un champ seulement pour certains motifs ?
Oui. Dans l'éditeur de champ, la section Condition permet de choisir un autre champ et les réponses qui doivent faire apparaître celui-ci. Par exemple, le numéro de commande apparaît seulement si Motif est l'une de Panne, Retour. Le navigateur et le serveur appliquent la même règle, et un champ masqué n'est ni obligatoire ni enregistré.
Combien de temps les demandes sont-elles conservées ?
Vous décidez. Dans Réglages, le panneau Demandes, fichiers et confidentialité permet de fixer un nombre de jours après lequel les demandes sont supprimées ; la valeur 0 les garde jusqu'à suppression manuelle. L'export CSV reste disponible par sujet et par dates, et le module RGPD officiel peut exporter ou effacer les demandes d'un client.

Produits de cet article

Trouvez le module dont votre boutique a besoin

Voir les modules