Your app should never know what an email looks like.
Solen is the internal email platform: one SDK for every application, templates managed centrally, providers abstracted away, and every send logged where you can actually see it.
FREE TO START · NO CARD · ACTIVATE PRO WITH A COUPON
// the entire email integration
import { EmailClient } from "solen-sdk";
const mail = new EmailClient({ apiKey: process.env.SOLEN_API_KEY });
await mail.send({
template: "welcome-email",
to: "student@example.com",
variables: { name: "Priya", school: "Northside High" },
});Five apps, five SMTP configs, five copies of the same welcome email.
Every application used to carry its own email stack: provider credentials in another env file, Nodemailer wired up one more time, HTML templates pasted between repos and drifting apart, and - when something failed - log files on a server someone else owns.
Solen replaces all of it with a single platform. Applications send a template identifier, a recipient, and variables. Everything else - rendering, provider communication, error handling, history - happens centrally, where it can be managed, audited, and fixed once.
The platform owns the whole lifecycle.
- Templates
- Written once in the dashboard, previewed and test-sent per project, rendered with your variables. No HTML ever ships inside application code.
- Sender identities
- Each project sends as itself - SchoolOS <schoolos@…>, Wallet <wallet@…> - from one verified domain.
- Providers
- Resend today; SES, SendGrid, or raw SMTP tomorrow. Switching providers changes nothing in any client application.
- Access control
- Projects, members, and roles. Applications authenticate with scoped API keys you can rotate or revoke in one click.
- Logging
- Every request is logged - success or failure - with recipient, template, provider, and the exact error message.
- Analytics
- Volume, success rate, per-template and per-project usage. Know what your apps are sending without asking them.
The log is the product.
Every send is recorded whether it succeeds or fails - with the recipient, the template, the provider, and the exact error. When a customer says “I never got the email,” you answer from the dashboard, not from an SSH session into the application server.
Search it, filter it, paginate it. Per project, in real time.
| 14:02:11 | welcome-email | priya@northside.edu | SUCCESS |
| 14:01:56 | otp-code | j.osei@wallet.app | SUCCESS |
| 14:01:40 | transaction-alert | m.tanaka@example.com | SUCCESS |
| 14:00:19 | password-reset | who@nowhere | FAILED |
| 13:59:03 | grade-report | a.novak@northside.edu | SUCCESS |
Three lines of code. Three steps to send.
- 01Install the SDKAdd solen-sdk to your app. Zero dependencies, fully typed.
- 02Generate a keyActivate Pro, mint a scoped API key, drop it in your environment.
- 03Send a templateCall send() with a template id, a recipient, and variables. Done.
PRICING
Start free. Ship on Pro.
Build, template, and test for free. Activate Pro to unlock API keys and send from your applications — with a coupon, no card required.
TWO MONTHS FREE ON ANNUAL
Free
For building and testing.
- Full dashboard access
- Unlimited projects & members
- Unlimited templates & previews
- Complete logs & analytics
- Test sends from the dashboard
Pro
For sending in production.
Billed as $290 once a year
Get ProACTIVATE WITH A COUPON · NO CARD REQUIRED
- Everything in Free
- Generate & rotate API keys
- Send via the SDK and HTTP API
- Per-project sender identities
- Provider abstraction (Resend, SES…)
INSTALL · GENERATE A KEY · SEND