Mail Pilot
Mail Pilot remplace la fonction d’envoi par défaut de WordPress par le service d’e-mails transactionnels Brevo. Il route chaque message sortant via l’API HTTP de Brevo (avec un repli SMTP automatique), enregistre chaque envoi dans un journal cherchable et vérifie la livraison en temps réel via des webhooks. Résultat : des e-mails transactionnels fiables et une visibilité complète sur ce que votre site livre réellement.
Le plugin s’adresse aux propriétaires de sites et aux administrateurs qui doivent s’assurer que les réinitialisations de mot de passe, les confirmations de commande, les réponses de formulaire de contact, les notifications WooCommerce et les autres e-mails système atteignent bien la boîte de réception. Il n’ajoute pas de fonctions marketing ou de campagne : il se concentre sur la couche transactionnelle de WordPress.
Points forts
- Livraison via l’API Brevo. Tous les appels à
wp_mail()sont routés via l’API transactionnelle Brevo, ce qui améliore la délivrabilité par rapport à la fonction PHPmail()par défaut. - Repli SMTP automatique. Si l’appel API ne peut pas aboutir (par exemple à cause d’un incident réseau temporaire), le message est ré-essayé via Brevo SMTP afin qu’aucun e-mail ne soit perdu.
- Journal d’e-mails cherchable. Chaque message sortant est stocké avec destinataire, sujet, corps, en-têtes, statut et horodatage. Le journal peut être filtré par statut et cherché par destinataire ou sujet.
- Suivi des ouvertures et des clics. Lorsqu’il est activé, Brevo injecte un pixel de suivi et réécrit les liens pour que le plugin puisse enregistrer ouvertures et clics pour chaque message.
- Vérification de livraison via webhooks. Brevo renvoie les événements delivered, hard bounce, soft bounce, blocked, deferred et spam complaint, que Mail Pilot répercute dans l’entrée du journal.
- Nettoyage automatique. Une tâche cron WordPress planifiée supprime les anciennes lignes du journal selon une période de rétention configurable, pour que la base de données ne grossisse pas indéfiniment.
- Prévention des conflits. Mail Pilot détecte les autres plugins SMTP (en particulier WP Mail SMTP) et alerte lorsque les deux écraseraient
wp_mail(), ce qui évite les e-mails doublés ou perdus. - Renvoi et test. N’importe quel message journalisé peut être renvoyé depuis l’admin, et un outil intégré d’e-mail de test vérifie la configuration.
Prérequis
- WordPress 6.0 ou plus récent.
- PHP 7.4 ou plus récent (PHP 8.1+ recommandé).
- Un compte Brevo (le plan gratuit suffit pour les volumes transactionnels usuels).
- Une adresse e-mail expéditrice vérifiée ou un domaine d’envoi authentifié dans Brevo.
- Un accès HTTPS sortant du serveur WordPress vers
api.brevo.comsur le port 443, plus le port 587 pour le repli SMTP. - Le cron WordPress (
wp-cron) activé, ou une tâche cron système appelantwp-cron.php, pour que la tâche de nettoyage tourne à intervalle régulier.
Installation
- Téléchargez le dernier
mail-pilot.zipdepuis votre compte ou la page de téléchargement du plugin. - Dans l’administration WordPress, ouvrez Extensions → Ajouter → Téléverser une extension.
- Choisissez le fichier ZIP, cliquez sur Installer maintenant, puis sur Activer.
- Après activation, une nouvelle entrée apparaît sous Mail Pilot → Réglages. Le plugin ajoute aussi un menu de premier niveau Mail Pilot qui donne un accès direct aux écrans du journal et des statistiques.
À l’activation, Mail Pilot crée sa table personnalisée ({prefix}_mail_pilot_logs) utilisée pour stocker le journal des e-mails. Aucun e-mail n’est intercepté tant que la clé d’API n’est pas enregistrée et que l’intégration n’est pas activée.
Configuration
La configuration se découpe en trois zones : les identifiants Brevo, l’identité expéditrice et les options opérationnelles de journalisation, suivi et rétention. Tous les réglages se trouvent sous Mail Pilot → Réglages.
1. Créer un compte Brevo et une clé d’API
- Inscrivez-vous sur brevo.com si vous n’avez pas encore de compte. Le plan gratuit autorise un volume généreux d’e-mails transactionnels par jour, ce qui suffit pour la plupart des petits et moyens sites.
- Connectez-vous au tableau de bord Brevo.
- Ouvrez le menu utilisateur en haut à droite et choisissez SMTP & API.
- Sélectionnez l’onglet API Keys et cliquez sur Generate a new API key.
- Donnez à la clé un nom reconnaissable (par exemple
wordpress-mail-pilot) et copiez la valeur générée. Brevo n’affiche le secret qu’une seule fois ; stockez-le en lieu sûr.
2. Vérifier un expéditeur
Brevo refuse d’envoyer des messages depuis un expéditeur non vérifié. Avant d’enregistrer la configuration dans WordPress, assurez-vous que l’adresse e-mail expéditrice ou le domaine entier est vérifié dans Brevo :
- Pour une adresse unique, ouvrez Senders, Domains & Dedicated IPs → Senders dans Brevo, ajoutez l’adresse et confirmez-la via l’e-mail envoyé par Brevo.
- Pour un domaine, ouvrez Senders, Domains & Dedicated IPs → Domains et suivez l’assistant qui vous demande d’ajouter les enregistrements DNS SPF, DKIM et DMARC. L’authentification de domaine offre la meilleure délivrabilité et est fortement recommandée pour les sites en production.
3. Saisir les identifiants dans WordPress
- Ouvrez Mail Pilot → Réglages dans l’administration WordPress. La page est découpée en trois onglets — Général, Journalisation et Avancé — mais les identifiants et le testeur d’e-mail vivent tous sur l’onglet Général.
- (Optionnel) Dans la carte Licence en haut, collez votre clé
PILOT-XXXX-XXXX-XXXX-XXXXet cliquez sur Vérifier & enregistrer pour activer les mises à jour automatiques du plugin via le flux des releases GitHub. - Dans la carte Connexion, laissez Fournisseur d’e-mail sur
Brevo(le seul fournisseur fourni à ce jour). - Dans la carte Réglages Brevo, collez la clé d’API dans le champ API Key et cliquez sur Tester la connexion pour valider les identifiants face à l’API Brevo.
- Dans la carte Expéditeur, renseignez :
- From Email avec l’adresse vérifiée à l’étape précédente, et cochez Forcer From Email pour écraser tout expéditeur par e-mail défini par d’autres plugins.
- From Name avec le libellé qui doit apparaître comme auteur des messages sortants, et cochez Forcer From Name pour qu’il prime aussi sur les surcharges par e-mail.
- Cliquez sur Enregistrer les réglages.
Si vous voulez envoyer un e-mail de vérification rapide, la carte E-mail de test en bas de l’onglet Général expose un champ Envoyer à et un bouton Envoyer le test.

