How it fits together
- Make an app at bolrach.com/push. On its page, add a key for every platform you ship to. Browsers use a pair of Web Push keys that we generate for you, Android takes the Firebase service account file, and iPhones take the .p8 file from your Apple account.
- Each browser or phone registers itself as an installation. The web SDK does it from the page; a mobile app does it with the app id, or your backend does it with a server key.
- When the person signs in, the device is linked to your user id. Sign-out unlinks it, so a shared phone stops showing the last person's messages.
- Your server sends with
POST /messagesto that user id, a list of users, a topic or one device. Instead of writing each message, the server can report what happened, such as order 8123 shipping, and a journey picks the wording and the timing. - Devices post receipts. Webhooks and the message trace show each step: accepted by the provider, received, displayed, opened.
Every call goes to https://api.bolrach.com/push/v1. The machine-readable contract is at api.bolrach.com/push/v1/openapi.json, and the API reference lists all of it.
Pick a starting point
- Send from your server: the first send in curl, Node.js, Python or PHP, who to send to, webhooks and retries.
- Web: one script tag and one file at the root of the site.
- Android: Firebase, plus Huawei Push Kit and Amazon ADM for devices without Google services.
- iPhone and iPad: APNs with a .p8 key, no Firebase needed.
- Flutter, React Native and Unity and .NET MAUI.
- Shopify and WooCommerce: store events and web push without writing the calls yourself.
- Guides for an online shop and a social app, journeys and recipes, and the hosted preference centre.
- SDKs: every official package, its version and whether it is on its registry yet.
Accepted is not delivered
When Google, Apple or a browser vendor takes a message, all we know is that they took it. A phone that is switched off shows provider_accepted until it comes back online and the app confirms. Once a provider has accepted a push it cannot be recalled, so pause and cancel only stop deliveries that have not been handed over yet.