AccelerUpDocs
Reference/Webhooks

Webhooks

Receiving AccelerUp events in your own systems, and sending events into AccelerUp.

Outbound — AccelerUp calls you

Add a webhook notification channel with a URL and an optional signing secret. Every matching event is POSTed to it as JSON.

Payload

json
{
  "event": "alert.fired",
  "org_id": "…",
  "alert_id": "…",
  "title": "Checkout error rate above 2%",
  "body": "error_pct is 3.41 (threshold > 2) — Clickhouse",
  "severity": "high",
  "service": "checkout-api",
  "environment": "production",
  "url": "https://monitoring.qrdev.org/alerts/…",
  "timestamp": "2026-09-15T08:14:02Z"
}

Events

EventWhen
alert.firedA condition became true and cleared For
alert.resolvedIt became false and cleared Recovery
alert.acknowledgedSomebody claimed it
incident.opened / .updated / .resolvedIncident lifecycle
deployment.started / .finishedSee Delivery
testThe Test button

Verifying the signature

When a secret is set, the request carries an HMAC-SHA256 of the raw body.

python
import hmac, hashlib

def verify(raw_body: bytes, header: str, secret: str) -> bool:
    expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, header)
Important

Verify against the raw body, before any JSON parsing. Re-serialising changes the bytes and the signature will never match.

Delivery and retries

Webhook deliveries are logged and retried exactly like every other channel — three retries at 1, 5 and 30 minutes, then the DLQ. See Notification delivery.

Return 2xx quickly. A slow endpoint is recorded as a failure and retried; do the work asynchronously on your side.

Inbound — you call AccelerUp

Several integrations accept events into AccelerUp:

EndpointSender
POST /api/v1/jenkins/notifyJenkins, for real-time build status
POST /api/v1/deployments/webhookAny CI system, to record a deployment
POST /api/v1/alerts/webhookExternal monitoring, to raise an alert

Each is authenticated by a token issued in the relevant settings page. See Jenkins and Deployment setup.

Where this behaviour lives: backend/internal/notification/webhook_client.go, backend/internal/integration/inbound.go. If the code and this page disagree, the code is right — please fix the page.

Part of ReferenceThe exact numbers, names and limits, generated from the code.