Skip to content

Status codes

PingLoom shows what FCM accepted and what the app reported. Provider acceptance is not proof that a phone showed the alert.

HTTP codes

CodeMeaning
200Status read.
202Accepted and stored. Sending to devices happens after this response.
400The request could not be read.
401The API key is missing or not valid.
403The key lacks the scope.
404The event does not exist for this key's project.
409Conflict: idempotency or archived project.
413Body too large.
415Wrong content type.
422A field failed validation.
429Rate limit or monthly quota.
500A failure on our side.

Event status

StatusShown asMeaning
acceptedEvent acceptedPingLoom stored the event. Nothing has been sent yet.
queuedQueuedThe event is waiting for the worker to send it.
provider_acceptedSent to FCMFCM accepted the send for at least one device. This is not proof that a phone showed it.
simulated_acceptedSimulated (test mode)A simulated provider accepted the send. No real push was made. Local and test setups only.
retryingRetryingA send failed in a way that can recover. PingLoom tries again with a growing delay.
failedFailed to reach FCMFCM could not take the send after all attempts.
no_devicesAccepted, no active deviceThe event is stored and visible in the inbox, but no active device follows the channel.

Reading is tracked per person ("Seen on a device"). Acknowledging is one shared state per event: the first person to acknowledge it acknowledges it for the team.

Delivery state

StateShown asMeaning
pendingWaiting to sendThe send for this device has not started.
provider_acceptedSent to FCMFCM accepted the send for this device.
simulated_acceptedSimulated (test mode)A simulated provider accepted it. No real push was made.
retryingRetrying, attempt n of NThe last try failed in a way that can recover.
failedFailed to reach FCMAll attempts failed, or the device token was rejected and the device was disabled.
skippedSkippedThe device or member was no longer active when the send ran.

Provider errors

When a send fails, the dashboard shows one of these normalized codes with a plain explanation.

CodeWhat it means
UNREGISTEREDThe app was uninstalled or its token expired. The device was disabled.
INVALID_TOKENFirebase rejected this device's token. The device was disabled.
SENDER_ID_MISMATCHFirebase rejected this device's token. The device was disabled.
UNAVAILABLEFCM was unreachable. PingLoom retries automatically.
INTERNALFCM was unreachable. PingLoom retries automatically.
TIMEOUTFCM was unreachable. PingLoom retries automatically.
QUOTA_EXCEEDEDFCM throttled sending. PingLoom retries after the delay FCM asks for.
AUTH_ERRORThe server's Firebase credentials were rejected. Check the FCM configuration.
INVALID_ARGUMENTFCM rejected the message.
DEVICE_DISABLEDSkipped: the device or member is no longer active.
SESSION_ENDEDSkipped: the device or member is no longer active.
NOT_MEMBERSkipped: the device or member is no longer active.