Skip to main content
The inbound webhook integration lets any tool that can send an HTTP request open and resolve scaling.cloud incidents — Datadog, Grafana, Prometheus Alertmanager, Sentry, a cron job, or your own service. You send a small JSON payload to a unique URL, signed with an HMAC secret, and scaling.cloud routes it to a component and its escalation policy.
Inbound webhook integration

An inbound webhook source connected to a scaling.cloud component

How it works

  1. You create an inbound webhook in scaling.cloud and pick the component its alerts affect. scaling.cloud issues a unique webhook URL and an HMAC signing secret, both shown only once.
  2. Your tool sends a JSON payload to the URL on each alert, with an HMAC-SHA256 signature of the request body in the X-Scaling-Signature header.
  3. A payload with status: "open" opens an incident on the mapped component (deduplicated by dedupKey). A payload with status: "resolved" and the same dedupKey resolves the matching open incident.

Endpoint

The {token} is part of the webhook URL shown when you create the source. No Clerk/session auth is used — the URL token identifies the source and the HMAC authenticates the payload.

Payload

Example open payload
Example resolved payload

Signing the request

Compute an HMAC-SHA256 of the raw request body with your signing secret and send it as sha256=<hex>:
Sign the exact bytes you send. Re-serializing or pretty-printing the JSON after signing will change the body and the signature check will fail.

Responses

State handling

The opened incident flows through the same pipeline as any other: escalation policy, on-call paging, Slack, and status pages.

Security model

  • HMAC signature verification — every request body is verified against the source’s signing secret with a constant-time comparison. Requests with a missing or invalid signature are rejected with 401.
  • Secrets revealed once — the webhook URL token and signing secret are shown a single time on create. scaling.cloud stores only a SHA-256 hash of the token and an encrypted copy of the secret. If you lose the URL you must delete and recreate the source.
  • Rotate the secret — you can rotate the signing secret at any time from the source’s settings; the URL stays the same. Update your sender with the new secret.
  • No payload logging — scaling.cloud does not log raw payloads at info level. Structured logs reference only orgId and integrationId.
Treat the webhook URL and signing secret like credentials. Anyone who can post a validly-signed payload can open incidents in your organization. Rotate the secret if you suspect it has been exposed.

Setup

1

Create the webhook in scaling.cloud

Go to Settings → Integrations → Inbound webhooks and click New webhook. Choose a name and the component its alerts should affect. Copy the webhook URL and signing secret on the one-time reveal screen.
2

Configure your tool

Point your monitoring tool’s webhook/alert action at the URL. Send the payload above, signing the body with the secret and putting the result in X-Scaling-Signature.
3

Send a resolve on recovery

When the underlying condition clears, send a status: "resolved" payload with the same dedupKey so scaling.cloud auto-resolves the incident.

One webhook, many components

Each inbound webhook has a fallback component — the one its alerts land on when nothing else is specified. To route a single webhook’s alerts across many components, set the component field on each payload to the target component’s name or one of its aliases; scaling.cloud resolves it to the owning component and pages that component’s escalation policy. A component value that matches nothing falls back to the webhook’s fallback component, so a typo never drops an alert.

Removing a webhook

Deleting a webhook in scaling.cloud stops ingestion immediately — any further deliveries to its URL return 401. Remember to remove the URL from the sending tool.