Push notifications API

Your app as a channel, with no SDK

Connect your iOS and Android app once with your own APNs key and Firebase service account. The app registers its device, your backend links it to the guest after login, and one call sends a rich push: title, body, image, up to three buttons and a deep link, with delivered and opened reported back onto the contact.

Your APNs and Firebase credentials ✦ No SDK, a device contract ✦ 600 sends per minute per organisation

send-push.sh

            
Run202 · queued · 1 matched · 2 devicesPOST /push/{organisationId}/send
14:02
Webhooksyourapp.com/hooks/lodgestory

The most guest-obsessed brands trust Lodgestory to power 50M+ conversations a year

Bombay Shaving Company ELIVAAS Lyskraft COYU BBingo Hotels Bloom Hotels
The device contract

Register, identify, send, report back

On every token the OS hands out, the app calls PUT /api/push/v1/devices with the publishable key. After your own login, your backend links the device to the guest by phone or email, or mints a short-lived contact token the app sends with its registration. Then send. The app posts delivered when it rendered the push and opened or action on a tap, with the beacon token from the payload, and the contact's timeline shows it.

  • Reference Swift and Kotlin files on the settings page; implement the shapes in any language.
  • Expo apps can go through Expo's push service instead, with the credentials in EAS.
  • Transactional reaches every active device; promotional only opted-in devices, outside quiet hours, under the daily cap.
Push notifications API reference
app · register.swift
200PUT /api/push/v1/devices
14:02

Why teams build on it

Send rich notifications

Title to 120 characters, body to 1,000, an image, up to three buttons, ten data keys, a deep link, a live countdown on Android.

Address people, not tokens

to a phone, an email, a contact id, one device, or your flagged test devices. The same contact Lodgestory messages on WhatsApp.

Retry safely, follow every push

Idempotency-Key on the send, GET the message for per-device outcomes, cancel while queued, and list every device's delivery log.

Campaigns, automations, webhooks

A channel everywhere a channel appears

The push app shows up in the campaign builder, the Send push automation action on any trigger, the contact panel's Send push, webhooks and MCP. Campaign funnels count sent, delivered and opened per push. Device events fire as webhooks: registered, identified, invalidated.

  • Limits that match Apple and Google: 4 KB per notification.
  • no_recipients is a state, not an error: recipients.excluded says why.
  • Credentials stored encrypted, never shown again; rotate from the settings page.
Push in campaigns and automations
POST yourapp.com/hooks/lodgestory

                
X-Webhook-Signature · sha256=…
Delivery logPush notifications API · 30 days

Ready to build on Push notifications?

Create an organisation, enable Developer Access and run your first request against your own workspace today.

Questions, answered

What engineering teams ask before they integrate.

No. The app registers its device token with a publishable key, your backend links the device to the guest after your own login, and the app renders the push from the payload. Reference Swift and Kotlin files are on the settings page; the shapes are documented so any language works.

Yours: your APNs key with its Key ID and Team ID, and your Firebase service account, uploaded once in Settings, Connections, Push notifications and stored encrypted. Expo apps can use Expo's push service instead.

POST /api/wp-crm/push/{organisationId}/send with to as a phone, email, contact id, device id or testDevices, a title and body, and optional image, buttons, url, data, kind and sendAt. The response is 202 with the queued message id and how many devices matched.

Set kind to promotional. It reaches only devices whose person opted in to marketing in the app, outside quiet hours and under the daily cap; recipients.excluded in the response says who was skipped and why.

Push notifications API | Lodgestory