Vestnik
vestnik
About
Vestnik — Transactional Email Notifications for MODX 3
======================================================
Vestnik turns your site's events into emails. When something happens
(registration, order, payment, publishing, a contact request) the right people
automatically receive an email based on a predefined template. Message texts,
recipients and rules are all configured in the manager — no code changes
required. For custom cases you can trigger events from a snippet or from your
own component's code.
Vestnik separates three things that are usually tangled together inside chunks
and plugins: the EVENT (what happened), the RULE (who to notify and with which
template) and the TEMPLATE (how the email looks). Every message follows one
predictable path: event → rule → recipients → template → queue → cron send → log.
Features
--------
- Configure everything in the manager (CMP): rules, templates, queue, log —
no programming needed.
- Templates use native MODX tag syntax: [[+username]], escaping
[[+fullname:htmlent]], conditions and branching via standard output filters.
- Flexible recipients: administrator (address from a system setting), the event
user itself, an explicit address (or several), or all active members of a
chosen MODX user group.
- Passing data is simple: any key from the array/JSON becomes a [[+key]]
placeholder in the subject and body.
- Three ways to fire an event:
* standard MODX system events (caught automatically by a plugin);
* a snippet: [[!vestnik_notify? &event=`...` &data=`...`]];
* from code: $modx->services->get('Vestnik')->trigger('order.paid', $data);
- Reliable delivery through a queue: cron-based sending, automatic retries on
SMTP failure, and a log with the result of every send.
- A "Test send" button to preview an email's markup at any address.
- Extension points for developers — custom system events
OnVestnikBeforeQueue, OnVestnikBeforeSend, OnVestnikAfterSend: cancel a send
conditionally, enrich template data, collect your own stats, or call an
external webhook — all without touching the component's code.
- The core is designed with other channels in mind (Telegram, SMS); the current
version ships with email.
Typical use cases
-----------------
- E-commerce: notify the customer about their order and alert managers (a user
group) about a new order.
- Registration: a welcome email to a new user.
- Contact forms: notify the administrator about a new request.
- Publishing: notify editors about new content.
- Any business event of your own component via a trigger() call.
Requirements
------------
- MODX Revolution 3
- A configured cron job (to send queued emails)
- Working mail delivery on the server (SMTP/mail)
At a glance
MODX 3 compatibility unknown. Based on our testing and community reports where available.
- Developer MisterWooster
- Latest release November 1, 2026 (6 days ago)
- First seen in SiteDash November 1, 2026 (6 days ago)
- License GPLv2
- MODX support 3.1 – 100.0
| Changelog | |||
|---|---|---|---|
| MODX.com |
3.1.5-pl |
November 1, 2026
6 days ago |
|
|
3.1.5-pl
============== - Queue: parallel runs can't send the same email twice; emails stuck after a crash return to the queue in 15 minutes - Queue: retries wait a growing delay (new setting vestnik_retry_delay); failed emails can be sent again from the log - OnVestnikBeforeSend: 'prevent' postpones an email without blocking the queue, new 'cancel' moves it to the log as cancelled - Templates: placeholders missing from the data render empty and filters like :default work on them; leftover tags are removed - Lost emails are always written to the MODX error log; invalid JSON in the snippet's &data no longer creates an email - Attachments: an empty vestnik_attachments_path now means core/components/vestnik/attachments/ instead of the site root; MODX configuration, PHP and hidden files can never be attached; the snippet no longer accepts attachments - Log: email bodies and old entries are removed automatically (new settings vestnik_log_body_days and vestnik_log_keep_days) - Debug mode without a test address no longer sends emails to real recipients - Queue: emails over a lowered attempt limit move to the log instead of staying in the queue forever - Group recipients: blocked users no longer get emails; recipient name falls back to the username - Full English translation of the Docs tab - Removed unused code and assets; installed sites are cleaned up on upgrade - Templates are rendered for each recipient; new placeholders [[+recipient_email]], [[+recipient_name]], [[+recipient_username]], [[+recipient_id]] - Removed the rule Source and template Language fields, which had no effect; their columns are dropped on upgrade - Plain text templates keep text like Name <a> instead of losing it - cron.php finds MODX by its own path, so a core outside the site root works - Manager shows server and network errors instead of failing silently - OnVestnikAfterSend gets a copy of the email, the result, the error and the log entry id 3.1.4-pl ============== - Security: MODX and Fenom tags inside event data are no longer executed, only tags written in the template itself - Security: email previews in the manager run in a sandboxed iframe, scripts from an email can't run - Security: vestnik_view, vestnik_save and vestnik_remove are now enforced; the policy is granted to the Administrator group, other manager groups need it assigned manually - Security: removed the unused Template/PreviewHtmx endpoint 3.1.3-pl ============== - Email assembly reworked to avoid spam filters (Yandex in particular): body is always UTF-8 and is no longer converted to HTML entities (MODX's modPHPMailer::send() did that when mail_inlinestyle_inline is on); CSS inlining is still applied - Body is wrapped into a complete HTML document with a declared charset; plain-text templates keep their line breaks - A plain-text alternative part is generated from the HTML (multipart/alternative) - Message-ID uses the sender's domain instead of localhost.localdomain when sent from cron (CLI); X-Mailer header removed - Vestnik uses its own modPHPMailer instance (SMTP/DKIM still come from mail_* system settings), so its headers never leak into other components' emails 3.1.2-pl ============== - Log grid: view button, context menu item and double-click open the log entry (recipient, sender, status, error, attachments, email body preview) - Log now stores sender, recipient name, email body and attachments (columns are added automatically on package upgrade) </a> |
|||
| MODX.com |
3.1.3-pl |
October 25, 2026
13 days ago |
|
|
3.1.3-pl
============== - Email assembly reworked to avoid spam filters (Yandex in particular): body is always UTF-8 and is no longer converted to HTML entities (MODX's modPHPMailer::send() did that when mail_inlinestyle_inline is on); CSS inlining is still applied - Body is wrapped into a complete HTML document with a declared charset; plain-text templates keep their line breaks - A plain-text alternative part is generated from the HTML (multipart/alternative) - Message-ID uses the sender's domain instead of localhost.localdomain when sent from cron (CLI); X-Mailer header removed - Vestnik uses its own modPHPMailer instance (SMTP/DKIM still come from mail_* system settings), so its headers never leak into other components' emails 3.1.2-pl ============== - Log grid: view button, context menu item and double-click open the log entry (recipient, sender, status, error, attachments, email body preview) - Log now stores sender, recipient name, email body and attachments (columns are added automatically on package upgrade) |
|||
| MODX.com |
3.1.2-pl |
October 4, 2026
1 month ago |
— |
| MODX.com |
3.1.1-pl |
July 31, 2026
3 months ago |
— |
| MODX.com |
3.1.0-pl |
July 31, 2026
3 months ago |
— |
| MODX.com |
3.0.1-pl |
July 12, 2026
3 months ago |
— |
| modstore.pro |
3.0.1-pl |
July 12, 2026
3 months ago |
— |
| MODX.com |
3.0.0-pl |
July 6, 2026
4 months ago |
— |
| modstore.pro |
3.0.0-pl |
July 6, 2026
4 months ago |
— |
|
No matching releases. |
|||