Slack, Discord, Teams, Home Assistant, ntfy, Gotify and Pushover URLs are recognised from the URL itself and receive that service's native format. Everything else receives the JSON below, which is a stable contract.
{
"event": "incident.updated",
"incident": {
"id": "inc_8f2a",
"title": "Pushes are not being delivered",
"status": "identified",
"impact": "major",
"components": ["Push delivery"],
"url": "https://status.pushcloud.app/incidents/inc_8f2a"
},
"update": {
"body": "A fix is deploying now.",
"created_at": "2026-08-12T16:42:08Z"
}
}
Every request carries a header of the form
x-pushcloud-status-signature: t=<unix>,v1=<hex>, where v1 is
HMAC-SHA256 over the string t + "." + rawBody using your signing secret.
The timestamp is inside the signed string, so a captured request cannot be replayed later.
Reject anything more than five minutes old.
Any 2xx counts as delivered. A 429 or 5xx is retried at 30 seconds, 2 minutes, 10 minutes,
45 minutes and 3 hours, then given up on. Any other 4xx is treated as permanent. Twenty
consecutive failures disables the subscription. Redirects are never followed.
Each request carries x-pushcloud-status-delivery-id, stable across retries.