You shouldn't need five integrations to send one notification.
Dispatch routes notifications across SMS, email, push, WhatsApp, webhooks, and in-app from a single API. Self-hosted. Open source core. No per-message fees on email.
Why we built this
We were managing five provider integrations, three template systems, and zero visibility into what actually got delivered.
The cost problem
Twilio charges per SMS. SendGrid per email. At 50K notifications/day across a fintech app in Côte d'Ivoire, that's $3,000+/month just in messaging costs. We built our own Postal email engine and Pushly SMS gateway to cut that to near-zero for email and local-rate for SMS.
The integration problem
Every channel has its own SDK, its own webhook format, its own retry logic. Adding WhatsApp meant another integration, another dashboard, another thing to monitor at 2 AM. Dispatch is one API, one webhook format, one place to look.
The template problem
Product managers shouldn't need to file engineering tickets to change “Your payment of {{amount}} was received” to “You received {{amount}} from {{sender}}”. Templates live in Dispatch with variables, conditionals, and per-channel formatting — editable by anyone.
How it works
One endpoint. You pick the channels. Dispatch handles the rest.
POST to /v1/send with a template name, recipient, and channel list. Dispatch resolves the template, formats per channel, delivers with retries, and reports back via webhook.
// One call. Six channels. Done.
const response = await dispatch.send({
to: "user_awa_diallo",
template: "payment-received",
channels: ["sms", "email", "push"],
data: {
amount: "25,000 XOF",
sender: "Moussa K.",
ref: "TXN-8291"
}
});
// response: { delivered: 3, failed: 0, latency: "142ms" }Channels
Six channels. One API. Each with real infrastructure behind it.
Not just API wrappers. Dispatch includes a self-hosted Postal email engine (no SendGrid dependency) and Pushly SMS gateway for West African mobile networks.
Postal engine, no per-send fees
SMS
Pushly gateway, local routes
Push
FCM + APNs, silent & visible
Business API, templates
Webhooks
HMAC-signed, retry-safe
In-App
Real-time via WebSocket
# Python
pip install dispatch-notify
from dispatch import Dispatch
client = Dispatch(api_key="dp_live_...")
client.send(
to="user_123",
template="kyc-approved",
channels=["sms", "whatsapp"],
data={"name": "Awa"}
)SDKs
Node.js, Python, Go. Or just curl.
Type-safe SDKs with autocomplete for templates and channels. Or use the REST API directly — it's a single POST endpoint.
Pricing
Self-host for free. Or let us run it.
The open source core is free forever. Managed hosting adds monitoring, backups, and support.
Self-Hosted
Free
forever, MIT license
- All 6 channels
- Unlimited notifications
- Postal email engine
- Template management
- Community support
Managed
$49/mo
+ usage for SMS/WhatsApp
- Everything in Self-Hosted
- Managed infrastructure
- Automatic backups
- Priority support
- Delivery analytics dashboard
- 99.9% uptime SLA
Enterprise
Custom
volume pricing
- Everything in Managed
- Dedicated infrastructure
- Custom SLA
- SSO & RBAC
- On-premise deploy option
- Dedicated account manager
Read the docs. Deploy in an afternoon. Send your first notification tonight.
Docker Compose up and you're running. No signup required for self-hosted.