Mail Pilot
Mail Pilot vervangt de standaard mailfunctie van WordPress door de Brevo transactionele e-mail service. Het routeert elk uitgaand bericht via de Brevo HTTP API (met een automatische SMTP-fallback), legt elke verzending vast in een doorzoekbaar log en verifieert delivery in real time via webhooks. Het resultaat is betrouwbare transactionele e-mail en volledige zichtbaarheid over wat je site daadwerkelijk aflevert.
De plugin is ontworpen voor site-eigenaren en beheerders die zeker willen weten dat wachtwoord-resets, orderbevestigingen, contactformulier- antwoorden, WooCommerce-notificaties en andere systeemmail in de inbox aankomen. Het voegt geen marketing- of campagne-features toe: het focust op de transactionele laag van WordPress.
Voordelen
- Brevo API delivery. Alle
wp_mail()-calls worden door de transactionele Brevo-API gerouteerd, wat de deliverability verbetert ten opzichte van de standaard PHPmail()-functie. - Automatische SMTP-fallback. Kan de API-call niet voltooid worden (bijvoorbeeld door een tijdelijk netwerkprobleem), dan wordt het bericht via Brevo SMTP opnieuw geprobeerd zodat er geen mail verloren gaat.
- Doorzoekbaar email log. Elk uitgaand bericht wordt opgeslagen met recipient, subject, body, headers, status en timestamp. Het log kan gefilterd worden op status en doorzocht op recipient of subject.
- Open- en click-tracking. Indien ingeschakeld injecteert Brevo een tracking pixel en herschrijft het links, zodat de plugin opens en clicks per bericht kan vastleggen.
- Delivery-verificatie via webhooks. Brevo post terug welke berichten delivered, hard bounce, soft bounce, blocked, deferred of spam complaint events betreffen, die Mail Pilot in de log-entry weerspiegelt.
- Automatische cleanup. Een geplande WordPress-cron-taak verwijdert oude log-rijen volgens een configureerbare retentieperiode, zodat de database niet eindeloos groeit.
- Conflict-preventie. Mail Pilot detecteert andere SMTP-plugins (in
het bijzonder WP Mail SMTP) en waarschuwt wanneer beide
wp_mail()zouden overriden, zodat dubbele of verloren mail wordt voorkomen. - Resend en test. Elk gelogd bericht kan vanuit de admin-pagina opnieuw verstuurd worden, en een ingebouwde test-email tool verifieert de configuratie.
Vereisten
- WordPress 6.0 of later.
- PHP 7.4 of later (PHP 8.1+ aanbevolen).
- Een Brevo-account (het free plan volstaat voor typische transactionele volumes).
- Een geverifieerd sender-e-mailadres of authenticated sending domain in Brevo.
- Outbound HTTPS-toegang vanuit de WordPress-server naar
api.brevo.comop poort 443, plus poort 587 voor de SMTP-fallback. - WordPress cron (
wp-cron) ingeschakeld, of een system cron-taak diewp-cron.phpaanroept, zodat de cleanup job op schema draait.
Installatie
- Download de laatste
mail-pilot.zipvanuit je account of de plugin-download-pagina. - Open in de WordPress-admin Plugins → Nieuwe plugin → Plugin uploaden.
- Kies het ZIP-bestand, klik op Nu installeren, daarna op Plugin activeren.
- Na activatie verschijnt een nieuwe entry onder Mail Pilot → Settings. De plugin voegt ook een hoofdmenu Mail Pilot toe dat directe toegang geeft tot het log- en statistics-scherm.
Bij activatie maakt Mail Pilot zijn custom database-tabel aan
({prefix}_mail_pilot_logs) waarin het mail log wordt opgeslagen. Er
worden geen e-mails onderschept totdat de API key is opgeslagen en de
integratie is ingeschakeld.
Configuratie
De configuratie is verdeeld in drie gebieden: de Brevo credentials, de sender identity en de operationele opties voor logging, tracking en retentie. Alle instellingen staan onder Mail Pilot → Settings.
1. Maak een Brevo-account en API key aan
- Meld je aan op brevo.com als je nog geen account hebt. Het free plan staat een ruim volume transactionele e-mail per dag toe, wat voor de meeste kleine en middelgrote sites genoeg is.
- Log in op het Brevo-dashboard.
- Open het gebruikersmenu rechtsboven en kies SMTP & API.
- Selecteer de tab API Keys en klik op Generate a new API key.
- Geef de key een herkenbare naam (bijvoorbeeld
wordpress-mail-pilot) en kopieer de gegenereerde waarde. Brevo toont de secret slechts eenmaal; bewaar hem op een veilige plek.
2. Verifieer een sender
Brevo weigert berichten te versturen vanaf een niet-geverifieerde sender. Voordat je de configuratie in WordPress opslaat, zorg ervoor dat ofwel het sender-e-mailadres of het hele domein geverifieerd is in Brevo:
- Voor een enkel adres: open Senders, Domains & Dedicated IPs → Senders in Brevo, voeg het adres toe en bevestig het via de mail die Brevo stuurt.
- Voor een domein: open Senders, Domains & Dedicated IPs → Domains en doorloop de wizard die je vraagt om de SPF-, DKIM- en DMARC-DNS-records toe te voegen. Domain authentication geeft de beste deliverability en wordt sterk aanbevolen voor productie-sites.
3. Voer de credentials in WordPress in
- Open Mail Pilot → Settings in de WordPress-admin. De pagina is verdeeld over drie tabs — General, Logging en Advanced — maar de credentials en de test-mailer staan allemaal op de tab General.
- (Optioneel) Plak in de License-kaart bovenaan je
PILOT-XXXX-XXXX-XXXX-XXXXkey en druk op Verify & Save om automatische plugin-updates vanuit de GitHub release feed te activeren. - Laat in de Connection-kaart Mail Provider op
Brevostaan (de enige provider die momenteel wordt meegeleverd). - Plak in de Brevo Settings-kaart de API key in het veld API Key en druk op Test Connection om de credentials tegen de Brevo API te valideren.
- Stel in de Sender-kaart in:
- From Email op het geverifieerde adres uit de vorige stap, en vink Force From Email aan om elk per-email sender adres dat door andere plugins is ingesteld te overschrijven.
- From Name op het label dat als auteur van uitgaande berichten moet verschijnen, en vink Force From Name aan zodat het ook wint van per-email overrides.
- Klik op Save Settings.
Wil je snel een verificatie-email versturen, dan exposeert de Test Email-kaart onderaan de General-tab een veld Send To en een knop Send Test.