4. Envoyer un e-mail de test
Sous la section des identifiants, le formulaire Envoyer un e-mail de test vous permet de vérifier la configuration de bout en bout :
- Saisissez l’adresse de destination (votre propre boîte est un bon choix).
- Cliquez sur Envoyer un e-mail de test.
- Le plugin affiche immédiatement un message de succès ou d’erreur, et le message apparaît dans le journal sous quelques secondes.
Si le message de test atteint la boîte de réception, l’intégration API fonctionne. S’il n’arrive pas dans les deux minutes, ouvrez l’entrée du journal et regardez les détails de la réponse renvoyée par Brevo, puis consultez la section Dépannage ci-dessous.
5. Configurer le webhook de livraison
Les événements d’ouverture, de clic et de livraison sont remontés à WordPress par Brevo via un webhook. Sa configuration est optionnelle mais recommandée, sinon le journal n’indiquera que l’acceptation par Brevo, pas la livraison effective, le bounce ou l’ouverture.
- Dans Mail Pilot, copiez l’URL de Webhook affichée sur la page des réglages. Elle pointe vers l’endpoint REST
https://<votre-site>/wp-json/mail-pilot/v1/webhook. - Dans le tableau de bord Brevo, ouvrez Transactional → Settings → Webhook et cliquez sur Add a new webhook.
- Collez l’URL dans le champ URL to call.
- Sélectionnez les événements à remonter. L’ensemble recommandé est :
- Sent
- Delivered
- Hard bounce
- Soft bounce
- Blocked
- Spam (complaint)
- Opened (seulement si le suivi des ouvertures est activé)
- Clicked (seulement si le suivi des clics est activé)
- Enregistrez le webhook.
Brevo commencera à pousser les changements de statut vers WordPress immédiatement. La colonne de statut du journal se rafraîchit à mesure que les événements arrivent.
6. Suivi, rétention et nettoyage
Les onglets Journalisation et Avancé de la page des réglages exposent les options opérationnelles :
- Activer le suivi des ouvertures. Lorsqu’il est activé, Brevo intègre un pixel de suivi 1x1 dans le corps HTML. Le pixel est chargé par le client de messagerie du destinataire, ce qui compte comme une ouverture.
- Activer le suivi des clics. Lorsqu’il est activé, les liens des e-mails HTML sont réécrits pour pointer vers un redirecteur Brevo qui enregistre le clic puis renvoie l’utilisateur vers l’URL d’origine.
- Rétention du journal (jours). Nombre de jours après lesquels les entrées du journal sont supprimées par la tâche de nettoyage. Valeur par défaut : 30 jours. Mettez
0pour conserver les entrées indéfiniment (déconseillé sur les sites à fort trafic). - Fréquence du nettoyage. Fréquence de l’événement cron WordPress qui purge le journal. Quotidienne par défaut.
- Journaliser le corps du message. Lorsque ce réglage est désactivé, seules les métadonnées (destinataire, sujet, statut) sont stockées, ce qui réduit la taille de la base et évite de stocker le corps d’e-mails sensibles comme les réinitialisations de mot de passe.
Cliquez sur Enregistrer les modifications pour appliquer.
Utilisation
Une fois l’intégration activée, Mail Pilot fonctionne de manière transparente. Chaque appel à wp_mail() émis par le cœur WordPress, par les thèmes ou par les plugins est intercepté et redirigé via Brevo. Aucune modification de code n’est nécessaire dans WooCommerce, Contact Form 7, WPForms, BuddyPress ni dans aucun autre plugin qui utilise l’API d’envoi standard de WordPress.
Le tableau de bord
Le menu de premier niveau Mail Pilot ouvre un tableau de bord qui synthétise l’activité e-mail pour la période sélectionnée. Un sélecteur de plage en haut bascule entre 7 jours, 14 jours et 30 jours, et six cartes KPI en haut de page rapportent Total envoyés, Livrés (avec le taux de livraison %), Échoués (avec le taux d’échec %), Bounces, Ouvertures (avec le taux d’ouverture %) et Clics. Les chiffres se mettent à jour à mesure que les événements webhook arrivent.

