Notifications

The messages identity has to send

Verification codes, invitations, password resets and security alerts — templated per channel and per language, sent through your own providers, with delivery you can actually see

Notifications/Templates · production

Templates

Every message the platform sends, per channel and language.

4 templates · 2 languagesNew template
email-otp-verificationreset-password-emailgrants-invitewelcome-user

Subject
Verify your email

Hi {{name}},

 

Your code is {{code}}. It expires in 10 minutes.

 

— Acme

Templates

Templates

Every message the platform sends is a template you own, not a string we picked for you

One template, every language you ship in

Verify your email

Hi {{name}},

Your code is {{code}}. It expires in 10 minutes.

— Acme

{{code}} is your Acme code. Expires in 10 minutes.

Delivered · 0.4sSMS · +55 11 9•••• 4021

The same message, rendered per channel and per language — variables checked before anything goes out

Per channel

Email and SMS versions of the same message, edited side by side

Per language

A locale per template, with a fallback when one is missing

Variables

Typed placeholders, validated before a broken send goes out

Live preview

See the rendered message with real values before saving

Your providers

Your providers

Deliverability is a relationship with a provider. It stays yours

Providers

Delivery runs through your own accounts, per environment.

3 connected · 1 sandbox · 1 availableConnect provider
SendGridemailacme.com · 48,210 sentconnected
Twiliosms+1 415 · 12,088 sentconnected
Custom SMTPemailsmtp.acme.com · 8,940 sentconnected
Mailtrapemailsandbox inboxdevelopment
Vonagesmsavailable as failovernot configured

Bring your own SendGrid, Twilio or SMTP. Development points at a sandbox so a test never reaches a real phone

Bring your own SMTP

Your domain, your reputation, your provider account

SMS providers

Configured per environment, so tests never hit a real number

Per-environment routing

Development to a sandbox, production to the real thing

Failover

A second provider for when the first one has a bad afternoon

Delivery

Delivery

"Did they get the email?" should take one query, not a support thread

Stats

What went out, through which channel, and whether it landed.

Last 30 days

Summary

99.4% of messages delivered

Emails sent

57,071

SMS sent

12,088

Not sent

402

Recent events

Sent to [email protected]email-otp-verificationen12:04:11
Sent to +55 11 9•••• 4021email-otp-verificationpt-BR12:03:58
Sent to [email protected]grants-inviteen12:02:40
Not sent to [email protected]reset-password-email · missing template parametersen12:01:19
Not sent to +1 415 •••• 8830welcome-user · provider rejected the numberen11:58:02
Sent to [email protected]welcome-useren11:56:44

Stats

Volume and failure rate per channel and template.

69,159 messages · last 30 days
TemplateChannelSentFailed
email-otp-verificationemail48,2100.2%
reset-password-emailemail6,9040.4%
grants-inviteemail1,2550.1%
email-otp-verificationsms12,0881.8%
welcome-useremail7020.0%

Delivery rate, volume per channel, and the individual messages that failed with the reason why

Delivery logs

Every message with its status, provider response and timing

Rate limits

Per recipient and per template, so a retry loop cannot spend your quota

Stats

Volume and failure rate per channel and template over time

Retries

Backoff handled for you, with the attempts visible

Name the template, not the transport

Providers, templates and languages are configured per environment. Your code asks for a template and a locale; everything else is a setting.

notifications.ts
// Providers and templates are configured per environment,
// so the SDK only names the template it wants.
const { data, error } = await nulvless.comms.email.send({
  to: "[email protected]",
  template: "grants-invite",
  language: "pt-BR",
  params: { organization: "Acme Inc", role: "admin" },
});

One platform, from your first user

Focus on your product. We handle identity infrastructure

What you would have built

Six areas, every one of them a project of its own.

  • Authenticationpasswords, providers, MFA, sessions
  • AuthorizationRBAC, scopes, per-resource grants
  • OAuth serverOIDC discovery, JWKS, PKCE
  • Edge functionsDeno runtime, deploys, rollback
  • Notificationstemplates, providers, delivery logs
  • Observabilitymonitoring, audit trail, query
Roughly9 engineer-months · $135,000You start at$0