4. Stuur een test-email
Onder de credentials-sectie laat het formulier Send test email je de configuratie end-to-end verifiëren:
- Vul het bestemmings-adres in (je eigen inbox is een goede keuze).
- Klik op Send test email.
- De plugin toont meteen een success- of error-bericht, en het bericht verschijnt binnen enkele seconden in het log.
Komt de test-mail in de inbox aan, dan werkt de API-integratie. Als hij binnen een paar minuten niet binnenkomt, open dan de log-entry en controleer de response-details van Brevo, raadpleeg vervolgens de sectie Troubleshooting hieronder.
5. Configureer de delivery webhook
Open-, click- en delivery-events worden door Brevo via een webhook terug naar WordPress gepusht. Het opzetten is optioneel maar aanbevolen, want zonder webhook toont het log alleen dat het bericht door Brevo geaccepteerd werd, niet of het daadwerkelijk delivered is, bounced is of geopend.
- Kopieer in Mail Pilot de Webhook URL die op de settings-pagina
wordt getoond. Hij wijst naar het REST-endpoint
https://<jouw-site>/wp-json/mail-pilot/v1/webhook. - Open in het Brevo-dashboard Transactional → Settings → Webhook en klik op Add a new webhook.
- Plak de URL in het veld URL to call.
- Selecteer de events die gerapporteerd moeten worden. De aanbevolen
set is:
- Sent
- Delivered
- Hard bounce
- Soft bounce
- Blocked
- Spam (complaint)
- Opened (alleen als open tracking aan staat)
- Clicked (alleen als click tracking aan staat)
- Sla de webhook op.
Brevo begint onmiddellijk status-updates naar WordPress te posten. De log-tabel ververst de status-kolom zodra events binnenkomen.
6. Tracking, retentie en cleanup
De tabs Logging en Advanced van de Settings-pagina tonen de operationele opties:
- Enable open tracking. Indien aan, sluit Brevo een 1x1 tracking pixel in in de HTML-body. De pixel wordt door de mailclient van de ontvanger geladen, wat als een open telt.
- Enable click tracking. Indien aan, worden links in HTML-mails herschreven naar een Brevo-redirector die de click registreert en de gebruiker vervolgens doorstuurt naar de oorspronkelijke URL.
- Log retention (days). Aantal dagen waarna log-entries door de
cleanup-task worden verwijderd. De default is 30 dagen. Zet op
0om entries voor altijd te bewaren (niet aanbevolen op drukke sites). - Cleanup schedule. Frequentie van het WordPress-cron-event dat het log opschoont. De default is dagelijks.
- Log message body. Indien uit, wordt alleen metadata (recipient, subject, status) opgeslagen, wat de databasegrootte beperkt en voorkomt dat de body van gevoelige mails zoals wachtwoord-resets bewaard blijft.
Klik op Save Changes om toe te passen.
Gebruik
Zodra de integratie is ingeschakeld, werkt Mail Pilot transparant. Elke
call naar wp_mail() vanuit WordPress core, themes of plugins wordt
onderschept en omgeleid via Brevo. Er is geen codewijziging vereist
in WooCommerce, Contact Form 7, WPForms, BuddyPress of welke andere
plugin dan ook die de standaard WordPress-mail-API gebruikt.
Het dashboard
Het hoofdmenu Mail Pilot opent een dashboard dat de mail-activiteit voor de geselecteerde periode samenvat. Een range picker bovenaan schakelt tussen 7 dagen, 14 dagen en 30 dagen, en zes KPI-kaarten boven aan de pagina rapporteren Total sent, Delivered (met delivery rate %), Failed (met failure rate %), Bounced, Opens (met open rate %) en Clicks. De cijfers worden bijgewerkt zodra webhook-events binnenkomen.

