Messages and delivery
A send returns as soon as PushFleet has accepted the message. Delivery to each of the user’s devices happens in the background, and each device gets its own status.
Statuses
Section titled “Statuses”| Status | Meaning |
|---|---|
queued |
Accepted, not yet handed to Apple or Google |
sent |
Handed to Apple or Google |
delivered |
Apple or Google confirmed it reached the device |
failed |
Rejected, for example because the token is dead or the payload is invalid |
opened |
The user tapped it (needs the client SDK) |
Retries
Section titled “Retries”If Apple or Google is slow or briefly unavailable, PushFleet retries with backoff until the message’s ttl runs out (a day by default). A message that never gets through ends as failed.
Your own retries are safe too: send the same Idempotency-Key header and PushFleet returns the original response instead of sending twice.
Dead tokens
Section titled “Dead tokens”When a device’s token is rejected as dead, its delivery is marked failed, the device is removed and you get a device.removed webhook. The next send to that user skips it.
An Apple token sent to the wrong push server (sandbox instead of production, or the other way round) isn’t dead. PushFleet retries it on the other server and corrects the device’s apns_environment instead of removing it.