Real-time inbox
Users see notifications the instant they land, streamed over one SSE connection. No polling, no refresh.
Notification infrastructure
Elaan is the notification layer for real-time products: in-app inbox, email, and push from one API, streamed live to open sessions over a single connection. Multi-tenant, white-label, and yours to self-host.
How it works
Fire a single call when something happens. Elaan resolves each recipient's channel preferences, renders your templates with their brand, and delivers to every enabled channel. One broken channel never blocks the rest.
# one call, from your backend POST https://api.elaan.io/v1/notifications Authorization: Bearer sk_live_… { "notification_type_key": "order_shipped", "external_id": "user_42", "variables": { "order_id": "A1234" } } ← 202 { "event_id": "evt_01H…" }
{{ variables }} with their brand and attributes.What you get
Users see notifications the instant they land, streamed over one SSE connection. No polling, no refresh.
One trigger reaches in-app, email, and push. Each channel fails independently, so one bad template never blocks delivery.
Every contact decides what they get, per channel and per notification type. Elaan honors it on every send.
Author once with variables; brand per tenant. One template renders correctly for every customer and recipient.
Send through your SMTP, SES, SendGrid or Mailgun, and your Expo or FCM project. Your deliverability, your reputation.
The same image runs our cloud and your own servers. docker compose up. Your data, your infrastructure.
Real-time inbox
Notifications are streamed to open tabs over a single SSE connection, so the browser never polls for updates.
Built for platforms
Whether you serve ten customers or ten thousand, every tenant is isolated and every message is branded. Run it on our cloud, or pull the image and run the whole stack yourself.
Strict per-tenant scoping on every read and write, a default brand per tenant, and per-brand template overrides, so notifications always look like they came from your customer, not from us.
One Docker Compose brings up the API, the workers, and Postgres, with the
console served in-process. Config flags, not code forks, select the
profile. Run docker compose -f compose.onprem.yaml up and you're live.
Pricing
Priced by your active audience, not per message — send as much as you want. Talk to us for large scale or on-premise.
For side projects and trying Elaan out.
For production apps that need real-time.
For platforms and white-label use.
For large audiences and enterprise needs.
No credit card to start. An “active contact” is a unique recipient you notify in a month; extras billed per 1,000. Non-profit and startup discounts available.
Contact
Planning a self-hosted deployment, or need a plan sized to your volume? Tell us what you're building and we'll get back to you.
Every on-premise install comes with hands-on setup help and a direct line to the people who build Elaan. We usually reply within one business day.
Get started
Wire one endpoint today. Add channels, preferences, and real-time as you grow, and the API stays the same.