Onder de KPI’s rendert het dashboard vijf live charts, gedreven door het eigen log van de plugin:
- Email Volume — daily stacked area van delivered, blocked en bounced berichten.
- Delivery Status — doughnut-breakdown van dezelfde drie buckets voor de geselecteerde periode.
- Opens & Clicks — daily line chart van unique opens en clicks.
- Top Sources — horizontale bar chart van de plugins/themes die de meeste mails genereren, afgeleid uit de call site die bij elke send wordt geregistreerd.
- Sending Hours — hourly histogram van wanneer mails de site verlaten versus wanneer Brevo ze dispatcht, handig om cron-storms te spotten.
Een Brevo Account-kaart onderaan haalt de live status van je Brevo-account binnen: het verbonden account-email, huidige credit balance, en tellers voor Requests, Delivered, Opens, Clicks, Hard bounces, Soft bounces, Blocked en Spam reports over alle sending channels (API, SMTP relay en externe software).
Het email log

Het scherm Email Log (Mail Pilot → Email Log) lijst elk bericht dat de plugin heeft verwerkt, meest recent eerst, met een dropdown voor bulk-actions, een status-filter, een free-text zoekbox en een per-rij View-actie. Elke rij toont:
- Het adres van de recipient (of het eerste adres als er meerdere zijn).
- De subject.
- De huidige status:
queued,sent,delivered,opened,clicked,soft-bounce,hard-bounce,blocked,spamoferror. - De timestamp van de laatste statuswijziging.
- De Brevo message ID (gebruikt om de entry te correleren met de eigen logs van Brevo).
Gebruik de zoekbox boven de tabel om op recipient of subject te filteren, of de status-dropdown om alleen falende berichten te tonen. Klikken op een rij opent de detail view, die toont:
- De volledige message headers en body (als body-logging aan staat).
- De lijst van recipients (To, Cc, Bcc).
- Elk getrackt event met zijn timestamp.
- De raw Brevo response, handig voor support requests.
Vanuit de detail view kun je op Resend klikken om het bericht ongewijzigd opnieuw te verzenden, of op Copy om het als startpunt voor een nieuw test-bericht te gebruiken.
WordPress dashboard widget
Mail Pilot registreert een widget op het standaard Dashboard-scherm (de pagina die WordPress bij het inloggen opent). De widget spiegelt het eigen dashboard van de plugin in één oogopslag, zodat je delivery- anomalieën kunt spotten zonder door te klikken naar het Mail Pilot-menu.

