Caractéristiques et avantages du module
- Newsletter entièrement intégrée à PrestaShop — les données des abonnés, le contenu des campagnes et les statistiques restent dans la base de la boutique, sans transmettre la liste d’adresses à un prestataire externe et sans frais liés au nombre de messages envoyés.
- Créateur de campagne en quatre étapes (modèle, produits, destinataires, envoi) avec aperçu à chaque étape et récapitulatif avant le lancement.
- Bloc produits construit à partir du catalogue de la boutique : miniature, nom, prix et lien mènent vers de vrais produits, avec les prix et les stocks au moment de la préparation de la campagne.
- Moteur d’envoi propre avec file d’attente : traitement par lots, verrouillage contre l’envoi parallèle de la même campagne, nouvelle tentative sur les adresses en échec et reprise après interruption — rien ne se perd après la fermeture de l’onglet du navigateur.
- Console d’envoi en direct avec une ligne pour chaque tentative : heure, adresse, résultat et réponse complète du serveur mail en cas de refus — vous voyez exactement ce que le serveur a rejeté, sans devoir consulter les journaux PrestaShop.
- Onze contrôles avant envoi qui ne sont pas décoratifs : une ligne marquée comme bloquante empêche le lancement de la campagne en indiquant la cause précise.
- Diagnostic du domaine expéditeur (MX, SPF, DKIM, DMARC) directement dans le panneau — ces enregistrements déterminent si Gmail et Yahoo traiteront l’envoi massif comme authentifié.
- Conformité aux exigences de désinscription : en-têtes de désinscription en un clic (RFC 8058) ainsi que lien de désinscription requis dans chaque langue du modèle, vérifié avant l’envoi.
- Le mode test (dry run) permet de simuler toute la campagne du début à la fin — le moteur parcourt toute la file d’attente, mais aucun message ne quitte la boutique.
- Le registre des consentements lit les preuves directement depuis PrestaShop en temps réel et n’affirme jamais qu’une personne a donné son consentement s’il n’existe aucune trace — une adresse sans date enregistrée est décrite comme « absence de preuve », et non comme consentement.
- Éditeur TinyMCE 6.8.6 inclus sous licence MIT — vous modifiez le contenu des modèles en WYSIWYG sans télécharger quoi que ce soit depuis un CDN.
- Cinq modèles de messages prêts à l’emploi, responsives, en version polonaise et anglaise, installés avec le module et restaurables en un clic.
- Prise en charge complète du multilingue et du multiboutique : objet et contenu séparés pour chaque langue, campagne attribuée de façon permanente à une seule boutique.
- Interface entièrement traduite en polonais, dans un système de traduction double prenant en charge à la fois les dictionnaires classiques et le système PrestaShop 1.7.8+.
- Sans Composer, sans bibliothèques PHP externes et sans connexions à des services externes lors de l’envoi — le module utilise la configuration mail native de PrestaShop.
Fonctionnalités principales du module
- Onglet dédié dans le panneau d’administration (sous le menu Clients) avec huit sections : Tableau de bord, Campagnes, Modèles, Destinataires, Import, Consentements, Statistiques et Paramètres.
- Créateur de campagne : étape 1 — nom et modèle, étape 2 — produits et apparence du bloc, étape 3 — destinataires, étape 4 — contrôles, planification et envoi.
- Moteur de recherche de produits par nom, référence et code EAN, ainsi qu’ajout en masse depuis une catégorie : 8 meilleures ventes, 8 nouveautés ou toute la catégorie.
- Les meilleures ventes sont calculées sur la base des unités vendues au cours des 30 derniers jours, uniquement à partir des commandes valides.
- Disposition du bloc produits : 1, 2 ou 3 colonnes et quatre styles de cartes (Clair, Sombre, Avec bordure, Étendu) avec palette de couleurs personnalisée, ordre des produits modifiable avec les flèches haut/bas sur chaque position.
- Alerte sur la taille du message mesurée côté serveur par rapport au seuil de coupure de Gmail (~102 kB) — avant qu’une campagne ne soit envoyée tronquée.
- Possibilité d’envoyer une campagne sans aucun bloc produits.
- Bibliothèque de modèles : cinq mises en page prêtes à l’emploi (Classique (default), Promotion, Editorial, Minimal, Grille), création de modèles personnalisés, duplication, aperçu, envoi de test et bouton de restauration des modèles du package.
- Objet et contenu du message séparés pour chaque langue de la boutique, modifiés dans TinyMCE 6.8.6 sans CDN.
- Dix-sept marqueurs à insérer dans le modèle : {firstname}, {lastname}, {email}, {shop_name}, {shop_url}, {shop_logo_url}, {date_text}, {unsubscribe_link}, {view_in_browser}, {page_new_products}, {page_best_sales}, {page_contact_link}, {page_sitemap}, {page_my_orders}, {page_my_addresses}, {page_my_vouchers}, {page_my_personal_info} — plus {products} pour le bloc produits.
- Les adresses des pages de la boutique dans les marqueurs sont résolues pour la boutique de la campagne et la langue du destinataire, en utilisant les URL conviviales de cette langue.
- Sélection des destinataires : groupes de clients, langues des destinataires, liste importée depuis CSV, listes de diffusion et liste des adresses exclues — avec compteurs en direct (Natifs, Importés, Exclus, Total).
- Fusion et déduplication des adresses de toutes les sources par adresse e-mail, avec soustraction automatique des désinscrits et des exclus.
- Listes de diffusion statiques (exactement les adresses que vous y ajoutez) et dynamiques (filtres enregistrés recalculés au moment de la préparation de la campagne), avec possibilité de renommer, dupliquer, exporter en CSV et supprimer.
- Navigateur de toutes les adresses connues — clients, invités inscrits via le bloc newsletter PrestaShop et adresses importées — en un seul endroit, avec filtres par source, statut, langue et groupe de clients.
- Segmentation selon l’historique d’achat : montant minimum dépensé, nombre minimum de commandes, achat au cours des N derniers jours, clients ayant déjà acheté mais pas au cours des N derniers jours, achat dans une catégorie précise, achat d’un produit précis (ID) ainsi qu’absence d’achat d’un produit précis.
- Import d’adresses depuis un fichier CSV au format
email;firstname;lastname;iso— seule la colonne e-mail est obligatoire, le séparateur (point-virgule, virgule ou tabulation) est détecté automatiquement, la ligne d’en-tête est ignorée, jusqu’à 50 000 lignes par fichier. - La réimportation de la même adresse met à jour ses données au lieu de créer un doublon ; les adresses importées peuvent être ajoutées immédiatement à la liste de diffusion choisie.
- Envoi immédiat depuis l’onglet du navigateur ouvert ou planifié à une date et une heure choisies, puis exécuté par une tâche cron.
- Moteur d’envoi avec paramètres : taille de lot de 1 à 500 messages (20 par défaut), pause entre les messages de 0 à 5000 ms (100 par défaut), budget temps d’un passage de 5 à 45 s (20 par défaut) et nombre de tentatives par destinataire de 1 à 10 (3 par défaut).
- Contrôle de l’envoi : Suspendre, Reprendre et Arrêter, ainsi que prise en main d’une campagne lancée dans un autre onglet ou gérée par cron.
- Console d’envoi en direct sous forme de fenêtre texte : une ligne pour chaque tentative, avec heure, adresse, résultat (accepté, rejeté et retenté, abandonné, ignoré) et message complet du serveur mail.
- Compteurs de progression distinguant Échecs et Retentés — une adresse rejetée avant épuisement des tentatives est visible immédiatement, et non seulement à la fin de la campagne.
- Tableau de file d’attente avec filtrage par statut (Tous, Échecs, Envoyés, En attente, Ignorés), regroupement des erreurs selon la réponse du serveur et distinction entre erreurs temporaires (4xx) et permanentes (5xx).
- Export des adresses en échec vers un fichier CSV directement depuis l’écran d’envoi.
- Onze contrôles avant envoi : méthode d’envoi des e-mails dans PrestaShop, validité des adresses d’enveloppe (BCC et Reply-To), présence de destinataires, contenu du message figé, lien de désinscription dans chaque langue, objet dans chaque langue, message de test envoyé, conformité de l’adresse expéditeur avec le domaine de la boutique, enregistrements SPF/DKIM/DMARC, mode test et en-têtes de désinscription en un clic.
- Envoi de test vers n’importe quelle adresse, dans la langue choisie, fonctionnant également lorsque le mode test est activé.
- Mode test (dry run) : le moteur parcourt toute la file d’attente et marque les destinataires comme envoyés, mais l’appel d’envoi n’a pas lieu — avec avertissement visible sur l’écran d’envoi et dans les paramètres.
- Paramètres de l’expéditeur : adresse et nom de l’expéditeur, adresse Reply-To pour les réponses des clients ainsi que copie d’archive BCC de chaque message de campagne (les messages de test ne sont pas archivés).
- URL de la tâche cron avec clé secrète, information sur la dernière exécution, alerte si cron ne s’est pas manifesté depuis plus d’une heure et bouton pour générer une nouvelle adresse ; une clé incorrecte ou absente reçoit simplement un 403.
- Diagnostic du domaine expéditeur lancé depuis l’onglet Paramètres : lecture des enregistrements MX, SPF, DKIM et DMARC sans apporter la moindre modification.
- Suivi des ouvertures par pixel invisible 1×1, avec option de désactivation complète — lorsque le suivi est désactivé, le pixel n’est pas du tout intégré et le nombre d’ouvertures reste à zéro.
- Suivi des clics : les liens dans le contenu de la campagne sont enregistrés lors de sa préparation et passent par la redirection propre au module ; l’adresse cible est lue depuis la base via son identifiant, jamais depuis la requête, de sorte que la redirection ne peut pas être détournée.
- Attribution du chiffre d’affaires à la campagne selon la méthode du dernier clic dans une fenêtre de 1 à 90 jours (7 par défaut) ; la fenêtre appliquée est enregistrée pour chaque commande attribuée, donc un changement de paramètre ne réécrit pas l’historique.
- Onglet Statistiques : pour chaque campagne, état, nombre de destinataires, envoyés, échecs, ouvertures, taux d’ouverture, chiffre d’affaires attribué ainsi que dates de début et de fin.
- Tableau de bord avec choix de période (tout l’historique, 7, 30 ou 90 jours) et sept blocs : indicateurs clés, graphique des envois et ouvertures dans le temps, base d’abonnés, état de délivrabilité, désinscriptions, dernières campagnes et campagnes les plus performantes.
- Page « Voir dans le navigateur » pour chaque campagne, personnalisée pour le destinataire et fonctionnant également pour une campagne pas encore envoyée.
- Page de désinscription sans connexion, sécurisée par jeton : l’accès via le lien affiche une page de confirmation, et la désinscription n’a lieu qu’après validation — ainsi, les scanners de sécurité des e-mails et les aperçus de liens ne désinscrivent personne par accident.
- La désinscription met à jour simultanément le consentement du client dans PrestaShop, l’entrée dans la table des inscriptions invitées et la position dans la liste importée, et l’adresse est ajoutée à la liste commune des désinscrits.
- Registre des consentements : source de l’adresse, preuve enregistrée (date et adresse IP de l’inscription), information indiquant si l’envoi à cette adresse est autorisé, dernier événement enregistré par le module et export complet en CSV.
- Liste des désinscrits avec moteur de recherche et possibilité de supprimer une entrée lorsque le destinataire demande à se réinscrire.
- Duplication des campagnes ainsi que sept états explicites : brouillon, prête, planifiée, en cours d’envoi, suspendue, terminée et arrêtée.
- Gel de la campagne lors de la préparation : le contenu, les prix, les produits et la liste des destinataires sont figés au moment de la préparation, et non relus au moment de l’envoi effectif.
Délivrabilité des messages
- Contrôle de la méthode d’envoi des e-mails dans PrestaShop : une boutique configurée sur « ne jamais envoyer d’e-mails » est détectée avant le lancement, au lieu de signaler toute la campagne comme délivrée.
- Vérification des adresses d’enveloppe (BCC et Reply-To) avant l’envoi — une seule adresse dans un domaine qui n’accepte pas le courrier peut bloquer tout le message, avec tous les vrais destinataires.
- Lecture des enregistrements SPF et DMARC du domaine expéditeur ainsi que vérification de la clé DKIM pour le sélecteur utilisé par PrestaShop.
- Comparaison de l’adresse expéditeur avec le domaine de la boutique — l’envoi massif depuis un domaine tiers (par ex. une boîte gratuite) est la cause la plus fréquente d’arrivée en spam.
- En-têtes
List-UnsubscribeetList-Unsubscribe-Postconformes à la RFC 8058, grâce auxquels les fournisseurs de messagerie affichent leur propre bouton de désinscription (PrestaShop 1.7.5 et versions ultérieures). - Présence obligatoire du lien de désinscription dans chaque langue enregistrée de la campagne — son absence bloque l’envoi.
- Courte pause après chaque message et traitement par lots, afin de ne pas surcharger le serveur mail et de ne pas dépasser les limites d’envoi.
- Distinction entre refus temporaires (codes 4xx — par ex. greylisting, boîte pleine) et permanents (codes 5xx — par ex. adresse inexistante), visible pour chaque groupe d’erreurs.
Consentements, désinscriptions et données personnelles
- Le registre des consentements lit les preuves directement depuis PrestaShop à chaque requête (date d’inscription à la newsletter, adresse IP d’inscription, adresse de la page référente) — il ne crée pas sa propre copie qui pourrait diverger de la boutique.
- Une adresse sans date d’inscription enregistrée est décrite comme « absence de preuve », et non comme consentement — le module ne remplace jamais la date de consentement par la date de création du compte ni par la date d’import du fichier CSV.
- Le journal d’événements propre au module enregistre uniquement ce que PrestaShop ne sauvegarde pas : import d’adresse depuis un fichier CSV, désinscription via le lien du module et modifications d’appartenance aux listes de diffusion.
- La désinscription s’applique à toute l’installation : une adresse désinscrite dans une campagne et dans une boutique est exclue de toutes les campagnes futures dans toutes les boutiques.
- Une adresse figurant sur la liste des désinscrits reste exclue quel que soit le nombre de fois où elle est réimportée ou réactivée.
- Export du registre des consentements vers un fichier CSV à des fins de documentation et de contrôle.
- Le suivi des ouvertures peut être désactivé complètement si, sur un marché donné, un pixel de suivi non annoncé est considéré comme une question de consentement.
Multiboutique et multilingue
- Une campagne appartient à exactement une seule boutique — ses destinataires, les prix des produits ainsi que le nom et l’adresse de la boutique dans le contenu proviennent de cette boutique, jamais du contexte courant du panneau.
- La liste des désinscrits et la liste importée sont communes à toute l’installation, ce qui est un choix assumé : le refus de recevoir des messages concerne la personne et l’adresse, et non l’une des boutiques.
- Objet et contenu du message définis séparément pour chaque langue de la boutique, avec repli sur la langue par défaut lorsqu’une langue donnée n’a pas son propre contenu.
- Filtre des langues des destinataires à l’étape de sélection des destinataires ; les adresses importées sans langue propre sont comptées comme langue par défaut de la boutique.
- Les marqueurs d’adresses des pages de la boutique sont développés dans la langue du destinataire, en utilisant les URL conviviales de cette langue.
Sécurité et impact sur la boutique
- Le module n’enregistre aucun hook affichant du contenu sur le front-office, il n’ajoute donc rien aux pages du catalogue, du panier ou de la commande.
- Les seules pages front-office propres sont : désinscription, aperçu du message dans le navigateur, pixel d’ouverture, redirection de clic et point d’entrée de la tâche cron — la feuille de style du module n’est chargée que sur la page de désinscription.
- Lors de l’installation, le module crée deux index auxiliaires sur les tables des clients et des inscriptions à la newsletter afin que le comptage des destinataires n’analyse pas les tables entières ; lors de la désinstallation, les deux sont supprimés.
- L’enregistrement de l’attribution des ventes est effectué lors de la création et du changement de statut de la commande, dans un bloc capturant toutes les erreurs — les statistiques de newsletter ne peuvent pas casser la validation d’une commande.
- Les liens de désinscription et d’aperçu dans le navigateur sont signés avec la clé secrète de l’installation ; le jeton est une fonction de l’adresse et de la clé, il est donc impossible à deviner.
- L’URL de la tâche cron est protégée par une clé secrète — tout appel sans clé correcte reçoit un 403 et rien de plus.
- Chaque point AJAX du panneau vérifie les autorisations du profil employé (consultation ou modification), et les campagnes sont limitées à la boutique dans laquelle l’employé travaille.
- La page de désinscription n’affiche jamais l’adresse e-mail transmise en cas de jeton invalide.
- La redirection de clic aboutit toujours à une page de la boutique, même en cas de lien inconnu ou d’erreur de base de données — la recette pour ne pas perdre une visite que la campagne vient justement de financer.
Usage métier
- Pour les boutiques qui souhaitent gérer une newsletter sans abonnement à un système d’e-mailing externe et sans lui transmettre leur base d’adresses.
- Pour les boutiques qui envoient des campagnes produits — nouveautés, soldes, meilleures ventes — dans lesquelles le contenu du message doit être composé de vrais produits du catalogue.
- Pour les vendeurs qui doivent documenter la base légale de l’envoi : registre des consentements, journal des désinscriptions et export CSV répondent à la question « d’où avez-vous mon adresse ».
- Pour les boutiques après migration vers PrestaShop 8 ou 9, qui ont besoin d’une newsletter fonctionnant sur le cœur actuel et sur PHP 8.x.
- Pour les boutiques multiboutiques dans lesquelles chaque boutique mène ses propres campagnes, mais où les désinscriptions doivent s’appliquer partout.
- Pour les vendeurs qui réactivent des clients inactifs — la segmentation selon l’historique d’achat permet d’isoler ceux qui ont déjà acheté, mais pas au cours des derniers mois.
Compatibilité
- PrestaShop : 1.7.x – 9.x
- PHP : 7.0 – 8.5
- MySQL 5.6+ / MariaDB 10.x+
- Sans Composer et sans bibliothèques PHP externes ; TinyMCE 6.8.6 (licence MIT) inclus dans le module.
- L’envoi s’effectue via la configuration mail native de PrestaShop (SMTP ou fonction mail), sans API externe.
Lien vers la démo du module :
Démo du panneau d’administration :
https://moduly-prestashop.eu/pdnewsletterpro/admin-dev
Démo du front-office :
https://moduly-prestashop.eu/pdnewsletterpro