Newsletter tools are the wrong abstraction
Mailchimp, Loops and similar platforms are built around audiences, lists and campaigns. Product emails are triggered one-by-one by what users do inside your app.
Event-driven email infrastructure
Send onboarding, billing, account and lifecycle emails from product events — without hardcoding every template into your app or running a campaign calendar on the side.
The choice between a newsletter platform, a raw email API and a homegrown service rarely fits the actual shape of product email.
Mailchimp, Loops and similar platforms are built around audiences, lists and campaigns. Product emails are triggered one-by-one by what users do inside your app.
Postmark, Resend and SES deliver — but template management, rule routing, tenant branding and observability stay your problem.
A folder of MJML files, a few cron jobs and some if/else routing turns into a quiet maintenance load no one wants to own.
Charging by contact count makes no sense when the email is triggered by a Stripe webhook for a single user.
else.events takes events from your app, matches rules, renders MJML templates and ships through the provider you already use.
Your app posts events like user.signed_up, payment.failed or workspace.limit_reached. The rule engine decides which template fires.
Visual MJML editor, reusable blocks, version history and locale fallback. Copy changes ship without a deploy.
Postmark, SMTP, SES — else.events is the layer above. Delivery, deliverability and DNS stay where they already work.
Recipient data comes from the event payload. The delivery log stores only SHA-256 hashes. Your users stay in your database.
user.signed_up → welcome.email Welcome new users, explain trial value and activate teammates.
payment.failed → payment-retry.email Send dunning emails the moment your billing provider fires a webhook.
team.member_invited → team-invite.email Invite teammates, confirm role changes, notify on permission updates.
subscription.renewed → renewal-receipt.email Receipts, renewal reminders and plan-change confirmations from one event stream.
workspace.limit_reached → upgrade-nudge.email Notify users when they hit a soft cap or run out of seats — without writing it twice.
user.new_device → security-alert.email Password resets, new-device alerts and verification emails triggered by auth events.
Send your first product event today. Templates, rules and delivery logs included.