Target a person
You send to a user id you already have. Which phones they carry, and how many, stops being your problem.
NOTIFICATIONS
One call targets a user. Bolrach Push fans it out to every device they have registered, over a live rail that lands in about 400 milliseconds, and tells you exactly what happened to each one.
HOW IT WORKS
Your app calls one endpoint with a user id. It gets back an installation and, on the live rail, the credentials to hold a stream open.
One POST names the person, not the hardware. Bolrach Push resolves every active device behind that id.
The console shows deliveries per day, the share that reached a device, and the reason behind anything that did not.
WHAT IT DOES
Everything here is live today, not planned.
You send to a user id you already have. Which phones they carry, and how many, stops being your problem.
Devices hold one stream open and a send reaches them in about 400 ms, no Google or Apple credentials needed to start.
Every send takes an idempotency key. Replay it after a timeout and you get the original message back, not a second notification.
Per-message traces and per-app insights: what was accepted, what reached the device, what failed and the provider reason why.
A key is bound to the app it was minted for. A marketing key cannot send to your checkout audience.
Node and Python clients with typed errors, automatic backoff that obeys Retry-After, and an escape hatch for anything new.
INTEGRATION
Install with npm i @bolrach/push or pip install bolrach-push.
// your server, send to the person
import { BolrachPush } from '@bolrach/push';
const push = new BolrachPush({ apiKey: process.env.BOLRACH_PUSH_KEY });
await push.send({
app_id: process.env.BOLRACH_PUSH_APP_ID,
target: { type: 'user', id: 'user_8123' },
title: 'Your order shipped',
body: 'Track it in the app.',
}, { idempotencyKey: 'order-8123-shipped' });
// python: pip install bolrach-push
// push.send({...}, idempotency_key="order-8123-shipped")
HONEST LIMITS
A product is easier to trust when its edges are written down.
Every launch uses a preview, live estimate, immutable audience snapshot and P4-isolated capacity. Large or dangerous sends require a different approver; audiences are always your own.
A stream only exists while the app is running. Waking a closed app is what FCM and APNs are for, and those need their platform credentials configured.
A device can be offline, uninstalled or out of battery. The console tells you which of those happened rather than pretending it did not.
Create an app, mint a key, and the SDK does the rest.