Transactional email built for SaaS products

Password resets, billing notifications, trial reminders, team invitations — managed outside your codebase and routed by rules, not by code.

Why a bare email API is not enough for SaaS

No template management

Raw email APIs give you sending infrastructure. They do not help you manage, version or preview your templates.

No routing logic

Sending the right email for the right plan, locale or tenant requires custom code on your side.

No delivery visibility

Without structured logs tied to your domain events, debugging "did the user get the email?" is painful.

Marketing tools are the wrong fit

Newsletter platforms are designed for contact lists and campaigns, not for event-driven product emails.

A workflow layer for every SaaS transactional email

else.events sits between your app and your email provider. You send domain events. else.events handles the rest.

One integration, every email type

Auth, billing, onboarding, notifications and lifecycle emails — all handled through the same event API.

Rules determine which template fires

Route by event type, plan tier, locale or any payload field. No custom middleware required.

Templates live outside your repo

Designers and product managers edit copy without a deployment. MJML-based, fully responsive.

Structured delivery logs

Every event, matched rule and sent email is logged. Query by user, event type or time range.

Every SaaS transactional email, covered

user.password_reset_requested

Password reset

Secure, single-use links with configurable expiry. Clear CTA, no marketing noise.

user.email_verification_requested

Email verification

Magic link or code-based verification on signup or email change.

invoice.payment_failed

Payment failed

Dunning emails with direct link to update payment method.

trial.ending_soon

Trial reminder

Personalised upgrade nudge before the trial window closes.

team.invited

Team invitation

Branded invite with role context and expiry info.

subscription.updated

Subscription lifecycle

Created, upgraded, downgraded, cancelled, renewed — all from one event stream.

Template variables available in every event

Variables are resolved from your event payload at render time. No contact database, no sync required.

  • {{ user.name }} Recipient display name from the event payload
  • {{ user.email }} Recipient email address
  • {{ app.name }} Your application name from brand variables
  • {{ action_url }} Deep-link to the relevant page (billing, dashboard, invite)
  • {{ plan.name }} Current plan tier, e.g. Free, Pro, Enterprise
  • {{ expires_at }} Expiry timestamp for links or trial windows

Frequently asked questions

Is else.events an email provider like Postmark or SendGrid?
No. else.events is a workflow layer. It does not deliver emails itself — it routes events to templates and sends through your configured provider (Postmark, SMTP, etc.).
Does it handle auth emails like password reset?
Yes. You fire a user.password_reset_requested event with the reset link in the payload. else.events matches the rule, renders your template and delivers.
Can I have different templates per plan?
Yes. Rules can match on any payload field, including plan. Free-plan users and Pro-plan users can receive different templates from the same event.
What about localization?
else.events supports per-template locales with a configurable fallback. Pass a locale in the event payload and the matching locale template is rendered.

Every SaaS transactional email from one workflow

Connect your first event in minutes. Templates, rules and delivery logs included.

  • Free during public beta
  • Works with Postmark and SMTP
  • No contact lists