The official Mautic plugin for sending email through Elastic Email, over the REST API v4 or SMTP.
Installation • Configuration • Troubleshooting • Examples • Contributing
- Drop-in Mautic mailer. Registers a Symfony Mailer transport, so campaigns, segment emails, transactional emails and test emails all go through Elastic Email.
- HTTP API transport. Sends through the Elastic Email REST API v4 (
/emails/transactional) with your API key. - SMTP transport. Or send through
smtp.elasticemail.comwith SMTP credentials. - Full message support. HTML and plain-text bodies, CC and BCC, Reply-To, attachments and custom headers.
- Message tracking. The Elastic Email
MessageIDis stored on each sent message. - Built on the official SDK. Uses the Elastic Email PHP SDK to build API requests.
| Component | Version |
|---|---|
| Mautic | 5.1 or later, 6.x and 7.x |
| PHP | 8.1 or later (8.2 or later for Mautic 7) |
| Symfony Mailer / HTTP Client | 5.4, 6.x or 7.x (bundled with Mautic) |
elasticemail/elasticemail-php |
4.0.20 or later |
You'll also need an Elastic Email API key with permission to send email. You can create one in your API settings. For the SMTP transport, create SMTP credentials in the same settings area instead.
Important
Elastic Email only sends from verified domains. Before your first send, verify your sending domain and use an address on that domain as the sender.
Download ElasticEmailMailerBundle.zip from the latest release and extract it into your Mautic plugins directory. Where that is depends on how Mautic was installed:
| Installation | Plugins directory |
|---|---|
Composer (mautic/recommended-project) or the official Docker image, the default for Mautic 6 and 7 |
docroot/plugins/ |
| Downloaded Mautic zip (older installs) | plugins/ |
cd /path/to/mautic
curl -L -o /tmp/ElasticEmailMailerBundle.zip \
https://github.com/ElasticEmail/elasticemail-mautic-mailer/releases/latest/download/ElasticEmailMailerBundle.zip
# Composer or Docker install (Mautic 6 and 7)
unzip /tmp/ElasticEmailMailerBundle.zip -d docroot/plugins/
# Zip install: use plugins/ instead
# unzip /tmp/ElasticEmailMailerBundle.zip -d plugins/Important
The plugin directory must be named exactly ElasticEmailMailerBundle, for example docroot/plugins/ElasticEmailMailerBundle. If you use GitHub's "Source code" archive instead of the release zip, rename the extracted folder, or Mautic won't load the bundle.
From the Mautic root directory:
composer require elasticemail/elasticemail-phpphp bin/console cache:clear
php bin/console mautic:plugins:reloadOpen Settings → Plugins. ElasticEmail Mailer plugin for Mautic should be on the list.
Go to Settings → Configuration → Email Settings and fill in the Email DSN section.
| Field | Value |
|---|---|
| Scheme | elasticemail+api |
| Host | default |
| User | Your Elastic Email API key |
| Password | (leave empty) |
This is equivalent to the DSN:
elasticemail+api://YOUR_API_KEY@default
Click Send test email to check the settings. The From address must use a domain you've verified in your Elastic Email account.
Tip
Use a dedicated API key for Mautic with only the access it needs, so you can rotate or revoke it without affecting other apps.
| Field | Value |
|---|---|
| Scheme | elasticemail+smtp |
| Host | default |
| User | Your SMTP username |
| Password | Your SMTP password |
The transport connects to smtp.elasticemail.com on port 2525.
| Scheme | Transport |
|---|---|
elasticemail+api |
HTTP API (REST API v4) |
elasticemail |
Alias for elasticemail+api |
elasticemail+smtp |
SMTP (smtp.elasticemail.com:2525) |
- The plugin doesn't appear in Mautic. Check that the folder is
docroot/plugins/ElasticEmailMailerBundle(Composer or Docker installs) orplugins/ElasticEmailMailerBundle(zip installs), then runphp bin/console cache:clearandphp bin/console mautic:plugins:reloadagain. Class "ElasticEmail\Api\EmailsApi" not found. The SDK isn't installed. Runcomposer require elasticemail/elasticemail-phpin the Mautic root.The "elasticemail+api" scheme is not supported. The cache still holds the old container. Clear it and reload plugins.- Test email fails with code 401 or 403. The API key is wrong or doesn't have permission to send email.
- Sender address rejected. Verify the From domain in your Elastic Email account.
- Anything else: check the Mautic logs in
var/logs/.
Looking to send from your own PHP or Symfony code instead of Mautic? Runnable samples are in the Elastic Email examples repository:
- Up to 20 concurrent connections per account. The API doesn't return
429; a5xxunder load means slow down and retry with backoff - A request with no response for about 50 seconds fails with a gateway error (
5xx) - Up to 50 recipients per
POST /emails/transactionaland 1000 contacts or suppressions per upload (413above that). For more recipients, send one bulkPOST /emails
Releases follow Semantic Versioning. See Releases for the changelog and the plugin zip for each version.
Plugin details
| Composer package | elasticemail/elasticemail-mautic-mailer (type mautic-plugin) |
| Bundle | MauticPlugin\ElasticEmailMailerBundle\ElasticEmailMailerBundle |
| Install directory | docroot/plugins/ElasticEmailMailerBundle (Composer or Docker) or plugins/ElasticEmailMailerBundle (zip install) |
| Transport factory | Mailer/Factory/ElasticEmailTransportFactory.php |
| Transports | Mailer/Transport/ElasticEmailApiTransport.php, Mailer/Transport/ElasticEmailSmtpTransport.php |
Contributions are welcome! Please read CONTRIBUTING.md before opening a pull request.
This project follows the Contributor Covenant Code of Conduct.
Important
The fastest way to get help is the chat widget on elasticemail.com. Our support team can help with your account, sending, deliverability and API questions.
- 💬 Chat with support on elasticemail.com (preferred)
- 📚 API documentation
- 🧪 Examples repository
- 🐛 GitHub issues, for bugs in this plugin only
Released under the MIT License. Copyright © 2021–2026 Elastic Email.

