Invoice paid
Your invoice of $100 has been paid.
A TypeScript notification library for Node.js. Write a notification once, then send it by email, SMS, push, Slack, websockets and to an in-app inbox.
await facteur
.notification(InvoicePaidNotification)
.to(jane)
.params({ amount: 100 })
.send()Invoice paid
Your invoice of $100 has been paid.
Invoice of $100 paid. Thanks, Jane!
Jane Cooper paid $100
Invoice of $100 paid
Just nowInstall only the providers you use. Bring your own when you need more.
Reach people where they already read: their inbox, their phone, your team channels.
Configure a channelIncludes
Store notifications, push them live, and render them with a typed API and React hooks.
Build an inboxIncludes
Native and web push for your apps, signed webhooks for everything else.
Write a custom channelIncludes
A notification is a class. Facteur carries it to every channel you configured.
The parts every notification system needs, ready on day one.
Users switch channels on or off globally, per category or per notification.
Scope a send with .tenant(id). Storage, preferences and the API follow it.
Arrays or async iterables, with chunk size, concurrency and per-recipient errors.
Exponential backoff with jitter, set globally, per channel or per send.
facteur.fake() records sends so tests assert what your code asked to deliver.
beforeSend, shouldSend and afterSend on the class, delivery events on the emitter.
Install the core, configure a channel, send a notification. About five minutes.