The same operations are available from the command-line tool and from an agent through the MCP server.
Who can manage endpoints
Organization Owners and Admins. An endpoint receives this Business Unit’s event stream, including names and email addresses. Registering one is the same class of decision as issuing an API key.Registering an endpoint
1
Open the drawer and choose Webhooks
The drawer’s Business Unit selector sets which unit the endpoint belongs to.
2
Add endpoint
- Endpoint URL — must be
https://. Plainhttp://is accepted only forlocalhost, for local development. - Description — optional.
- Events — select the event types this endpoint should receive. At least one is required. An endpoint with nothing selected receives nothing, not every event.
3
Copy the signing secret
Choose Deliveries on the endpoint. The signing secret is shown above the log and stays visible. The receiving server needs a copy to verify signatures. Unlike an API key secret, it can be viewed again.
4
Send a test
Send test queues a
webhook.ping event to this endpoint. It uses the same signature, retry, and log path as a real event.Event types
The list of subscribable events matches the triggers used by automations. A new trigger becomes a subscribable event when it is added.
The one automation trigger that is not a webhook event is Before the event starts: that is an automation timer, not a change to a person or an order.
Request format
OnePOST per event, Content-Type: application/json, user agent orriven-webhooks/1.0, with these headers:
The body is JSON with
id, type, createdAt, apiVersion, and data. Inside data, the event block is always present. registration, order, exhibitor, and contact are present when the event is about one of them and null otherwise — order.expired has no registration yet; survey.submitted has no order. Read type to know which blocks to expect.
- Amounts are integers in the currency’s minor units (
12000is 120.00 USD). registration.passUrlis the person’s hosted entry pass. A receiver ofregistration.confirmedhas the link without a second call.- A
webhook.pingtest carriesdata: { "endpointId": "…" }and nothing else.
Verifying the signature
Every delivery is signed with the endpoint’s secret in the Stripe scheme: the signed material is the timestamp, a dot, and the raw request body —t.body — and v1 is its hex HMAC-SHA256. Because the timestamp is inside the signed material, a captured delivery cannot be re-dated. Reject anything older than a few minutes to cover replays.
express.raw({ type: "application/json" }) and parse it only after the check. A body that has been parsed and re-serialized will not match.
Delivery and retries
- A response with any 2xx status within 10 seconds counts as delivered. Redirects are not followed and do not count. Re-register an endpoint that has moved.
- Anything else — a non-2xx status, a timeout, a DNS or TLS failure — is retried on a fixed schedule: immediately, then 1 minute, 5 minutes, 30 minutes, 2 hours, and 6 hours after the previous attempt. That is 6 attempts over roughly eight and a half hours. After the last attempt the delivery is marked Failed and only a manual resend follows.
- Delivery is at least once, not exactly once. Retries and resends carry the same
orriven-event-id; deduplicate on it. - Order is not guaranteed. A retried event can arrive after a newer one. Sort on
createdAtif sequence matters. - A failing endpoint never blocks or rolls back the registration or order that produced the event.
The delivery log
The endpoint list shows each endpoint’s URL, how many events it subscribes to, its Health — Delivering, N failures in a row, or Nothing sent yet — and whether it is Enabled or Disabled. Deliveries opens the log for one endpoint, newest first:
Resend on any row creates a new delivery carrying the original event id. The log still records that the first attempt failed. The receiving server can treat it as the same event. Edit events changes the subscription; only the events selected reach the endpoint from then on.
Disabling an endpoint
Disable stops deliveries at once. Anything still queued for that endpoint ends as Failed with the reason “Endpoint is disabled.” Enable turns it back on. An endpoint is never deleted — the row is the record that this integration existed, and its log stays readable.Webhooks in automations
The call a webhook action on the automation canvas can point at a registered endpoint instead of a bare URL. A registered endpoint gets the signature, the retry schedule, and the delivery log. A bare URL remains a one-shot call.Rules
- Endpoints are Business Unit-wide. There is no per-event subscription. Filter on
data.eventon the receiving side. - An empty subscription means nothing, not “all events”.
- The secret is shared and can be viewed again. It signs every delivery to that endpoint. If it leaks, register a new endpoint and disable the old one.
- Disabled, never deleted. Endpoint changes — creation, subscription edits, disabling, resends — are recorded in the audit log.
- The platform does not disable an endpoint. Repeated failures update the Health column. Stopping the integration is a console action.
Related
Developer tools
The drawer that contains the Webhooks tab.
Command-line tool
Register, ping, and resend from the terminal.
Automations
The same triggers, acted on inside the platform.
Agents
Endpoint and delivery tools on the MCP server.