← Back to docs

WordPress Plugin

Install the official Euromail plugin to route wp_mail() through the EuroMail API, with an SMTP fallback, delivery log, and webhook-driven status updates -- no code changes.

Overview

The official Euromail plugin routes every wp_mail() call -- password resets, WooCommerce order emails, contact-form notifications, anything a theme or plugin sends -- through the EuroMail API. It replaces the generic "point an SMTP plugin at EuroMail" setup described in Send Email via SMTP with a purpose-built plugin: an automatic SMTP fallback if the API is unreachable, a per-email delivery log with resend, a Site Health check, a Domains panel, and a webhook receiver that updates each log entry's status as delivery events arrive.

If you only need a one-off SMTP relay (e.g. a non-WordPress mail client, or you'd rather keep using WP Mail SMTP/FluentSMTP), the generic SMTP guide still works -- the plugin is the richer option, not the only one. Migrating a live store's existing mail? Use Migrate WordPress & WooCommerce email, which sequences plugin setup with domain verification and suppression import so no order email is lost during cutover.

Requirements

Install

The plugin is pending review on wordpress.org -- once listed, install it the normal way: Plugins → Add New, search for "Euromail", Install Now, then Activate.

Until then, install from the latest release zip on GitHub: github.com/kalle-works/euromail-wordpress/releases -- download it, then Plugins → Add New → Upload Plugin in wp-admin, or extract it into wp-content/plugins/.

Configure

Go to Euromail → Settings.

  1. API key -- paste your em_live_... key and click Verify key. You can also define EUROMAIL_API_KEY in wp-config.php instead of storing it in the database; the settings field is disabled and shows "Defined in wp-config.php" when that constant is set.
  2. Sending backend -- Euromail API (default) sends over HTTPS. SMTP sends over the SMTP relay instead (smtp.euromail.dev) -- useful if outbound HTTPS to api.euromail.dev is blocked but SMTP isn't. Either way delivery, tracking, and webhooks work identically; see Send Email via SMTP for what the SMTP path does under the hood.
  3. Fallback -- when enabled, a failed send on the primary backend is retried immediately on the other one (API ↔ SMTP) before being queued for retry. Turn this on if you want the plugin to route around a transient outage on one path automatically.
  4. SMTP settings -- only used when the backend is SMTP, or as the fallback target. Click Use Euromail SMTP relay to fill in smtp.euromail.dev, port 587, and STARTTLS, and copy your API key into the password field -- the same connection settings documented in Send Email via SMTP. Or point it at any other SMTP relay you already use.
  5. Force From address -- optionally override the From header on every outgoing email, regardless of what the theme or a plugin sets. The forced address must be on a domain you've verified (see Domain Verification) -- sends from an unverified domain are sandboxed.
  6. Transactional by default / Open/click tracking by default -- defaults applied to every send unless a specific call overrides them.
  7. Webhook secret -- the Settings page shows your site's webhook endpoint URL (https://yoursite.com/wp-json/euromail/v1/webhook). Create the webhook at dashboard.euromail.dev pointing at that URL; the secret is shown only once, at creation -- paste it into this field (or define EUROMAIL_WEBHOOK_SECRET in wp-config.php). Once connected, delivery, open, click, bounce, and complaint events update each log entry's status automatically -- see Webhooks for the event types and payload shape.
  8. Log retention -- how many days a log entry is kept before pruning (default 30).
  9. Store message body -- off by default, for privacy: the log then only records metadata (recipient, subject, status, timestamps), never the rendered HTML/text a send contained. Turning it on additionally keeps that body, at the cost of storing message content in your database -- and is what makes resending a failed email from the log possible, since there's otherwise nothing to resend.
  10. Delete data on uninstall -- removes the log table and settings when the plugin is deleted, not just deactivated.

Send a test email

Euromail → Send Test sends a one-off email to any address, in HTML or plain text, optionally forcing the API or SMTP backend regardless of the Settings default -- useful for confirming both paths work before relying on automatic fallback.

The delivery log

Euromail → Log lists every email the plugin has sent, with status, backend used, and timestamps. Opening an entry shows the full detail -- recipient, subject, backend, attempt count, the API's message ID, the idempotency key used (so a retried send can't double-deliver), any error, and the webhook event timeline once webhooks are connected. A failed send with a stored body (see the Store message body privacy note above) can be resent directly from its detail page -- without a stored body there's nothing to resend from, only the record that it failed.

Automatic retries

A send that fails with a retryable error (a 5xx from the API, a 429, or a transport failure) is queued and retried automatically on a per-minute cron schedule -- the plugin's own queue, not the PHP SDK's built-in retry loop (which the plugin disables, since a wp_mail() call can't block for minutes or hours waiting on it). The wait before each retry follows a fixed backoff -- 1 minute, then 15 minutes, then 2 hours, then 12 hours -- for up to 5 attempts total (the original send plus 4 retries), or the API's own Retry-After hint when it gives one. Every attempt, including retries, reuses the same idempotency key, so a delayed retry can't result in a duplicate email if an earlier attempt actually went through.

Domains panel

Euromail → Domains lists the domains verified on your account and their status, without leaving wp-admin. Sends from a domain that isn't verified yet are sandboxed and may not be delivered -- see Domain Verification to add and verify one.

Site Health

WordPress's built-in Tools → Site Health page runs an "Euromail can send email" check, confirming the API key is configured and the API is reachable -- so a broken configuration shows up as a Site Health warning rather than a silent mail failure.

What the plugin does not change

  • Template and API-only features aren't reached through wp_mail(). Scheduled sends, per-send tags, and template aliases are API features you'd use directly via the PHP SDK or REST API; the plugin's job is routing WordPress's own mail, not replacing custom integrations.
  • Attachments, Reply-To, and multiple recipients on a wp_mail() call are all passed through normally -- nothing about how plugins and themes call wp_mail() needs to change.

See also

Send your first email in about 90 seconds

The free tier includes 3,000 emails a month. All data stays in Finland | GDPR compliance without the paperwork.

Create free account See live delivery data