Skip to main content

Open Notification

Self-hosted push notification infrastructure. iOS (APNs), Android (FCM v1) and Web Push (VAPID) behind one API and one dashboard, running on your own server, with your subscriber data staying yours.

The app overview: audience by platform, the last seven days of deliveries and audience growth

What you get

Open NotificationOneSignalRaw FCM / APNs
Costyour server (~$10/month)per MAUfree
Segmentation✅ tag, locale, activity, platform
Campaigns & scheduling✅ now, fixed time, user's local time
A/B testing✅ deterministic variants, winner follow-up
Delivery / open / click analyticslimited
Frequency cap & quiet hours
Webhooks✅ signed, batched
Web push✅ including iOS PWAslimited quotabuild it yourself
Data ownershipyourstheirsyours
Vendor lock-innone — AGPL server, MIT SDKshighnone

How it fits together

  • API (Bun + Elysia) registers devices, stores campaigns and puts sends on a queue. It never talks to Apple or Google itself.
  • Worker consumes three platform queues (push-ios, push-android, push-web), calls the transports, applies delivery rules, classifies errors and cleans up dead tokens.
  • Dashboard (Next.js) is where you configure apps, upload credentials, build campaigns and read reports. It talks to the API server-side only; no secret ever reaches the browser.
  • MongoDB holds apps, users, subscriptions, campaigns and a time-series events collection. Redis holds the queues, rate limits and the shared FCM access token.

Where to start

I want to run it

  1. Quickstart — Docker Compose, keys, first push in five minutes.
  2. Self-hosting — every environment variable, Dokploy/Traefik, scaling.
  3. Dashboard setup — the admin panel and its first login.

I want to integrate it

  1. Concepts — apps, users, subscriptions, campaigns, keys.
  2. Platform setup — the .p8, the service account, the VAPID pair.
  3. SDKs — Swift, Kotlin, React Native and the browser.
  4. REST API — sending from your backend.

Migrating from OneSignal?

The identity model (users, external ids, tags, login/logout), the segment builder, the campaign wizard and the reports all follow OneSignal's semantics on purpose. Read the migration guide for what carries over, what does not (web push subscriptions), and a four-week cut-over plan.

License

The server (core, transports, api, worker, dashboard) is AGPL-3.0: run it, change it, but if you offer it as a service the changes go back to the community. The SDKs are MIT, so they can live inside a closed-source app.