This webhook events list covers every HTTP request HostRepute sends to your own endpoints: the events of a webhook alert channel and the callbacks of checks you start through the API.
The callback_url you pass when you start a blocklist or certificate check with the API
Sent when
Something the channel follows changes, or you send a test
The check ends, whether it completed or failed
Event header
X-HostRepute-Event
X-Webhook-Event
Timestamp header
X-HostRepute-Timestamp
X-Webhook-Timestamp
Signature header
X-HostRepute-Signature
X-Webhook-Signature-V3
Signed with
The channel’s own signing secret, which you set in the channel form
Your team’s webhook secret
Both signatures are sha256= followed by the hex HMAC-SHA256 of the timestamp, a dot and the raw request body. Receive webhooks shows how to check them, with code.
The portal doesn’t show the team webhook secret yet, so you can’t check the signature of a scan callback today.
HostRepute sends both kinds only to https URLs that resolve to a public address, and doesn’t follow redirects.
Sent when you send a test alert to a webhook channel, from the portal or the API. data.test is always true.Sample payload
{
"id": "6f1d2c9a-3b7e-4f05-9a8c-2e4b7d1f0c53",
"event": "alert.test",
"occurred_at": "2026-10-27T14:05:09+00:00",
"team_id": 4182,
"alert": {
"uuid": "019a1f3c-5e27-7b84-9c1d-6f0a2e8b4d37",
"type": "webhook",
"frequency": "once_on_listed_delisted"
},
"title": "HostRepute Test Alert",
"severity": "info",
"summary": "HostRepute test alert webhook delivered successfully.",
"data": {
"message": "This is a test notification from HostRepute.",
"test": true
}
}
alert.blacklist_status_changed
Sent when blocklist checks find domains or IPs that were newly listed or removed from a blocklist (with the Only when listed frequency, only new listings). Changes are batched into one request; severity is critical when any host is listed, and host names are defanged (. becomes [.]).Sample payload
Sent for Microsoft SNDS alerts (IP status, filter result changes, complaint rate, spam trap hits) and Gmail Postmaster Tools alerts (spam rate, delivery errors, compliance issues). data.lines holds the alert text and data.url links to the related page in the portal.Sample payload
{
"id": "c81f5a2d-6e4b-4b97-8d03-1a9e7c5f2b60",
"event": "alert.reputation_issue",
"occurred_at": "2026-10-27T14:05:09+00:00",
"team_id": 4182,
"alert": {
"uuid": "019a1f3c-5e27-7b84-9c1d-6f0a2e8b4d37",
"type": "webhook",
"frequency": "once_on_listed_delisted"
},
"title": "SNDS IP status alert: 203.0.113.25 is blocked",
"severity": "critical",
"summary": "SNDS IP status alert: 203.0.113.25 is blocked",
"data": {
"lines": [
"The IP address 203.0.113.25 has been flagged by Microsoft SNDS.",
"Status: blocked",
"Reason: Blocked due to user complaints or other evidence of spamming",
"Recommended actions: check current Outlook/Hotmail traffic, slow sending from this IP, and investigate complaint or malware signals before resuming normal volume."
Sent when a certificate check changes a monitor's status and finds an event that its certificate profile has turned on, such as expiring, expired or hostname mismatch. The same status and events are sent at most once per monitor per day.Sample payload
Sent when an active certificate agent has not contacted HostRepute for 15 minutes and is marked offline. Sent at most once per agent per day.Sample payload
Sent when a domain expiry check changes a monitor's status and the domain is expiring soon, has expired or was renewed. The same status and events are sent at most once per monitor per day.Sample payload
Sent once when an uptime monitor is confirmed down or degraded and an incident opens. data.status says which; resolved_at and duration_seconds are null.Sample payload
"last_error": "Expected HTTP 2xx-3xx, received 503.",
"started_at": "2026-10-27T13:58:02+00:00",
"resolved_at": null,
"duration_seconds": null
}
}
uptime.monitor_recovered
Sent once when a monitor with an open incident is confirmed up again and the incident closes. data.status keeps the incident's status (down or degraded).Sample payload
{
"id": "1a6e9c4f-3d8b-4a27-b0f5-8e2c7d1a9b64",
"event": "uptime.monitor_recovered",
"occurred_at": "2026-10-27T14:21:13+00:00",
"team_id": 4182,
"alert": {
"uuid": "019a1f3c-5e27-7b84-9c1d-6f0a2e8b4d37",
"type": "webhook",
"frequency": "once_on_listed_delisted"
},
"title": "🟢 Recovered: Checkout API is back up",
"severity": "info",
"summary": "Checkout API has recovered and is reachable again.",
Sent to the callback_url of an API blocklist check (POST /api/v1/blacklist/check) when the scan finishes. When the scan fails, status is failed and result holds only an error message.Sample payload
{
"event": "blacklist.scan.completed",
"data": {
"uuid": "019a2f61-3a8c-7e19-8b4d-0c5f9e2a7d16",
"host": "203.0.113.25",
"status": "completed",
"result": {
"host": "203.0.113.25",
"data_sources": [
{
"data_source_id": 12,
"data_source_name": "b.barracudacentral.org",
"data_source_host": "b.barracudacentral.org",
"source_status": "completed",
"is_listed": true,
"details": [
{
"host": "25.113.0.203.b.barracudacentral.org",
"class": "IN",
"ttl": 900,
"type": "A",
"ip": "127.0.0.2"
}
],
"error": null
},
{
"data_source_id": 31,
"data_source_name": "bl.spamcop.net",
"data_source_host": "bl.spamcop.net",
"source_status": "completed",
"is_listed": false,
"details": [],
"error": null
},
{
"data_source_id": 27,
"data_source_name": "bl.mailspike.net",
"data_source_host": "bl.mailspike.net",
"source_status": "failed",
"is_listed": false,
"details": [],
"error": "The DNS lookup for bl.mailspike.net failed or timed out, so the listing status could not be determined."
}
],
"listed_count": 1,
"total_count": 3,
"failed_count": 1,
"skipped_count": 0,
"is_listed": true,
"relisted_detected": false
},
"started_at": "2026-10-27T14:02:11.000000Z",
"completed_at": "2026-10-27T14:02:19.000000Z"
}
}
certificate.scan.completed
Sent to the callback_url of an API certificate check (POST /api/v1/certificates/check) when the scan completes, or fails after its retries. result is the full stored result, including the certificate PEM (shortened in this sample), the result for each resolved IP and the grade.Sample payload