Skip to main content
A webhook is a standing instruction: when this event happens in my workspace, POST it to my URL. You register the URL once, Custral signs and delivers every matching event, and your endpoint runs on your own infrastructure.

When to reach for one

Webhooks

You want to be told when something changes, and you own a server that can receive an HTTP request.

The API

You want a snapshot right now, or you are catching up after downtime.

Workflows

The reaction lives inside Custral: send an email, create a task, move a stage. No endpoint to run.
Webhooks and workflows are not rivals. A workflow is the right tool when the whole reaction happens in the workspace; a webhook is the right tool when your own system has to know.

How a delivery works

1

An event fires

Somebody creates a record, submits a form, completes a task. Custral emits a domain event, which you can also browse under Settings → Events.
2

Custral matches your subscriptions

Every active subscription in the workspace whose event list matches is selected. One event can fan out to several endpoints.
3

A delivery is recorded, then queued

Each match gets a whd_… delivery row before anything leaves the building, so a delivery survives a worker restart.
4

Custral POSTs it, signed

The body is signed with your endpoint’s secret and sent with a 10 second timeout. Any 2xx is success. Anything else is retried.

What you can subscribe to

Nineteen events across records, forms, tasks, email, the chat widget and conversations, and every one of them actually emits. You can also subscribe with * for everything, or a prefix glob like record.*. See the event catalog for when each one fires and the exact payload it carries.
If an event you want is not on that list, tell us which one at hello@custral.com.

Start here

Quickstart

Register an endpoint and receive your first event.

Payload format

The envelope and the headers on every delivery.

Verify signatures

The one thing you must not skip.

Delivery and retries

What happens when your endpoint is down.