Sous les KPI, le tableau de bord rend cinq graphiques en direct alimentés par le journal du plugin :
- Volume d’e-mails — aire empilée quotidienne des messages livrés, bloqués et bouncés.
- Statut de livraison — diagramme en donut des trois mêmes catégories pour la période sélectionnée.
- Ouvertures & clics — courbe quotidienne des ouvertures et clics uniques.
- Sources principales — barres horizontales des plugins/thèmes qui génèrent le plus d’e-mails, dérivé du site d’appel enregistré à chaque envoi.
- Heures d’envoi — histogramme horaire indiquant quand les e-mails quittent le site face au moment où Brevo les dispatche, utile pour repérer les bourrasques de cron.
Une carte Compte Brevo en bas reprend le statut en direct de votre compte Brevo : l’e-mail du compte connecté, le solde de crédits courant et les compteurs Requests, Delivered, Opens, Clicks, Hard bounces, Soft bounces, Blocked et Spam reports sur tous les canaux d’envoi (API, relais SMTP et logiciels externes).
Le journal d’e-mails

L’écran Journal d’e-mails (Mail Pilot → Journal d’e-mails) liste chaque message traité par le plugin, du plus récent au plus ancien, avec un menu déroulant d’actions groupées, un filtre par statut, un champ de recherche libre et une action Voir par ligne. Chaque ligne affiche :
- L’adresse du destinataire (ou la première adresse si plusieurs sont présentes).
- Le sujet.
- Le statut courant :
queued,sent,delivered,opened,clicked,soft-bounce,hard-bounce,blocked,spamouerror. - L’horodatage du dernier changement de statut.
- L’identifiant de message Brevo (utilisé pour corréler l’entrée avec les logs Brevo).
Utilisez le champ de recherche au-dessus du tableau pour filtrer par destinataire ou sujet, ou le menu de statut pour n’afficher que les messages en échec. Cliquer sur une ligne ouvre la vue détaillée, qui expose :
- Les en-têtes et le corps complets du message (si la journalisation du corps est activée).
- La liste des destinataires (To, Cc, Bcc).
- Chaque événement suivi avec son horodatage.
- La réponse Brevo brute, utile pour les demandes de support.
Depuis la vue détaillée, vous pouvez cliquer sur Renvoyer pour ré-essayer le message tel quel, ou sur Copier pour vous en servir comme point de départ d’un nouveau message de test.
Widget du tableau de bord WordPress
Mail Pilot enregistre un widget sur l’écran Tableau de bord standard (la page que WordPress ouvre à la connexion). Le widget reproduit en miniature le tableau de bord propre du plugin, pour repérer d’un coup d’œil les anomalies de livraison sans passer par le menu Mail Pilot.

