Collectez des abonnés email et SMS, organisez-les en segments, composez des campagnes et envoyez des communications ciblées : le tout depuis le panneau d'administration de LaraClassifier / JobClass.
Gestion des abonnés
Collectez des abonnés via des formulaires front-end, un import CSV ou une saisie manuelle. Suivez le statut, la source et l'appartenance aux segments.
Double opt-in
Un flux optionnel de confirmation par email garantit des adresses valides. Les abonnés reçoivent un lien de confirmation avant d'être activés.
Segments
Regroupez vos abonnés dans des segments ciblés. Les formulaires peuvent ajouter les abonnés à des segments choisis, et les segments par défaut sont assignés automatiquement.
Campagnes email & SMS
Composez des campagnes traduisibles, ciblez des segments précis et envoyez-les par email ou par SMS (Vonage/Twilio). Chaque envoi est journalisé par abonné.
Import & export
Importez des abonnés depuis des fichiers CSV, JSON, XML ou séparés par tabulations, et exportez à tout moment toute votre liste dans les mêmes formats.
Emails de bienvenue
Email de bienvenue configurable avec sujet et contenu traduisibles, envoyé automatiquement aux abonnés nouvellement confirmés.
Cas d'utilisation
Site portfolio avec actualités
Vous gérez un site portfolio et souhaitez tenir vos clients informés de vos nouveaux projets et services.
- Ajoutez un formulaire d'abonnement dans votre pied de page ou dans une section de page dédiée.
- Créez des segments comme “Clients” et “Prospects” pour envoyer des actualités ciblées.
- Composez des campagnes annonçant vos nouveaux projets ou services et envoyez-les à tous ou à des segments précis.
Produit SaaS avec liste de lancement
Vous développez un produit et souhaitez collecter des inscriptions en accès anticipé.
- Activez le double opt-in pour garantir des adresses email valides.
- Créez un segment “Liste d'attente bêta” et marquez-le comme segment par défaut.
- Au moment du lancement, composez une campagne ciblant le segment de la liste d'attente.
Newsletter de blog multi-thématique
Votre blog couvre plusieurs sujets et vos lecteurs souhaitent ne s'abonner qu'à ce qui les intéresse.
- Créez des segments publics pour chaque sujet (par ex. “Tech”, “Design”, “Business”).
- Les visiteurs choisissent leurs centres d'intérêt via des cases à cocher sur le formulaire d'abonnement.
- Envoyez des campagnes thématiques uniquement aux segments concernés.
Alertes SMS pour un commerce local
Vous gérez un commerce local et souhaitez envoyer des promotions par SMS à vos clients.
- Collectez les numéros de téléphone via le formulaire d'abonnement (champ téléphone).
- Créez des campagnes SMS avec un contenu en texte brut (le HTML est automatiquement supprimé).
- Envoyez via Vonage ou Twilio selon le pilote SMS que vous avez configuré.
Prérequis
- LaraClassifier / JobClass v19.0.0 ou ultérieur
- PHP 8.3+
- Des réglages e-mail du site fonctionnels (Panneau d'administration → Configuration → Paramètres → Courrier), pour les campagnes et les emails de confirmation
- La tâche cron du site exécutant le planificateur Laravel chaque minute (
* * * * * php /chemin/vers/votre/site/artisan schedule:run), pour les campagnes planifiées et la suppression automatique des inscriptions non confirmées - Optionnel : un compte Vonage ou Twilio (pour les campagnes SMS)
Installation
Étape 1 : Téléverser l'add-on
Allez dans Panneau d'administration → Extensions → Add-ons, cliquez sur Téléverser un add-on et déposez le fichier .zip de l'add-on dans la zone de téléversement (50 Mo maximum).
L'archive est extraite dans extensions/addons/newsletter/ et Newsletter Platform apparaît dans la liste, désactivé.
extensions/addons/newsletter/ par FTP ou SSH : son fichier addon.json doit se trouver directement dans ce dossier.
Ouvrez ensuite Panneau d'administration → Extensions → Add-ons. La page analyse extensions/addons/ à chaque chargement : l'add-on est donc listé immédiatement (le bouton Synchroniser lance la même analyse à la demande).
Étape 2 : Activer l'add-on
Cliquez sur Activer sur la carte Newsletter Platform. C'est un add-on payant : une fenêtre demande son code d'achat, qui est vérifié avant toute autre opération. Un code invalide est refusé dans la fenêtre et rien n'est modifié.
Une fois le code accepté, l'activation se fait en une seule passe : elle crée les tables de base de données de l'add-on (ses migrations), enregistre ses permissions, exécute ses seeders et publie ses assets publics. Rechargez la page pour voir sa nouvelle entrée dans la section Add-ons de la barre latérale d'administration.
Étape 3 : Configurer
Ouvrez Panneau d'administration → Newsletter depuis la section Add-ons de la barre latérale et configurez l'add-on : voir Configuration.
Code d'achat (clé de licence)
Newsletter Platform est vendu comme un produit séparé ; il possède donc son propre code d'achat (clé de licence), distinct du code d'achat de l'application principale et de celui de chaque autre add-on. Il vous est demandé lorsque vous activez Newsletter Platform dans Panneau d'administration → Extensions → Add-ons.
Nos produits sont vendus sur trois plateformes. La façon dont vous recevez un code d'achat dépend de l'endroit où vous avez acheté le produit.
| Plateforme / Marketplace | Comment vous obtenez le code d'achat | Où le retrouver |
|---|---|---|
| Boutique bedigit.com Achat sur le site (Boutique) |
Généré automatiquement lorsque la commande est payée, puis envoyé par email, soit dans un email de licence dédié, soit dans l'email de confirmation de commande. | Mon compte → Mes licences sur bedigit.com |
| Gumroad | Créé dès que Gumroad nous notifie la vente, puis envoyé dans un email séparé, en plus du reçu Gumroad. | L'email de licence, votre Bibliothèque Gumroad et Mon compte → Mes licences sur bedigit.com |
| Envato Market CodeCanyon |
Délivré par Envato, et non par nous, et jamais envoyé par email : vous le téléchargez vous-même depuis votre compte Envato. | Compte Envato → Downloads → License certificate & purchase code |
1. Boutique bedigit.com (achat sur le site)
- Dès que le statut de paiement de la commande passe à Payée, une clé de licence est générée automatiquement pour chaque article sous licence de la commande (une clé par unité achetée : l'achat de 3 unités donne 3 clés distinctes).
- Elle est envoyée par email à l'adresse utilisée pour la commande, soit dans un email de licence dédié, soit dans l'email de confirmation de commande. Vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- La clé reste disponible dans votre compte sous Mon compte → Mes licences. Les clés sont masquées dans la liste ; ouvrez la page de détail de la licence pour révéler et copier la clé complète, voir les domaines sur lesquels elle est activée, et désactiver un domaine pour libérer un emplacement d'activation.
- La facture correspondante se trouve sous Mon compte → Mes commandes.
2. Gumroad
- Un achat sur Gumroad génère deux emails distincts : le reçu Gumroad (envoyé par Gumroad, donnant accès aux fichiers) et un email de clé de licence (envoyé par bedigit.com) qui contient votre code d'achat.
- L'email de clé de licence est généré dès que Gumroad nous notifie la vente ; il arrive donc normalement quelques secondes après le paiement. Ici aussi, vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- Lorsque le produit Gumroad utilise la fonctionnalité de clé de licence propre à Gumroad, la même clé apparaît aussi dans votre reçu Gumroad et sous Bibliothèque → votre achat sur gumroad.com.
- Utilisez la même adresse email sur bedigit.com que sur Gumroad : vos clés sont alors liées automatiquement à votre compte et listées sous Mon compte → Mes licences, même si vous vous inscrivez après l'achat. Vous pouvez aussi ajouter manuellement une clé Gumroad depuis Mon compte → Mes licences Gumroad.
3. Envato Market (CodeCanyon)
- Les codes d'achat Envato sont émis et délivrés par Envato Market, jamais envoyés par email par nos soins, il n'y a donc rien à chercher dans votre dossier spam : vous récupérez le code depuis votre compte Envato.
- Connectez-vous à votre compte Envato / CodeCanyon, ouvrez la page Downloads, trouvez l'article et choisissez License certificate & purchase code dans le menu déroulant Download. Le code figure dans ce certificat.
- Un code d'achat Envato ressemble à
12345678-90ab-cdef-1234-567890abcdef(8-4-4-4-12 caractères). Il ne change jamais, et le renouvellement du support de l'article n'en génère pas de nouveau. - Article officiel Envato : Where Is My Purchase Code?
Configuration
Les paramètres sont gérés dans Panneau d'administration → Newsletter → Paramètres (section Add-ons de la barre latérale)
et enregistrés dans la table settings sous les clés ci-dessous. Une clé jamais enregistrée reprend la valeur par défaut
du fichier config/newsletter.php de l'add-on.
| Paramètre | Description | Par défaut |
|---|---|---|
newsletter_double_opt_in |
Lorsqu'il est activé, les abonnés doivent confirmer leur adresse email via un lien de confirmation avant d'être ajoutés à la liste. | true |
newsletter_auto_delete_unconfirmed |
Uniquement avec le double opt-in. Supprime automatiquement les inscriptions en attente dont l'adresse email n'a jamais été confirmée. Le nettoyage s'exécute chaque jour via le planificateur Laravel (commande newsletter:purge-unconfirmed) : la tâche cron du site doit donc être en place. |
false |
newsletter_auto_delete_unconfirmed_days |
Nombre de jours pendant lesquels une inscription non confirmée est conservée avant d'être supprimée (1–3650). | 30 |
newsletter_from_name |
Le nom affiché dans le champ “De” des emails de newsletter. Obligatoire. | NEWSLETTER_FROM_NAME, sinon APP_NAME |
newsletter_from_email |
L'adresse email utilisée dans le champ “De” des emails de newsletter. Obligatoire. | NEWSLETTER_FROM_EMAIL, sinon MAIL_FROM_ADDRESS |
newsletter_reply_to |
L'adresse email vers laquelle les réponses aux campagnes seront envoyées. Laissez vide pour utiliser l'email de l'expéditeur. | NEWSLETTER_REPLY_TO, sinon (vide) |
newsletter_welcome_subject |
Objet de l'email de bienvenue (traduisible, par langue, 255 caractères max.). L'email de bienvenue n'est envoyé que si l'objet et le contenu sont tous deux renseignés. | (vide) |
newsletter_welcome_content |
Contenu du corps de l'email de bienvenue (traduisible, par langue, 5000 caractères max.). Laissez vide pour désactiver l'email de bienvenue. | (vide) |
Variables d'environnement
| Variable | Utilisation |
|---|---|
NEWSLETTER_FROM_NAME |
Valeur par défaut de newsletter_from_name (repli sur APP_NAME) |
NEWSLETTER_FROM_EMAIL |
Valeur par défaut de newsletter_from_email (repli sur MAIL_FROM_ADDRESS) |
NEWSLETTER_REPLY_TO |
Valeur par défaut de newsletter_reply_to |
config/newsletter.php. Les paramètres enregistrés dans le panneau d'administration (stockés en base de données)
les remplacent au démarrage via le service provider.
Admin : Paramètres
La page des paramètres (Panneau d'administration → Newsletter → Paramètres) est organisée en trois onglets :
Paramètres d'inscription
- Double confirmation : interrupteur. Lorsqu'il est activé, les nouveaux abonnés reçoivent un email de confirmation et restent au statut “en attente” jusqu'à ce qu'ils cliquent sur le lien de confirmation.
- Suppression automatique des inscriptions non confirmées (visible lorsque la double confirmation est activée) : supprime une fois par jour, via le planificateur Laravel, les inscriptions en attente jamais confirmées.
- Supprimer après : nombre de jours de conservation d'une inscription non confirmée (1–3650, 30 par défaut).
- Supprimer les non confirmées maintenant : lance le nettoyage immédiatement avec le nombre de jours saisi, sans attendre la planification quotidienne.
Une note sur cet onglet rappelle que les e-mails d'abonnement et de campagne partent avec les réglages e-mail du site.
Paramètres email
- Nom de l'expéditeur : le nom de l'expéditeur pour tous les emails de newsletter (obligatoire).
- Email de l'expéditeur : l'adresse email de l'expéditeur (obligatoire).
- Email de réponse : où vont les réponses aux campagnes. Laissez vide pour utiliser l'email de l'expéditeur.
Email de bienvenue
- Objet de l'email de bienvenue : champ texte traduisible (un par langue). Définit l'objet de l'email de bienvenue envoyé aux nouveaux abonnés une fois confirmés.
- Contenu de l'email de bienvenue : zone de texte traduisible. Le corps de l'email de bienvenue. Laissez-le vide pour désactiver l'email de bienvenue : il n'est envoyé que si l'objet et le contenu sont tous deux renseignés.
Admin : Abonnés
La page Abonnés (Newsletter → Abonnés) est la vue principale de gestion des abonnés.
Tableau de bord statistique
Une rangée de cartes statistiques en haut de page affiche :
- Total des abonnés : tous les enregistrements de la table
- Confirmés : abonnés actifs et confirmés
- En attente : en attente de confirmation par email
- Désabonnés : ayant retiré leur consentement
- Nouveaux ce mois-ci : abonnés créés durant le mois calendaire en cours
Liste des abonnés
Un tableau paginé (20 par page) avec des filtres :
- Filtre de statut : liste déroulante pour afficher Tous, En attente, Confirmés ou Désabonnés
- Filtre de segment : liste déroulante pour filtrer par appartenance à un segment
Chaque ligne affiche : l'email, le nom, le téléphone, le badge de statut, le badge de source, les étiquettes de segments, la date d'abonnement et une action de suppression.
Ajouter un abonné
Cliquez sur Ajouter un abonné pour ouvrir le formulaire de création :
- Email : obligatoire, doit être unique dans la table des abonnés
- Téléphone : optionnel, pour les campagnes SMS
- Nom : optionnel
- Statut : sélection : En attente, Confirmé ou Désabonné
- Segments : sélection multiple des segments actifs
Les abonnés ajoutés manuellement ont source = 'manual'. S'ils sont définis sur “Confirmé”,
leurs horodatages confirmed_at et subscribed_at sont renseignés immédiatement.
Import & export
Importer
Cliquez sur Importer et choisissez un fichier, son format et un mode d'import :
- Format : CSV, JSON, XML ou texte séparé par tabulations (
.txt). Taille maximale du fichier : 10 Mo. - Colonnes :
email(obligatoire),phone,name,status(confirmed,pendingouunsubscribed),sourceetsubscribed_at. Exporter d'abord un fichier vous donne la structure exacte. - Mode d'import : Création uniquement ajoute les nouveaux enregistrements et ignore les existants, Mise à jour uniquement met à jour les enregistrements existants (identifiés par l'email) et ignore les nouveaux, Création et mise à jour fait les deux.
Les nouveaux abonnés prennent status = 'confirmed' et source = 'import' lorsque ces colonnes sont vides.
Après l'import, un récapitulatif indique le nombre d'enregistrements créés, mis à jour et ignorés, avec les erreurs par ligne.
Exporter
Cliquez sur Exporter et choisissez un format (CSV, JSON, XML ou séparé par tabulations) pour télécharger tous les abonnés, quel que soit leur statut. L'export contient les colonnes email, téléphone, nom, statut, source et date d'abonnement.
Admin : Segments
Les segments (Newsletter → Segments) vous permettent de regrouper les abonnés dans des listes ciblées.
Liste des segments
Un tableau paginé affichant chaque segment avec :
- Pastille de couleur : identifiant visuel
- Nom (traduisible)
- Description (traduisible)
- Nombre d'abonnés actifs
- Indicateurs : badges Public, Par défaut, Actif
- Position : ordre de tri
Créer & modifier
Le formulaire de segment comprend :
- Nom : traduisible, obligatoire dans la langue par défaut
- Description : traduisible, optionnelle
- Couleur : sélecteur de couleur hexadécimale (validée au format
#RRGGBB) - Public : indique que les visiteurs peuvent rejoindre le segment. La section d'accueil Newsletter intégrée n'affiche pas de choix de segments : elle ajoute ses abonnés aux segments sélectionnés dans ses propres réglages
- Par défaut : les nouveaux abonnés sont automatiquement ajoutés aux segments par défaut, quelle que soit leur sélection dans le formulaire
- Actif : les segments inactifs sont exclus du ciblage des campagnes et des formulaires front-end
- Position : entier pour l'ordre d'affichage
Admin : Campagnes
Les campagnes (Newsletter → Campagnes) sont les messages email ou SMS que vous envoyez aux abonnés.
Liste des campagnes
Un tableau paginé (20 par page) avec un filtre de statut optionnel affichant :
- Sujet
- Canal : badge Email ou SMS
- Badge de statut : Brouillon, Planifiée, En cours d'envoi, Envoyée ou Échouée
- Segments : noms des segments ciblés, ou “Tous les abonnés”
- Destinataires / Ouvertures / Clics : statistiques de livraison
- Auteur
- Date de création
Composer une campagne
Cliquez sur Nouvelle campagne pour ouvrir le formulaire de composition :
- Mode d'envoi : basculez entre Email et SMS
- Sujet : champ texte traduisible (obligatoire pour l'email dans la langue par défaut, optionnel pour le SMS)
- Contenu : éditeur de texte enrichi traduisible (obligatoire dans la langue par défaut). En mode SMS, le HTML est automatiquement supprimé lors de l'enregistrement.
- Segments ciblés : sélection multiple des segments actifs. Si aucun n'est sélectionné, la campagne est envoyée à tous les abonnés actifs.
- Planifié le : date et heure optionnelles auxquelles la campagne est envoyée automatiquement. Laissez vide pour garder la campagne en brouillon et l'envoyer vous-même.
newsletter:send-scheduled dans le
planificateur Laravel, qui l'exécute chaque minute pour envoyer les campagnes planifiées dont la date est atteinte.
La tâche cron du site doit donc être en place (voir Prérequis) ; sans elle, les campagnes
planifiées restent au statut scheduled. Vous pouvez aussi envoyer à tout moment une campagne en brouillon
ou planifiée avec Envoyer maintenant.
Une campagne enregistrée sans date est un brouillon (draft) ; avec une date, elle passe au statut
scheduled, et effacer la date la repasse en brouillon. Le nombre d'abonnés actifs est affiché
pour indiquer combien de destinataires recevront la campagne.
Modifier des campagnes
Seules les campagnes au statut draft ou scheduled peuvent être modifiées.
Une fois qu'une campagne passe au statut sending ou sent, elle devient en lecture seule
et s'affiche sous forme de vue détaillée avec les statistiques de livraison.
Envoyer une campagne
Lorsque vous cliquez sur Envoyer maintenant, ou lorsque le planificateur prend en charge une campagne planifiée dont la date est atteinte, le processus suivant se déroule :
- Le statut de la campagne passe à
sending. Ce changement est atomique : une campagne déjà en cours d'envoi (ou déjà envoyée) n'est jamais envoyée une seconde fois, même après un double clic ou des exécutions du planificateur qui se chevauchent. - Les abonnés ciblés sont déterminés selon les segments assignés (ou tous les abonnés actifs s'il n'y a pas de segments).
- Un enregistrement
newsletter_campaign_logsest créé pour chaque abonné (insertion par lots). - Chaque entrée de journal est traitée : l'abonné reçoit une notification Laravel
(email via
MailMessageou SMS via le canal Vonage/Twilio). - Les livraisons réussies sont marquées comme
sent; les échecs sont journalisés avec le message d'erreur. - Le statut de la campagne passe à
sentavec lerecipients_countfinal.
Mode campagne SMS
Lorsque le mode d'envoi est défini sur SMS :
- Le champ sujet devient optionnel (les messages SMS n'ont pas de ligne de sujet).
- Le contenu HTML est automatiquement supprimé de toutes les traductions lors de l'enregistrement de la campagne.
- Le contenu est tronqué à 1600 caractères (10 segments SMS) lors de l'envoi.
- La notification est acheminée via le canal Vonage ou Twilio, selon le pilote SMS choisi dans Panneau d'administration → Configuration → Paramètres → SMS. Sans pilote SMS sélectionné, les campagnes SMS ne sont pas délivrées.
- Seuls les abonnés disposant d'un numéro de téléphone reçoivent les campagnes SMS ; ceux qui n'en ont pas sont ignorés avec une erreur.
Front-end : Formulaire d'abonnement
Le formulaire d'abonnement prêt à l'emploi est la section d'accueil Newsletter : ajoutez-la dans Panneau d'administration → Configuration → Homepage, où vous pouvez définir ses textes par langue, demander le nom et/ou le téléphone, et choisir les segments que rejoignent ses abonnés. Le formulaire est soumis via AJAX et reçoit une réponse JSON ; un thème peut aussi envoyer son propre formulaire vers le même point d'accès.
/newsletter/subscribe
Corps de la requête
email |
Obligatoire (sans téléphone) | Adresse email valide, 255 caractères max. |
phone |
Obligatoire (sans email) | Numéro de téléphone pour les SMS, 20 caractères max. |
name |
Optionnel | Nom de l'abonné, 255 caractères max. |
segment_ids[] |
Optionnel | Tableau d'identifiants de segments (doivent exister dans newsletter_segments) |
consent |
Obligatoire lorsque l'add-on GDPR est actif | Doit être accepté |
Réponse (JSON)
200 |
{"success": true, "message": "…"} |
Inscription effectuée, ou email de confirmation envoyé (double opt-in) |
422 |
{"success": false, "message": "…", "errors": {…}} |
Échec de la validation ; errors liste les champs refusés |
429 |
{"success": false, "message": "Trop de tentatives d'inscription. Veuillez réessayer dans 60 secondes."} |
Limite de débit atteinte (voir ci-dessous) ; l'en-tête Retry-After indique l'attente en secondes |
Limitation du débit : chaque adresse IP peut effectuer jusqu'à 5 tentatives d'inscription par minute
(valeur rate_limit du fichier config/newsletter.php de l'add-on). Les tentatives suivantes sont
refusées jusqu'à la fin de la minute : les requêtes AJAX reçoivent la réponse 429 ci-dessus, et un envoi de
formulaire classique (sans AJAX) est redirigé vers la page précédente avec le même message d'erreur.
Front-end : Confirmation par email
Lorsque le double opt-in est activé, les abonnés reçoivent un email contenant un lien de confirmation.
/newsletter/confirm/{token}
Description
Confirme l’adresse email d’un abonné à l’aide de son jeton unique de 64 caractères.
En cas de succès, le statut de l’abonné passe à confirmed et ses
horodatages confirmed_at et subscribed_at sont renseignés.
Un email de bienvenue est envoyé s'il est configuré.
Affiche une page de confirmation thématisée (theme::newsletter.confirm si disponible,
sinon se replie sur newsletter::front.confirm).
Front-end : Désabonnement
/newsletter/unsubscribe/{token}
Description
Désabonne un abonné à l'aide de son jeton unique. Définit le statut de l’abonné
sur unsubscribed et enregistre l'horodatage unsubscribed_at.
Affiche une page de désabonnement thématisée (theme::newsletter.unsubscribe si disponible,
sinon se replie sur newsletter::front.unsubscribe).
Les liens de désabonnement sont inclus automatiquement dans les emails de campagne via le modèle d'email de campagne.
Flux d'abonnement
Avec le double opt-in activé (par défaut)
- Le visiteur soumet le formulaire d'abonnement avec son email (et éventuellement son nom, son téléphone et des segments).
- Un enregistrement d'abonné est créé avec
status = 'pending'. - Un email de confirmation est envoyé avec un lien contenant un jeton unique.
- Le visiteur clique sur le lien de confirmation.
- Le statut de l'abonné passe à
confirmed. - Un email de bienvenue est envoyé (si le sujet et le contenu sont configurés dans les paramètres).
- L'abonné est désormais éligible pour recevoir des campagnes.
Sans double opt-in
- Le visiteur soumet le formulaire d'abonnement.
- Un enregistrement d'abonné est créé immédiatement avec
status = 'confirmed'. - Un email de bienvenue est envoyé (s'il est configuré).
- L'abonné est immédiatement éligible pour recevoir des campagnes.
Réabonnement
Si un email précédemment désabonné soumet à nouveau le formulaire :
- L'enregistrement existant est retrouvé et son statut est réinitialisé à
pending. - Un nouveau jeton est généré et un email de confirmation est envoyé (si le double opt-in est activé).
- L'horodatage
unsubscribed_atest effacé.
Assignation des segments
Lorsqu'un abonné est créé ou réabonné :
- Tous les segments par défaut (segments avec
is_default = true) sont assignés automatiquement. - Tous les identifiants de segments soumis via le formulaire sont également assignés.
- Les deux sont fusionnés et appliqués via
syncWithoutDetaching, de sorte que les appartenances existantes sont préservées.
Email de confirmation
La notification SubscriptionConfirmationNotification envoie un email Markdown utilisant
le modèle newsletter::emails.subscription-confirmation.
- Sujet : “Confirmez votre abonnement à {site_name}” (traduisible)
- Expéditeur : utilise
newsletter.from_email/newsletter.from_name - Bouton d'action : pointe vers
/newsletter/confirm/{token}
Les échecs lors de l'envoi de l'email sont interceptés silencieusement : l'abonné est tout de même créé au statut en attente.
Email de bienvenue
La notification WelcomeNotification est envoyée après la confirmation d'un abonné, mais seulement si
l'administrateur a configuré à la fois un sujet et un contenu dans les paramètres de la newsletter.
- Sujet & contenu : lus depuis les paramètres en base de données, résolus selon la langue courante avec repli sur la langue de secours de l’application.
- Lien de désabonnement : inclus dans le modèle d'email.
- Expéditeur : utilise
newsletter.from_email/newsletter.from_name
Livraison des campagnes
La notification CampaignNotification gère la livraison par email et par SMS en utilisant le système
de notifications de Laravel.
Livraison par email
- Utilise un modèle Markdown :
newsletter::emails.campaign - Le sujet et le contenu sont traduisibles (résolus selon la langue de l'application)
- L'adresse de réponse est appliquée depuis
newsletter.reply_tosi elle est configurée - Le lien de désabonnement est inclus dans le pied de page de l'email
Livraison par SMS
- Acheminée via Vonage (
VonageMessage) ou Twilio (TwilioSmsMessage) selonsms_driver - Le contenu est débarrassé des balises HTML et tronqué à 1600 caractères
- Le mode Unicode est activé pour Vonage afin de prendre en charge les caractères internationaux
Mise à jour
Une mise à jour ne remplace que les fichiers de l'add-on. Ses tables et ses données, ses paramètres, son état d'activation et son code d'achat enregistré sont tous conservés : ne désactivez et ne supprimez pas l'add-on avant de le mettre à jour. Sauvegardez tout de même votre base de données au préalable.
Méthode 1 : Téléverser la nouvelle version (recommandé)
- Téléchargez le dernier fichier
.zipde l'add-on. - Allez dans Panneau d'administration → Extensions → Add-ons et cliquez sur Téléverser un add-on.
- Déposez le fichier
.zipdans la zone de téléversement. - Comme Newsletter Platform est déjà installé, une demande de confirmation affiche la version installée et la nouvelle. Cliquez sur Remplacer : le dossier
extensions/addons/newsletter/est remplacé par les nouveaux fichiers. Annuler la demande abandonne le téléversement.
Méthode 2 : Remplacer les fichiers à la main
- Par FTP ou SSH, supprimez le dossier
extensions/addons/newsletter/et envoyez le nouveau à sa place. Remplacez le dossier entier plutôt que de copier par-dessus, afin que les fichiers retirés par la nouvelle version ne subsistent pas. - Ouvrez Panneau d'administration → Extensions → Add-ons : la page relit
addon.jsonet la carte affiche le nouveau numéro de version.
Une fois les fichiers remplacés
Appliquer la mise à jour de la base de données. Certaines versions de cet add-on fournissent une routine de mise à jour (migrations et corrections de données). Lorsque la nouvelle version en contient une, un bandeau Mises à jour disponibles apparaît dans le panneau d'administration. Allez dans Panneau d'administration → Système → Mises à jour, trouvez Newsletter Platform dans Mises à jour des add-ons payants et cliquez sur Appliquer les mises à jour. Chaque version en attente est appliquée dans l'ordre et consignée dans l'historique des mises à jour. La routine n'est proposée que lorsque l'add-on est actif : si vous avez remplacé les fichiers d'un add-on désactivé, activez-le d'abord.
Si votre installation met en cache sa configuration ou ses routes (php artisan config:cache, route:cache), exécutez php artisan optimize:clear après la mise à jour.
Désinstallation
Éteindre un add-on sans rien perdre, c'est le désactiver : allez dans Panneau d'administration → Extensions → Add-ons, cliquez sur Désactiver sur la carte Newsletter Platform et confirmez.
- L'add-on n'est plus chargé : ses routes, ses vues, son entrée dans la barre latérale d'administration et ses pages publiques ne répondent plus.
- Ses tables de base de données et toutes les données qu'elles contiennent sont conservées, et ses fichiers restent dans
extensions/addons/newsletter/. Rien n'est supprimé. - Ses permissions et son code d'achat enregistré restent en base de données. Seule la suppression les efface.
- La désactivation est refusée tant qu'un autre add-on actif dépend de celui-ci : désactivez d'abord cet add-on.
Cliquez sur Activer sur la même carte pour le rallumer. Comme lors de la première activation, le code d'achat est redemandé et vérifié ; ensuite les migrations en attente sont exécutées, les assets republiés, et l'add-on reprend exactement là où il s'était arrêté.
Suppression
La suppression est définitive et détruit les données de l'add-on. Le bouton Supprimer n'apparaît que sur un add-on désactivé : la suppression se fait donc toujours en deux temps :
- Désactivez Newsletter Platform (voir Désinstallation).
- Cliquez sur Supprimer sur sa carte et confirmez la demande.
Le panneau d'administration, en une seule passe :
- exécute le hook de désinstallation de l'add-on, s'il en fournit un, tant que son code est encore sur le disque ;
- révoque les permissions déclarées dans son
addon.json; - annule ses migrations, ce qui supprime ses tables de base de données et toutes les lignes qu'elles contiennent, et purge ses entrées de la table
migrations, afin qu'une réinstallation ultérieure reparte de zéro ; - supprime ses assets publiés :
public/addons/newsletter/,public/vendor/newsletter/etstorage/app/public/addons/newsletter/; - supprime le dossier de l'add-on
extensions/addons/newsletter/; - supprime sa ligne dans la table
addons(le code d'achat enregistré disparaît avec elle) et vide le cache de l'application.
La suppression est refusée, avec un message explicatif et avant toute destruction, lorsque l'add-on est encore actif, lorsqu'un autre add-on actif en dépend, ou lorsque l'utilisateur du serveur web (PHP) ne peut pas supprimer extensions/addons/newsletter/. Dans ce dernier cas, donnez à cet utilisateur le droit d'écriture sur le dossier et sur son parent, puis réessayez.
Supprimer le dossier en FTP ou en SSH n'est pas équivalent : l'add-on est seulement éteint, et ses tables, ses entrées dans la table migrations et sa ligne addons restent en place. Utilisez plutôt Supprimer dans le panneau d'administration.
Dépannage
Les emails de confirmation ne sont pas envoyés
- Assurez-vous que les réglages e-mail du site sont corrects dans Panneau d'administration → Configuration → Paramètres → Courrier.
- Vérifiez que la Double confirmation est activée dans les paramètres de la newsletter.
- Vérifiez que le type de notification Confirmation d'inscription est activé dans Panneau d'administration → Configuration → Paramètres → Notifications, onglet Types de notifications.
- Consultez le fichier journal de Laravel (
storage/logs/laravel.log) pour les erreurs d'envoi d'email. - Les échecs d'email de confirmation sont interceptés silencieusement : l'abonné est tout de même créé au statut en attente, mais aucun email n'est envoyé.
L'email de bienvenue n'est pas envoyé
- Assurez-vous que le Sujet de l'email de bienvenue et le Contenu de l'email de bienvenue sont tous deux renseignés pour au moins une langue dans les paramètres de la newsletter.
- L'email de bienvenue nécessite un contenu dans la langue courante ou dans la langue de secours. Si aucune des deux n'a de contenu, il est ignoré.
- Vérifiez que le type de notification Email de bienvenue est activé dans les paramètres de notifications du cœur.
Les abonnés ne reçoivent pas les campagnes
- Vérifiez que le statut de l’abonné est
confirmed(les abonnés en attente et désabonnés sont exclus). - Si la campagne cible des segments précis, assurez-vous que l'abonné appartient à au moins l'un de ces segments.
- Vérifiez que le type de notification Email de campagne est activé dans les paramètres de notifications du cœur.
- Consultez la table
newsletter_campaign_logspour les messages d'erreur des livraisons échouées.
Les campagnes SMS échouent
- Choisissez et configurez Vonage ou Twilio comme pilote SMS dans Panneau d'administration → Configuration → Paramètres → SMS.
- Les abonnés doivent avoir un numéro de téléphone pour recevoir les campagnes SMS. Ceux qui n'en ont pas produiront une erreur “Subscriber has no phone number” dans les journaux de campagne.
L'import affiche tous les abonnés comme “ignorés”
- Assurez-vous que le fichier contient des adresses email valides dans une colonne
email. - En mode Création uniquement, les emails déjà présents en base sont ignorés par conception ; en mode Mise à jour uniquement, ce sont les emails absents de la base qui sont ignorés. Utilisez Création et mise à jour pour faire les deux.
- Vérifiez que le format choisi correspond au fichier (CSV, JSON, XML ou séparé par tabulations).
Une campagne planifiée n'est pas envoyée
- Vérifiez que la tâche cron du site exécute
php artisan schedule:runchaque minute ;php artisan schedule:listdoit affichernewsletter:send-scheduled. - Lancez
php artisan newsletter:send-scheduled --dry-runpour lister les campagnes planifiées arrivées à échéance, ou sans--dry-runpour les envoyer immédiatement. - Une campagne arrivée à échéance sans aucun abonné ciblé (aucun abonné confirmé dans ses segments) reste au statut
scheduledet est retentée chaque minute jusqu'à ce qu'elle ait des destinataires.
Campagne bloquée au statut “en cours d'envoi”
Si le processus d'envoi a été interrompu (par ex. délai d'expiration de la requête, plantage du serveur), la campagne peut rester
au statut sending. Pour récupérer :
- Consultez
newsletter_campaign_logspour la campagne afin de voir jusqu'où la livraison a progressé. - Mettez à jour manuellement le
statusde la campagne surfailedousentdans la base de données. - Pour les grandes listes, envisagez de mettre en place un envoi basé sur une file d'attente afin d'éviter les délais d'expiration.
Les abonnés ne sont pas assignés aux segments par défaut
- Assurez-vous que le segment a
is_default = trueetis_active = true. - Les segments par défaut ne sont assignés qu'au moment de l'abonnement. Les abonnés existants ne sont pas ajoutés rétroactivement lorsqu'un segment est marqué comme segment par défaut.
Les vues du thème ne remplacent pas les vues de l'add-on
Les pages front-end de confirmation et de désabonnement recherchent les surcharges du thème à :
theme::newsletter.confirmtheme::newsletter.unsubscribe
Créez-les sous la forme views/newsletter/confirm.blade.php et views/newsletter/unsubscribe.blade.php
dans le dossier de votre thème actif (extensions/themes/<thème>/) pour remplacer les modèles par défaut.
Newsletter Platform v1.0.4 : un add-on LaraClassifier / JobClass.
© BeDigit. Tous droits réservés.