Skip to content
Preview: the PushFleet API isn't live yet. Join the waitlist

Webhooks

Add webhook endpoints in the dashboard, one set per environment. PushFleet sends each event as a POST with a JSON body and retries with backoff for up to a day until your endpoint answers 2xx.

Every request carries a PushFleet-Signature header: the HMAC-SHA256 of the raw request body, keyed with the endpoint’s signing secret, hex encoded. Compute it yourself and compare in constant time before trusting the event.

Apple or Google confirmed the message reached a device.

{"type":"message.delivered","created":"2026-11-01T09:41:02Z","data":{"message":"msg_2Xk9fQ","device":"dev_9fK2","user":"user_8f3k"}}

Delivery to a device failed for good.

{"type":"message.failed","created":"2026-11-01T09:41:02Z","data":{"message":"msg_2Xk9fQ","device":"dev_9fK2","user":"user_8f3k","reason":"token_expired"}}

The user tapped the notification. Needs the client SDK in the app.

{"type":"message.opened","created":"2026-11-01T09:43:10Z","data":{"message":"msg_2Xk9fQ","device":"dev_9fK2","user":"user_8f3k"}}

A device’s token was rejected as dead and PushFleet removed it.

{"type":"device.removed","created":"2026-11-01T09:41:02Z","data":{"device":"dev_9fK2","user":"user_8f3k","reason":"unregistered"}}