Skip to main content
A webhook tells you when something happens in your workspace, as it happens: an instance is ready, a job finished, a budget is close to its limit, the balance is running low. Runcrate sends each event to the endpoints you add, so a pipeline can react without polling the API and your team hears about it where it already works. Each endpoint uses one of three channels: All three get the same events, with the same retries and the same delivery log. Webhooks are set per workspace and cover every environment in it.

Quickstart

Only workspace owners and admins can add or change endpoints. Other members can see the list and the delivery log.
1

Open Settings > Webhooks

Go to workspace settings and find Webhooks. Select Add endpoint.
2

Pick a channel

Under Where it goes, choose Webhook for your own server, or Slack or Discord for a channel.
3

Paste the URL

For a webhook, paste your endpoint’s public https:// URL. For Slack or Discord, paste the webhook URL you copied from it (Slack steps, Discord steps).
4

Choose events

Under Events, keep All events, or select Choose events and tick the ones you want. What arrives shows the exact body for any event.
5

Send a test event

Select Send a test event. A webhook.test event goes to the URL at once and you see whether it landed, or a sentence about why it did not.
6

Copy the signing secret

For a webhook, the signing secret (it starts with whsec_) is shown once, under Copy the signing secret now. Store it in your secret manager, then select I have copied it. Slack and Discord endpoints have no secret.

The envelope

Every event has the same shape. A signed webhook receives exactly this JSON as the request body, here for instance.runtime_ending:
Each request also carries these headers:

Limits

  • Up to 10 endpoints per workspace, across all three channels.
  • Webhook URLs must be public https:// addresses. Addresses inside a private network or on localhost are refused; to test against your own machine, see testing locally.
  • Answer within 10 seconds with any 2xx. Anything else is retried, up to 8 attempts over about 3 hours 40 minutes. See retries.
  • An endpoint that has failed for 3 days with no success (and at least 10 failed attempts), or has given up on 20 events in a row, is turned off. See automatic turn-off.
  • Send a test event: 10 per person per 10 minutes. Redeliver: 10 per person and 30 per workspace per 10 minutes.
  • Deliveries stay in the delivery log for 30 days.

Learn more

Events

Every event type, its fields and an example.

Verifying signatures

Check the Runcrate-Signature header in Node.js, Python and Go.

Retries and the delivery log

The retry schedule, Redeliver and automatic turn-off.

Testing locally

Receive events on your own machine through a tunnel.

Slack

Post events to a Slack channel.

Discord

Post events to a Discord channel.

Best practices

Answer fast, dedupe on id, keep the secret safe.

Spend guardrails

The budgets and auto stops behind several of these events.