Email logic scattered across your services
sendgrid.send() calls end up in your auth controller, your billing service, your background jobs — with no central view.
Node.js integration
POST a domain event from your Node.js app. else.events matches rules, renders the right template and sends through your email provider. No email SDK to maintain.
sendgrid.send() calls end up in your auth controller, your billing service, your background jobs — with no central view.
Inlining HTML or Handlebars templates into your Node.js code means every copy change needs a deploy.
Supporting multiple locales or plan-specific emails turns a simple send() into nested conditionals.
Migrating from Nodemailer to Postmark to Resend means rewriting every email send call.
No SDK. A fetch call with a Bearer token. Works in Express, Fastify, NestJS, Next.js, serverless functions — anywhere.
Edit subject lines, CTAs and copy in the else.events dashboard without touching your Node.js app.
else.events reads event.data.plan or event.user.locale and picks the right template. Your app does not need to know the template name.
Switch from Nodemailer/SMTP to Postmark or back — update else.events config, not your application.
// Node.js — no email SDK required
// Works in Express, Fastify, NestJS, Next.js, serverless — any Node.js runtime
async function sendEvent(type: string, user: { email: string; name: string }, data: Record<string, unknown>) {
await fetch('https://app.else.events/api/events', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.ELSE_EVENTS_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ type, user, data }),
});
}
// Usage
await sendEvent('invoice.payment_failed', { email: 'customer@example.com', name: 'Alex' }, {
plan: 'Pro', amount: '29.00', currency: 'EUR',
update_payment_url: 'https://app.example.com/billing',
}); One helper function. Every product email in your Node.js app fires through the same endpoint. else.events routes, renders and delivers.
Fire domain events from your Node.js app. else.events handles routing, templates and delivery.