One API for every notification channel.
Posthorn is a self-hosted, multi-tenant notification platform. Email, SMS, and WhatsApp today — mobile push, Telegram, and WeChat next — behind one API, one template system, and one delivery timeline you can trust.
How it works
- 1
Create your workspace
Sign up, get an API key, and verify a sender identity. Sandbox mode works immediately — real delivery unlocks as each channel is verified.
- 2
Configure your channels
Prove your email domain with three DNS records. Pick an SMS sender. Connect your WhatsApp business profile. Posthorn owns every provider account and integration; you complete only the identity steps that are legally yours.
- 3
Send with one POST
One request shape for every channel. Templates are versioned and rendered per channel; the response is a message you can follow to its final state.
import { Posthorn } from "@posthorn/sdk";
const posthorn = new Posthorn({ apiKey: process.env.POSTHORN_API_KEY! });
const msg = await posthorn.messages.send({
template: "team-invitation",
channel: "email",
to: { email: "alice@example.com" },
idempotency_key: `invite-${invitationId}`,
variables: { inviter_name: "Priya", team_name: "Orion", accept_url: acceptUrl },
});The whole integration. msg.id polls the delivery timeline; webhooks accelerate it. Full API reference in the docs.
Built for teams that read their logs
- An honest timeline for every message
- Accepted, queued, each delivery attempt, provider errors, bounce or delivery — one ordered event log per message. When something cannot be sent, it parks with the reason. Posthorn never fakes success.
- Idempotency the database enforces
- Every send carries a mandatory idempotency key, unique per workspace at the database level. Retrying a timed-out request returns the original message; a changed payload is refused. Duplicate sends are impossible, not unlikely.
- Compliance tracking built in
- India DLT template registration and WhatsApp template approval are first-class state, visible per template. An unregistered template parks the message with the reason — it never silently drops.
- Self-hosted
- Runs in your own cloud account. Your provider relationships, your data, your logs — no third party between you and your recipients.
Channels
Email
Domain verification via DKIM, bounce and complaint handling, suppression, unsubscribe.
SMS
Sender IDs and provisioned numbers, with India DLT registration tracked per template.
WhatsApp
Business templates submitted and tracked through Meta approval, per-client senders.
Coming next: mobile push, Telegram, and WeChat — same API, same templates, same timeline.