Skip to content

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
  • 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
  1. Install EP Email first.
  2. ep-email-brevo.zip comes with an EP Suite licence — ElmsPark supplies it directly (see EP Suite plugins); after install it updates through your site’s Updates screen.
  3. Upload via Plugins → Manage Plugins. Activate.
  4. Open Plugin Settings → EP Email Brevo.
  5. Paste your API v3 key, sender email, and sender name.
  6. In EP Email → SMTP, set the Transport dropdown to Brevo.

All outbound transactional mail now routes through Brevo.

If you’ve already set up Brevo for EP Newsletter Brevo, reuse the same credentials.

  1. Sign up at brevo.com. No card required.
  2. Verify a sender email at Senders, Domains & Dedicated IPs → Senders. Brevo emails a confirmation link.
  3. 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.
  4. Paste the API key, sender email, and sender name into the plugin settings.
  5. Use Test Connection to verify.
  6. Set the EP Email transport to Brevo.
  • Each EP Email message is submitted to https://api.brevo.com/v3/smtp/email as 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.

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.

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.

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.

For a quick question, EP Support inside your admin is the fastest path. For anything bigger, open a ticket at help.elmspark.com.

  • 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.