v1.0 — Now stable

24 drivers, 7 channels,
one Go API.

A Laravel-inspired notification library for Go. Send to email, WhatsApp, SMS, Slack, push, and more — async-by-default with retries, backoff, and rate limiting baked in.

go get github.com/gopackx/go-notificationGo 1.22+
main.go
$ go get github.com/gopackx/go-notification
package main
import "github.com/gopackx/go-notification"
n := notification.New(cfg)
err := n.Send(ctx, user, WelcomeNotification{})
if err != nil { log.Fatal(err) }
// Dispatched on email + slack + db
sent
8 lines · Go · UTF-8 · LFReady
24
Drivers across all channels
7
Channels (Email, WA, SMS, Chat…)
0
External SDK dependencies
MIT
Open source license, Go 1.22+
EXAMPLE

Define once. Send anywhere.

A Notification declares its content and target channels. Send routes it through the worker pool with retries and rate limiting.

welcome.go
Notification
type WelcomeNotification struct{ User User }
func (n WelcomeNotification) Via() []string {
return []string{"mail", "slack", "db"}
}
func (n WelcomeNotification) ToMail() *Mail {
return NewMail().Subject("Welcome")
.View("emails/welcome.html", n.User)
}
8 lines · Go · UTF-8 · LFReady
handler.go
Send call
// signup handler
func (h *Handler) Signup(c echo.Context) error {
user, _ := h.users.Create(c.Request().Context(), input)
// dispatch async
if err := h.notifier.Send(
ctx, user, WelcomeNotification{User: user},
); err != nil {
h.log.Warn("notify failed", "err", err)
}
return c.NoContent(204)
}
11 lines · Go · UTF-8 · LFReady