Every modern app needs two things from day one: user authentication and transactional messaging. A new user signs up? You need to verify their email. They forget their password? Send a reset link. They enable two-factor auth? Deliver an OTP. Every auth event triggers a notification.
Yet the standard approach is to wire together two completely separate services — an auth provider like Auth0 and a messaging provider like SendGrid — connected by fragile glue code in your backend.
The Glue Code Problem
Here's what "just use Auth0 + SendGrid" actually looks like in practice:
User registers via Auth0
Auth0 fires a webhook to your backend
Your backend catches the webhook
Your backend calls SendGrid's API to send a welcome email
You handle errors, retries, and logging for both services
That's five moving parts for a single user registration. Multiply that by every auth event — email verification, password reset, MFA enrollment, account deletion — and you're maintaining a significant chunk of integration code.
What Goes Wrong
This glue code is deceptively fragile:
Webhook failures silently break email delivery. A user registers but never gets their verification email.
Template drift — your auth provider's user data schema doesn't match your email provider's template variables.
Double billing — you're paying two vendors, each with their own pricing model, usage tiers, and overage rates.
Debugging across boundaries — when a user says "I never got the email," you're checking logs in two different dashboards.
The Unified Approach
What if auth events automatically triggered the right transactional message, through the same API, with the same dashboard, using the same templates?
That's the core idea behind Zyphr. When a user completes an auth action — registration, email verification, password reset, MFA enrollment — the platform sends the appropriate message through your configured provider. No webhooks. No glue code. No second API call.
// This is all you need. The verification email is sent automatically.
const user = await zyphr.auth.register({
email: 'jane@example.com',
password: 'securePassword123',
});
One Dashboard, Full Visibility
Instead of correlating events across Auth0's logs and SendGrid's delivery reports, you see the complete picture in one place:
Every auth event and every message in a single timeline. When something goes wrong, you know exactly where and why.
The Bottom Line
Auth and notifications aren't separate concerns — they're two sides of the same user lifecycle. Treating them as a unified system eliminates an entire category of bugs, reduces vendor costs, and gives you complete observability over your most critical user interactions.
Stop gluing. Start building.