Skip to Content

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 PHP mail()-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.com op poort 443, plus poort 587 voor de SMTP-fallback.
  • WordPress cron (wp-cron) ingeschakeld, of een system cron-taak die wp-cron.php aanroept, zodat de cleanup job op schema draait.

Installatie

  1. Download de laatste mail-pilot.zip vanuit je account of de plugin-download-pagina.
  2. Open in de WordPress-admin Plugins → Nieuwe plugin → Plugin uploaden.
  3. Kies het ZIP-bestand, klik op Nu installeren, daarna op Plugin activeren.
  4. 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

  1. 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.
  2. Log in op het Brevo-dashboard.
  3. Open het gebruikersmenu rechtsboven en kies SMTP & API.
  4. Selecteer de tab API Keys en klik op Generate a new API key.
  5. 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

  1. 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.
  2. (Optioneel) Plak in de License-kaart bovenaan je PILOT-XXXX-XXXX-XXXX-XXXX key en druk op Verify & Save om automatische plugin-updates vanuit de GitHub release feed te activeren.
  3. Laat in de Connection-kaart Mail Provider op Brevo staan (de enige provider die momenteel wordt meegeleverd).
  4. 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.
  5. 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.
  6. 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.

Mail Pilot — Settings (General-tab)
Mail Pilot Settings — General-tab met de kaarten License, Connection, Brevo Settings, Sender en Test Email.

4. Stuur een test-email

Onder de credentials-sectie laat het formulier Send test email je de configuratie end-to-end verifiëren:

  1. Vul het bestemmings-adres in (je eigen inbox is een goede keuze).
  2. Klik op Send test email.
  3. 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.

  1. 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.
  2. Open in het Brevo-dashboard Transactional → Settings → Webhook en klik op Add a new webhook.
  3. Plak de URL in het veld URL to call.
  4. 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)
  5. 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 0 om 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.

Mail Pilot — Dashboard
Mail Pilot Dashboard — KPI-kaarten, charts Email Volume / Delivery Status / Opens & Clicks / Top Sources / Sending Hours en de Brevo Account-kaart met credit balance.

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

Mail Pilot — Email Log
Email Log — paginerende tabel van elk bericht dat de plugin verwerkt heeft, met bulk-actions, status- / search-filters en een per-rij View-actie.

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, spam of error.
  • 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.

Mail Pilot — WordPress dashboard widget
De Mail Pilot widget op het WordPress Dashboard — periode-selector, daily Delivered / Failed / Bounced line chart en de Brevo-footer met credit balance en live tellers.

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.

Last updated on