Per person. Not per notification.

Unlimited notifications on every plan, including the trial. The only number that moves is how many of your users actually saw something this month.

Trial

Enough to wire the bell into a real app.

$0/ month

1,000 active subscribers

  • 1 app
  • 1,000 active subscribers
  • Unlimited notifications
  • No card required
Start the trial

Pro

Most bought

A product with a real user base.

$39/ month

50,000 active subscribers

  • 5 apps
  • 50,000 active subscribers
  • Unlimited notifications
  • Real-time delivery
  • Preference centre included
Choose Pro

Scale

A platform, or several products at once.

$99/ month

250,000 active subscribers

  • Unlimited apps
  • 250,000 active subscribers
  • Unlimited notifications
  • Real-time delivery
  • Priority support
Choose Scale

The questions worth answering

What counts as an active subscriber?
Someone who received or read a notification during the billing period. A user who has not been sent anything and has not opened the bell does not count, and a user who churned last year never counts again.
Is the number of notifications limited?
No. Send one person a thousand notifications or a thousand people one; the price is the same. Charging per notification would make you ration the thing the product exists to do.
How does the embed authenticate?
Your backend mints a short-lived token naming one user, signed with your app key. The embed presents it and can read that person’s inbox and nothing else — it cannot publish, and it cannot see another user. Your app key never reaches a browser.
What happens if my card fails?
Publishing stops. Your users keep seeing the notifications they already have, because taking their inbox away would punish them for something between us and you.
Is delivery really real-time?
Yes, over Server-Sent Events, and the inbox is stored in PostgreSQL rather than replayed from a channel — so a user who was offline still sees everything in order when they come back. Nothing is lost if the stream drops.
Does it work without JavaScript frameworks?
It is a custom element. It works in React, Vue, Svelte, Rails, Django or a plain HTML page, and it is 2.7 KB gzipped with no dependencies.