No event-driven routing
Postmark sends what you tell it to send. Deciding which template to send based on plan, locale or tenant is your problem.
Not a replacement. A layer on top.
Postmark excels at reliable delivery. else.events adds event-driven routing, template management, rules and structured logs on top — and can use Postmark as its provider.
Postmark sends what you tell it to send. Deciding which template to send based on plan, locale or tenant is your problem.
Postmark has a basic template editor. But connecting the right template to the right event, plan and locale is manual work.
You cannot tell Postmark "if plan = Free AND locale = de, use this template". That logic has to live in your application.
Postmark activity logs show delivery status. They do not show you which domain event triggered the email or which rule matched.
Use else.events as the workflow layer in front of Postmark — or replace Postmark with any SMTP-compatible provider.
Fire domain events from your app. else.events routes to the right template via rules — Postmark delivers.
Create, version and preview templates in else.events. Postmark handles delivery; else.events handles the content.
Match by event type, plan, locale, tenant or any payload field. No conditional logic in your application.
Every event, matched rule and Postmark delivery status in one place with full domain context.
| Capability | Postmark alone | else.events alone | else.events + Postmark |
|---|---|---|---|
| Reliable transactional delivery | ✓ (best-in-class) | ✗ (no own infra) | ✓ (via Postmark) |
| Event-driven routing | ✗ | ✓ | ✓ |
| Rule-based template selection | ✗ | ✓ | ✓ |
| Template management UI | Basic | ✓ | ✓ |
| Locale support per template | Manual | ✓ | ✓ |
| Domain event logs | ✗ | ✓ | ✓ |
else.events and Postmark complement each other. else.events is not a Postmark replacement — it is the workflow layer in front of it.
Event routing, template management, rules and logs — on top of your existing delivery provider.