Show a code
Put the QR code or link on your site, a receipt, a package or the counter. Every application gets one, and every channel can have its own.
Push notifications, as an API
People subscribe by scanning a QR code with the Nudgebox app, with no account, email or phone number. Your backend reaches every one of them with a single HTTPS call. No app to build, no device tokens to store.
api.nudgebox.app/v1/notificationsSign-ups open when the iOS app lands on the App Store 1,000 notifications / month free No card required No SDK
curl https://api.nudgebox.app/v1/notifications \
-H "Authorization: Bearer $NUDGEBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Your order has shipped",
"body": "Order 1042 is on its way. Expected Thursday.",
"channel": "orders"
}'The Field Jacket in olive is available again in all sizes.
how it works
A QR code on your side, the Nudgebox app on theirs, and one HTTP request in between.
Put the QR code or link on your site, a receipt, a package or the counter. Every application gets one, and every channel can have its own.
People scan with the Nudgebox app and pick the channels they care about. No account, email or phone number changes hands.
→ POST /v1/notifications
{ "channel": "orders", … }
← 202 { "status": "queued" }Call POST /v1/notifications with your API key. Nudgebox delivers to every subscribed device and records each attempt.
handled for you
You get a 202 right away. Nudgebox does the rest in the background: checks, fan-out, delivery and the paper trail.
ntf_8f3k2m9qx4wd7hc5vb1tr6gpsentKeys belong to your organization. Scope one to a single application and revoke it any time.
Body, channel and your plan's quota are checked. A retried request returns the original instead.
Channel and whole-app subscribers, one delivery per device. Paused subscriptions are skipped.
Every attempt is kept as sent, failed or invalid token. Dead tokens leave your audience for good.
one endpoint, three audiences
The same request body for all three. Add a field to narrow who gets it; Nudgebox works out which phones that means.
broadcastLeave out channel and recipient to reach every phone subscribed to the application.
{
"title": "Sale ends Sunday",
"body": "20% off everything.",
…
}channelSplit what you send into channels. People pick theirs, and each channel can have its own QR code.
{
"channel": "orders",
"title": "Shipped!",
…
}recipientMint a single-use subscribe link for one of your users, then send to them by your own id.
{
"recipient": "user_123",
"title": "Table ready",
…
}use cases
Counters, receipts, packaging, status pages, posters. If people can scan it, you can reach them later.
Order 1042 is on its way. Expected Thursday.
channel: "orders"Print the code on the receipt or the box. Shipped, out for delivery and delivered, without asking for a number.
The Field Jacket in olive is available again in all sizes.
channel: "restocks"Let people follow what they care about and tell them the moment it's back, not a newsletter later.
Pick it up at the counter. Enjoy!
recipient: "ticket-87"A personal code on the ticket at the counter, a push when the order is ready. Nobody waits by a buzzer.
Some API requests in eu-west are failing. Next update in 30 minutes.
channel: "incidents"Put a code on your status page. Customers who scanned it hear about an outage before they open a ticket.
for developers
No SDK, no device tokens, no push certificates. JSON over HTTPS from any language, with the guarantees you would have built yourself.
Idempotency-KeySame key and body: you get the original notification back. Nothing is delivered twice.
GET /v1/notifications/:idSent, failed and invalid-token counts for every notification, from the API or the dashboard.
DELETE /v1/recipients/:id/subscriptionsClosing an account? One call removes that user's personal subscriptions and unused links.
Authorization: Bearer nbx_…API keys belong to the organization, can be scoped to one application and revoked at any time.
curl https://api.nudgebox.app/v1/notifications \
-H "Authorization: Bearer $NUDGEBOX_API_KEY" \
-H "Idempotency-Key: order-1042-shipped" \
-H "Content-Type: application/json" \
-d '{
"channel": "orders",
"title": "Your order has shipped",
"body": "Order 1042 is on its way. Expected Thursday.",
"url": "https://acme.example/orders/1042"
}'for subscribers
Scanning a Nudgebox code subscribes this phone, not you. Publishers see an anonymous subscription and whether a delivery worked. Nothing that identifies you.
stored per device: a push token, app version, locale, time zone
pricing
Subscribers never pay and never see a plan. Publishers pay for applications, volume and seats.
For side projects and evaluating Nudgebox.
$0/ month
Free forever. No card required.
For products with real audiences.
$29/ month
Billed monthly. Cancel any time.
Prices in USD. Upgrade, switch interval or cancel from the dashboard; checkout is handled by Polar.
faq
Idempotency-Key doesn't count again.POST /v1/subscribe-links, show it as a QR code, then send with recipient set to your id for them. Links are single-use and expire after 15 minutes unless you ask for longer.scan → subscribe → POST → delivered
Create an application, put its code where people already look, and send. Free to start, no card required.