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.
There is no campaign builder and no audience purchasing. It sends what your system decides to send, to people your system already knows.
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.