Le widget expose un sélecteur de plage 7 / 14 / 30 derniers jours, une courbe Volume d’e-mails (Livrés / Échoués / Bouncés) et un footer Brevo avec le solde de crédits courant et les compteurs Requests, Delivered, Failed, Bounced, Opens et Clicks. Un lien Voir le journal complet dans l’en-tête ouvre la page Journal d’e-mails.
Le widget est en opt-in : activez-le ou désactivez-le sous Mail Pilot → Réglages → Avancé → Widget du tableau de bord.
Cohabiter avec les autres plugins
Mail Pilot remplace l’implémentation par défaut de wp_mail() par sa propre extension de PHPMailer. Par conséquent, il est incompatible avec tout autre plugin qui fait de même, dont WP Mail SMTP, Easy WP SMTP, Post SMTP, FluentSMTP et autres outils similaires. Le plugin détecte les plus courants et affiche une notice d’admin vous demandant de choisir un seul mailer. La voie recommandée est de désactiver l’autre plugin SMTP et, si besoin, d’importer ses identifiants dans Mail Pilot.
WooCommerce, BuddyPress, WPForms, Contact Form 7, Easy Digital Downloads et les notifications du cœur WordPress continuent de fonctionner sans aucune modification : ils passent tous par wp_mail() et sont donc capturés automatiquement par Mail Pilot.
FAQ
Mail Pilot remplace-t-il uniquement les e-mails transactionnels, ou aussi les campagnes marketing ?
Il ne gère que les e-mails transactionnels, c’est-à-dire tout ce qui est envoyé via la fonction wp_mail() de WordPress. Les campagnes marketing créées dans le tableau de bord Brevo y sont gérées et n’apparaissent pas dans le journal Mail Pilot.
Dois-je payer pour Brevo ? Non. Le plan gratuit de Brevo inclut à ce jour un quota quotidien d’e-mails transactionnels qui couvre la plupart des petits et moyens sites. Si votre volume grandit, vous pouvez passer à un plan payant depuis le tableau de bord Brevo sans réinstaller le plugin.
Puis-je continuer à utiliser WP Mail SMTP et Mail Pilot en même temps ?
Non. Un seul plugin peut écraser wp_mail() ; faire tourner les deux en même temps entraîne des envois doublés, des messages perdus ou des erreurs PHP. Désactivez l’autre plugin SMTP avant d’activer Mail Pilot.
Les corps de message sont-ils stockés en base ? Uniquement si Journaliser le corps du message est activé dans les réglages. Lorsque l’option est désactivée, le journal conserve le destinataire, le sujet, les en-têtes et le statut mais pas le corps, ce qui est préférable lorsque les sites envoient des réinitialisations de mot de passe ou d’autres contenus sensibles.
Le suivi des ouvertures fonctionne-t-il avec tous les clients de messagerie ? Le suivi des ouvertures dépend du chargement des images distantes par le client du destinataire. De nombreux clients d’entreprise et Apple Mail Privacy Protection bloquent ou pré-chargent le pixel ; les taux d’ouverture doivent donc être interprétés comme une borne basse (ou haute), pas comme un chiffre exact.
Le plugin prend-il en charge plusieurs adresses expéditrices ?
L’expéditeur par défaut est configuré globalement. Les plugins ou portions de code qui passent un en-tête From: explicite à wp_mail() utiliseront cette adresse à condition qu’elle soit vérifiée dans Brevo. Les adresses non vérifiées sont rejetées par l’API.
Puis-je exporter le journal ? Oui. L’écran du journal dispose d’un bouton Exporter en CSV qui exporte la vue actuellement filtrée. L’export contient destinataire, sujet, statut, horodatages et identifiant de message Brevo.
Où sont stockées les données ?
Les journaux sont stockés dans une table personnalisée nommée {prefix}_mail_pilot_logs dans la base WordPress. Les réglages vivent dans la table d’options standard de WordPress. Rien n’est envoyé à des tiers à part Brevo lui-même.
Mail Pilot est-il compatible multisite ? Oui. Chaque site d’un réseau multisite conserve ses propres réglages et sa propre table de journal, et utilise sa propre clé d’API Brevo. Le plugin peut aussi être activé à l’échelle du réseau.
Dépannage
La page des réglages affiche « API key rejected ». Recopiez la clé depuis Brevo en veillant à l’absence d’espaces avant ou après. Confirmez que la clé n’a pas été révoquée ou restreinte dans le tableau de bord Brevo. Les clés créées pour l’API v2 peuvent ne pas fonctionner ; générez une clé v3 depuis l’onglet API Keys.
Les e-mails de test sont signalés comme envoyés mais n’arrivent jamais. Ouvrez l’entrée du journal pour le message de test et regardez les sections Statut et Réponse Brevo. Les cas les plus fréquents sont :
- Le destinataire est sur la liste de suppression de Brevo (bounce ou désinscription antérieurs). Retirez l’adresse depuis Contacts → Suppressed contacts dans Brevo.
- L’expéditeur ou le domaine d’envoi n’est pas vérifié : Brevo accepte la requête mais bloque le message.
- Le fournisseur de messagerie du destinataire a marqué le message comme spam. Vérifiez le dossier spam et passez en revue SPF, DKIM et DMARC pour le domaine d’envoi.
Les événements webhook n’atteignent jamais le journal.
Vérifiez que l’URL de webhook enregistrée dans Brevo correspond à celle affichée sur la page des réglages de Mail Pilot, protocole compris (https) et sous-répertoire éventuel de votre installation. WordPress doit être joignable depuis l’internet public ; les webhooks ne peuvent pas être livrés à un site derrière un VPN ni à localhost. Si vous utilisez un plugin de sécurité ou un WAF, assurez-vous que les requêtes vers /wp-json/mail-pilot/v1/webhook ne sont pas bloquées.
Les anciennes entrées du journal ne sont pas supprimées.
Le nettoyage est déclenché par le cron WordPress. Si votre site a très peu de trafic, le cron peut ne pas se déclencher assez souvent ; configurez une tâche cron système qui appelle wp-cron.php une fois par heure. Vous pouvez aussi déclencher un nettoyage manuel via le bouton Lancer le nettoyage maintenant en bas de la page des réglages.
Les e-mails d’un plugin précis ne passent pas par Brevo.
Vérifiez si le plugin en question envoie ses e-mails via sa propre implémentation SMTP plutôt que par wp_mail(). Les plugins qui contournent wp_mail() ne peuvent pas être interceptés ; consultez leur documentation pour les pointer vers les mêmes identifiants Brevo, ou désactivez leur mailer personnalisé.
Passer à Mail Pilot a fait apparaître une adresse expéditrice différente.
L’adresse expéditrice configurée dans Mail Pilot écrase celle qu’utiliserait sinon WordPress. Pour conserver une adresse « From » par plugin, assurez-vous que ce plugin pose un en-tête From: explicite lors de son appel à wp_mail() ; sinon mettez à jour l’expéditeur global dans Mail Pilot → Réglages avec la valeur souhaitée.