From sign-up to renewal.
Map the moments that matter: a welcome email after sign-up, an invitation when a teammate is added, a receipt after each payment and a notice before a card expires. Trigger each one from the event in your backend, so the email always matches what really happened.
Use templates with variables such as {{workspace_name}} and {{invite_url}} so every email feels like it came from the same product, and keep product announcements in Campaigns.
Secure by default.
Create a separate API key for each service, give it only the send permission and limit it to your product’s domain. Keys are stored as hashes, can expire automatically and can be revoked in one click.
Account emails often contain sign-in or reset links. Send them from a verified domain with DKIM so inboxes trust them, and track every recipient so support can answer “I didn’t get the email” straight away.
Plan for growth.
Count recipients, not requests: an invitation to five teammates is five emails. Add password resets, receipts and notifications to your sign-up numbers to estimate your monthly volume.
Start on Free with 3,000 emails a month. Pro covers 50,000 emails for $20 and Scale covers 250,000 for $80. Paid plans keep sending beyond the included volume at a fixed rate, so a busy month never stops your product emails.
SaaS emails to set up first
| Trigger | Useful variables | |
|---|---|---|
| Welcome | Account created | first_name, login_url |
| Team invitation | Teammate invited | inviter_name, workspace_name, invite_url |
| Password reset | Reset requested | reset_url, expires_in |
| Receipt | Payment succeeded | amount, invoice_url |
| Usage alert | Limit almost reached | usage, limit, upgrade_url |
Email for SaaS: common questions
- Which emails should a SaaS product send first?
- Start with the essentials: email confirmation, password reset, team invitation and payment receipt. Add usage alerts and product notifications once those are in place.
- Can customers send from their own domain?
- Yes. Pro includes 10 domains and Scale includes 100, so you can verify customer domains and restrict an API key to each one.
- Where should I store my API key?
- In your server’s environment variables or a secret manager. Never in frontend code, a mobile app or a public repository.
- How do I avoid sending the same email twice?
- Send an Idempotency-Key derived from the event, for example invite-12345. If your job retries, Mailumi returns the original result instead of sending again.