Disclosure: I build Notavia.
The hard part of email in multi-tenant SaaS was never calling SES or SendGrid. It was everything around that.
Customer A wants mail from their domain, not yours. Then you need SPF/DKIM/DMARC, DNS verification, tenant/domain mapping, suppressions, retries, branding, logs. Then later someone asks for in-app, SMS, Slack, etc.
I got tired of rebuilding that layer, so I built Notavia.
What it does:
- Per-tenant sending domains
- SPF/DKIM/DMARC setup and verification
- Per-tenant suppressions and branding
- Email, in-app, SMS and chat behind one API
- Idempotency, signed webhooks and delivery logs
- White-label / OEM
- .NET SDK and a real Blazor inbox component
Example:
csharp await notify.Notifications.SendAsync(new SendNotificationRequest( Channel: "email", Recipient: new Recipient("ada@example.com")) { TemplateKey = "welcome", TemplateData = new Dictionary<string, object?> { ["name"] = "Ada" } });
Current state:
- It’s new and mostly built by me
- Free is 1,000 emails/month with your own provider
- Managed sending, inbox, SMS and chat are on paid plans
- .NET, TypeScript, Python, Go and PHP SDKs are out
- Java and push are still coming
Blazor inbox: https://saas-infrastructure.com/blog/add-in-app-inbox-blazor
If you’ve done per-customer sending domains in production, I’d like to hear what caused you the most pain.
Source: r/dotnet · by /u/zac_builds