De widget toont een range picker Last 7 / 14 / 30 days, een Email Volume line chart (Delivered / Failed / Bounced), en een Brevo-footer met de huidige credit balance en tellers voor Requests, Delivered, Failed, Bounced, Opens en Clicks. Een link View Full Log in de header opent de Email Log-pagina.
De widget is opt-in: schakel hem in of uit onder Mail Pilot → Settings → Advanced → Dashboard Widget.
Samenwerken met andere plugins
Mail Pilot vervangt de standaard wp_mail()-implementatie door zijn
eigen PHPMailer-extensie. Als gevolg daarvan is hij niet compatibel
met andere plugins die hetzelfde doen, waaronder WP Mail SMTP, Easy WP
SMTP, Post SMTP, FluentSMTP en vergelijkbare tools. De plugin detecteert
de meest voorkomende daarvan en toont een admin-notice die je vraagt
één mailer te kiezen. De aanbevolen route is om de andere SMTP-plugin
te deactiveren en zijn credentials waar nodig in Mail Pilot te importeren.
WooCommerce, BuddyPress, WPForms, Contact Form 7, Easy Digital Downloads
en de WordPress core-notificaties blijven zonder wijzigingen werken: ze
gaan allemaal door wp_mail() heen en worden daardoor automatisch door
Mail Pilot opgepikt.
FAQ
Vervangt Mail Pilot alleen transactionele mails, of ook marketing-
campagnes?
Het verwerkt alleen transactionele e-mail, dat wil zeggen alles wat via
WordPress’ wp_mail()-functie verzonden wordt. Marketing-campagnes die
in het Brevo-dashboard worden aangemaakt, worden daar beheerd en zijn
niet zichtbaar in het Mail Pilot-log.
Moet ik voor Brevo betalen? Nee. Het Brevo free plan bevat momenteel een dagelijks quotum transactionele mails dat de meeste kleine en middelgrote sites dekt. Groeit je volume, dan kun je vanuit het Brevo-dashboard naar een betaald plan upgraden zonder de plugin opnieuw te installeren.
Kan ik WP Mail SMTP en Mail Pilot tegelijk blijven gebruiken?
Nee. Slechts één plugin kan wp_mail() overriden; twee tegelijk
draaien leidt tot dubbele verzendingen, verloren berichten of
PHP-errors. Deactiveer de andere SMTP-plugin voordat je Mail Pilot
inschakelt.
Worden message bodies in de database opgeslagen? Alleen als Log message body in de settings is ingeschakeld. Met de optie uit bewaart het log de recipient, subject, headers en status maar niet de body, wat de voorkeur heeft wanneer sites wachtwoord-resets of andere gevoelige content versturen.
Werkt open tracking met alle mailclients? Open tracking hangt af van of de recipient remote images in zijn mailclient laadt. Veel corporate clients en Apple Mail Privacy Protection blokkeren of pre-fetchen de pixel, dus open rates moeten geïnterpreteerd worden als een onder- (of boven-) grens, niet als een exact cijfer.
Ondersteunt de plugin meerdere sender-adressen?
De default sender is globaal geconfigureerd. Plugins of code die een
expliciete From:-header doorgeven aan wp_mail() zullen dat adres
gebruiken zolang het in Brevo geverifieerd is. Niet-geverifieerde
adressen worden door de API geweigerd.
Kan ik het log exporteren? Ja. Het log-scherm heeft een knop Export CSV die de momenteel gefilterde view exporteert. De export bevat recipient, subject, status, timestamps en Brevo message ID.
Waar wordt de data opgeslagen?
Logs worden opgeslagen in een custom tabel genaamd
{prefix}_mail_pilot_logs in de WordPress-database. Settings staan in
de standaard WordPress options-tabel. Er wordt niets naar derden
gestuurd buiten Brevo zelf.
Is Mail Pilot compatibel met multisite? Ja. Elke site in een multisite-netwerk houdt zijn eigen settings en log-tabel bij, en gebruikt zijn eigen Brevo API key. De plugin kan ook network-activated worden.
Troubleshooting
De settings-pagina toont “API key rejected”. Kopieer de key opnieuw vanuit Brevo en zorg dat er geen leading of trailing spaces zijn. Bevestig dat de key niet is ingetrokken of in het Brevo-dashboard van scope is beperkt. Keys aangemaakt voor de v2-API werken mogelijk niet; genereer een v3-key vanuit de tab API Keys.
Test-mails worden gerapporteerd als sent maar komen nooit aan. Open de log-entry voor het test-bericht en check de secties Status en Brevo response. De meest voorkomende gevallen zijn:
- De recipient staat op Brevo’s suppression-lijst (eerdere bounce of unsubscribe). Verwijder het adres uit Contacts → Suppressed contacts in Brevo.
- De sender of het sending domain is niet geverifieerd, dus Brevo accepteert het request maar blokkeert het bericht.
- De mail-provider van de recipient heeft het bericht als spam gemarkeerd. Check de spamfolder en review SPF, DKIM en DMARC voor het sending domain.
Webhook-events bereiken het log nooit.
Verifieer dat de webhook-URL die in Brevo is opgeslagen overeenkomt
met die op de Mail Pilot settings-pagina, inclusief het protocol
(https) en elke subdirectory van je install. WordPress moet
bereikbaar zijn vanaf het publieke internet; webhooks kunnen niet
afgeleverd worden bij een site achter een VPN of op localhost.
Gebruik je een security-plugin of een WAF, zorg dan dat requests naar
/wp-json/mail-pilot/v1/webhook niet geblokkeerd worden.
Oude log-entries worden niet verwijderd.
De cleanup wordt door WordPress cron getriggerd. Heeft je site heel
weinig traffic, dan vuurt de cron mogelijk niet vaak genoeg af;
configureer een system cron-taak die wp-cron.php één keer per uur
aanroept. Je kunt ook een handmatige cleanup triggeren met de knop
Run cleanup now onderaan de settings-pagina.
Mails van een specifieke plugin worden niet via Brevo gerouteerd.
Controleer of de betreffende plugin mail verstuurt via zijn eigen
SMTP-implementatie in plaats van via wp_mail(). Plugins die
wp_mail() omzeilen kunnen niet onderschept worden; raadpleeg hun
documentatie om ze op dezelfde Brevo-credentials te richten, of
schakel hun custom mailer uit.
Overschakelen naar Mail Pilot zorgde ervoor dat mails van een
ander adres komen.
Het sender-adres dat in Mail Pilot is geconfigureerd overschrijft
het adres dat WordPress anders zou gebruiken. Om een per-plugin
“From”-adres te behouden, zorg dan dat die plugin de From:-header
expliciet zet bij het aanroepen van wp_mail(); werk anders de
globale sender in Mail Pilot → Settings bij naar de gewenste
waarde.