EP Email Brevo
EP Email Brevo is a transport driver for EP Email. When selected as the active transport, all transactional email from your site (contact form notifications, password resets, opt-in confirmations, system alerts) routes through Brevo’s transactional API instead of PHP mail() or generic SMTP.
Published by ElmsPark Studio.
Why route transactional email through Brevo
Section titled “Why route transactional email through Brevo”The default PHP mail() transport has serious deliverability problems on shared hosting: no DKIM signing, mismatched SPF, shared IP reputation with whoever else is on the server. Routing transactional sends through a known-good ESP fixes this. Brevo specifically gives you:
- 300 emails/day free tier with no credit card required, enough for most low-volume transactional traffic
- Domain-authenticated sending when you verify your domain (DKIM, SPF, DMARC) so receivers trust your mail
- Pairs cleanly with EP Newsletter Brevo so newsletter and transactional sends share one Brevo account, one API key, one verified sender
Requirements
Section titled “Requirements”- PageMotor 0.6 or later
- EP Email (required; this is a transport driver for EP Email)
- EP Suite base class (bundled)
- A Brevo account with a verified sender
Installation
Section titled “Installation”- Install EP Email first.
ep-email-brevo.zipcomes with an EP Suite licence — ElmsPark supplies it directly (see EP Suite plugins); after install it updates through your site’s Updates screen.- Upload via Plugins → Manage Plugins. Activate.
- Open Plugin Settings → EP Email Brevo.
- Paste your API v3 key, sender email, and sender name.
- In EP Email → SMTP, set the Transport dropdown to Brevo.
All outbound transactional mail now routes through Brevo.
Setting up Brevo
Section titled “Setting up Brevo”If you’ve already set up Brevo for EP Newsletter Brevo, reuse the same credentials.
- Sign up at brevo.com. No card required.
- Verify a sender email at Senders, Domains & Dedicated IPs → Senders. Brevo emails a confirmation link.
- Create an API v3 key at app.brevo.com/settings/keys/api. Copy the
xkeysib-...value when shown. Do not enable IP blocking unless your server has a static IP you’ve whitelisted. - Paste the API key, sender email, and sender name into the plugin settings.
- Use Test Connection to verify.
- Set the EP Email transport to Brevo.
Delivery behaviour
Section titled “Delivery behaviour”- Each EP Email message is submitted to
https://api.brevo.com/v3/smtp/emailas a JSON HTTP POST. - Brevo queues, signs (DKIM if your domain is verified), and delivers via its outbound mail servers.
- EP Email’s delivery log records every send.
- Brevo’s own log at Transactional → Logs records each send with delivery status.
Pairs with EP Newsletter Brevo
Section titled “Pairs with EP Newsletter Brevo”If you also run EP Newsletter Brevo, both plugins can share the same Brevo account, API key, and verified sender. Every email leaving your site, whether transactional or campaign, flows through one consistent authenticated sender. Recipient mail providers build reputation on the domain over time.
Troubleshooting
Section titled “Troubleshooting””Test connection fails with 401”
Section titled “”Test connection fails with 401””The API key is invalid, or IP blocking is enabled in Brevo and your server’s egress IP isn’t whitelisted. Disable IP blocking in Brevo or add your server’s static IP to Security → Authorized IPs.
”Mail not delivering despite a valid key”
Section titled “”Mail not delivering despite a valid key””Confirm your sender email shows as Verified in Brevo. Unverified senders are silently rejected.
”Transactional emails land in spam”
Section titled “”Transactional emails land in spam””Verify your full sending domain in Brevo (not just a single sender email). Add DKIM, SPF, and DMARC records to DNS as Brevo instructs. This usually resolves spam routing within a few hours.
”I want to switch back to SMTP or PHP mail()”
Section titled “”I want to switch back to SMTP or PHP mail()””In EP Email → SMTP, change the Transport setting to SMTP or PHP mail(). The change is instant; no data migration needed.
Feedback
Section titled “Feedback”For a quick question, EP Support inside your admin is the fastest path. For anything bigger, open a ticket at help.elmspark.com.
Changelog
Section titled “Changelog”- Fixes stored keys and passwords reading as empty after a PageMotor 0.11.3 or 0.11.4 update. After the core update, every secret this plugin had encrypted at rest came back blank, so anything that needed it failed with an authentication error until the value was typed in again. Nothing was deleted: the encrypted value was still in the settings row, but PageMotor 0.11.3 moved the site secret that opens it, and this plugin was still looking in the old place. It now finds the secret in both places, so an existing value opens again without re-entry, and a value that was re-entered in the meantime keeps working and is moved back under the site secret.
- If you updated PageMotor and then re-entered a key or password, there is nothing to do. If you updated and have not re-entered it, this release restores it on the next page load.
- Your Brevo API key is now stored encrypted. Until this release it sat in plain text in the plugin’s settings, where anyone holding an API or MCP connection to your site with permission to configure plugins could read it straight back out. Your site’s visitors were never able to see it.
- Existing sites convert themselves the next time the plugin loads, once. There is nothing to re-enter and no key to replace.
- Reading your settings over the API now returns a placeholder rather than the value, and writing that placeholder back leaves the stored secret untouched. Clearing it by submitting an empty value still works as before.
- On hosting without encryption support the previous behaviour is kept and the reason is written to the log, because quietly discarding a working key would be worse than the exposure this closes.