Templates still live in your code
Your app decides which Postmark template to call for which event. That routing logic ends up in your billing service, your auth service, your jobs.
Provider integration
Postmark handles deliverability. else.events adds event routing, template management, localization and rules on top. Keep the benefits of both.
Your app decides which Postmark template to call for which event. That routing logic ends up in your billing service, your auth service, your jobs.
A German and an English version of the same email means two Postmark templates to keep synchronized.
Postmark logs what it sent. It does not know which product event caused the send or which routing rule matched.
Updating a subject line or CTA means changing a template in code and pushing a release.
Enter your Postmark server token in else.events. All outgoing emails route through your Postmark account.
Your app fires domain events. else.events matches rules, renders the template and calls Postmark on your behalf.
Swap Postmark for SMTP or another provider later — your event code stays unchanged.
See the product event, the matched rule, the rendered template and the Postmark delivery status in one place.
// your app fires an event — else.events routes it through Postmark
await fetch('https://app.else.events/api/events', {
method: 'POST',
headers: {
Authorization: `Bearer ${ELSE_EVENTS_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
type: 'invoice.payment_failed',
user: { email: 'customer@example.com', name: 'Alex' },
data: { plan: 'Pro', amount: '29.00', currency: 'EUR',
update_payment_url: 'https://app.example.com/billing' },
}),
});
// else.events: matches rule → renders template → calls Postmark API No Postmark API calls in your application code. else.events handles the Postmark delivery — you just fire domain events.
Connect Postmark as your delivery provider and get event routing, template management and structured logs on top.