Stacks Notifications is a unified driver system for sending messages/notifications. It supports sending emails, SMS messages, and chat messages.
- 📦 Send Emails
- 🎨 Email Styling
- 📱 Send SMS messages
- 💬 Send Chat messages
- [ ] Driver: SNS (Push)
- [ ] Driver: Pushwoosh
bun install -d @stacksjs/notifications
Set these variables in your env:
NOTIFICATION_TYPE=email
NOTIFICATION_DRIVER=sendgrid
You may now use it in your project:
import { notification } from '@stacksjs/notifications'
notification.send(options)
There are different option types for Chat, Email, and SMS drivers. To use any driver, simply configure the notification options
object.
interface ChatOptions {
providerName?: 'discord' | 'slack'
webhookUrl: string
content: string
}
interface EmailOptions {
providerName?: 'sendgrid' | 'emailjs' | 'mailjet' | 'mandrill' | 'netcore' | 'nodemailer' | 'postmark' | 'ses'
to: string | string[]
subject: string
html: string
from?: string
text?: string
attachments?: AttachmentOptions[]
id?: string
}
interface SMSOptions {
providerName?: 'gupshup' | 'nexmo' | 'plivo' | 'sms77' | 'sns' | 'telnyx' | 'termii' | 'twilio'
to: string
content: string
from?: string
attachments?: AttachmentOptions[]
id?: string
}
Available drivers are listed below, with the proper variables needed to get started.
Email drivers are configured with the following environment variables:
SENDGRID_API_KEY=SG123
SENDGRID_FROM=from@example.com
SENDGRID_SENDER_NAME=Sender
MAILGUN_API_KEY=MG123
MAILGUN_DOMAIN=example.com
MAILGUN_USERNAME=username
MAILGUN_FROM=from@example.com
MAILJET_API_KEY=MJ123
MAILJET_API_SECRET=MJTESTSECRET
MAILJET_FROM_EMAIL=from@example.com
NETCORE_API_KEY=NC123
NETCORE_FROM=from@example.com
NODEMAILER_FROM_EMAIL=from@example.com
NODEMAILER_HOST=example.com
NODEMAILER_USERNAME=username
NODEMAILER_PASSWORD=password
NODEMAILER_PORT=25
NODEMAILER_SECURE=true
POSTMARK_API_KEY=PM123
POSTMARK_FROM=from@example.com
SES_REGION=US
SES_ACCESS_KEY_ID=testkey123
SES_SECRET_ACCESS_KEY=testaccesskey123
SES_FROM=from@example.com
MANDRILL_API_KEY=Ma123
MANDRILL_EMAIL=from@example.com
MAIL_FROM_ADDRESS=from@example.com
EMAILJS_HOST=example.com
EMAILJS_USERNAME=username
EMAILJS_PASSWORD=password
EMAILJS_PORT=25
EMAILJS_SECURE=true
SMS drivers are configured with the following environment variables:
TWILIO_ACCOUNT_SID=ACtest
TWILIO_AUTH_TOKEN=testtoken
TWILIO_FROM_NUMBER=+112345
TWILIO_TO_NUMBER=+145678
VONAGE_API_KEY=VN123
VONAGE_API_SECRET=testkey
VONAGE_FROM_NUMBER=+112345
GUPSHUP_USER_ID=GU123
GUPSHUP_PASSWORD=password
PLIVO_ACCOUNT_ID=PA123
PLIVO_AUTH_TOKEN=testtoken
PLIVO_FROM_NUMBER=+112345
SMS77_API_KEY=SA123
SMS77_FROM=from@example.com
SMS77_API_KEY=SA123
SMS77_FROM=from@example.com
TELNYX_API_KEY=TA123
TELNYX_MESSAGE_PROFILE_ID=testprofileid
TELNYX_FROM=from@example.com
TERMII_API_KEY=TermA123
TERMII_SENDER=from@example.com
Chat drivers are configured with the following environment variables:
- None
SLACK_APPLICATION_ID=SAID123
SLACK_CLIENT_ID=SCID123
SLACK_SECRET_KEY=SSK123
Learn more in the docs.
bun test
Please see our releases page for more information on what has changed recently.
Please review the Contributing Guide for details.
For help, discussion about best practices, or any other conversation that would benefit from being searchable:
For casual chit-chat with others using this package:
Join the Stacks Discord Server
Many thanks to the following core technologies & people who have contributed to this package:
The MIT License (MIT). Please see LICENSE for more information.
Made with 💙