Templates buried in code
Changing a subject line requires a pull request, a review and a deploy.
Product emails, reimagined
Send one event from your app. Let else.events choose the right template, render the right message and send it through your email provider.
Every new product email means touching your codebase, redeploying and hoping nothing breaks.
Changing a subject line requires a pull request, a review and a deploy.
Email logic is scattered across services, background jobs and route handlers.
A typo fix in an email footer triggers a full release cycle.
Supporting German users or a Pro plan upgrade path doubles your conditional logic.
POST a domain event, else.events matches rules, renders the template and delivers through your provider.
Match by event type, plan, locale or any payload field. No if/else in your app.
Edit copy, swap logos, add locales — zero deploys required.
Use Postmark, SMTP or any compatible provider. Switch with one config change.
Every event, every matched rule, every sent email — queryable from the dashboard.
// example event
{
"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 this event, selects the correct template, renders the localised message and sends it through your configured provider.
invoice.payment_failed Trigger dunning flows without writing retry logic yourself.
trial.ending_soon Remind users before their trial expires with a personalised upgrade CTA.
team.invited Send branded invite emails with a single event from your invite handler.
subscription.cancelled Acknowledge cancellations and surface win-back offers automatically.
user.signed_up Welcome new users with onboarding steps tailored to their plan.
POST any domain event to /api/events. The JSON payload carries the recipient and whatever context your templates need.
Rules evaluate conditions over the payload — event type, plan, locale or any custom field. One event can trigger multiple rules.
The MJML template is rendered with brand variables and locale resolved at runtime. Your configured provider delivers the email.
Product and design teams edit copy without opening a pull request.
Postmark today, SMTP tomorrow. One config change, no code change.
Recipient data is hashed by default. No contact lists to sync or maintain.
Route by plan, locale, tenant or any payload field — no custom middleware.
Send your first event in under five minutes. No credit card required.