Skip to main content
A webhook sends an HTTP POST to your endpoint when an event happens in your Doris workspace. Each workspace can have up to 10 webhooks. A webhook subscribes to one or more event patterns.
Webhooks are not offered. The Doris app has no webhook settings, so you cannot add a webhook yourself. Webhooks that already exist continue to deliver. To change or remove one, contact support@meetdoris.com.

Rules for the endpoint

  • The URL must use HTTPS.
  • The URL must not point to a private, internal or metadata address. Doris checks this when you create the webhook and again before each delivery.
  • Your endpoint must reply within 10 seconds.
  • A 2xx status means the delivery succeeded. Doris ignores the response body.

Events

A pattern is an event type or a glob. For example, deal.* matches every event whose type starts with deal.. deal.* also matches other deal. events, for example deal.meeting_processed and deal.stakeholder_changed. Doris does not send events that come from a personal flow run. Events from workspace flow runs are sent.

Payload

Every delivery is a JSON object with these keys:

Example: stage change from a CRM

A CRM stage change records the field stage_name.

Example: meeting processed

data keys for each event

A key can be missing or null when the source did not supply it. Only HubSpot fills changed_fields on deal.updated.

Headers

Verify the signature

Each webhook has a signing secret that starts with whsec_. Doris shows the secret once, when you create the webhook. Compute the HMAC-SHA256 of the raw request body with the secret as the key. Compare the result with X-Doris-Signature.
Use the raw body bytes. If you parse the JSON and serialize it again, the signature does not match. Signature checks are optional. A tool such as n8n, Power Automate or Zapier can accept the JSON body without a check.

Retries

Doris makes up to 3 attempts for each delivery. A timeout, a network error or a status that is not 2xx counts as a failure. After attempt 3 fails, the delivery stops. If the URL points to a blocked address at delivery time, the delivery fails at once, with no retry. A job checks for due retries every 60 seconds, so a retry can come up to a minute late.

Test event

A test sends this body to your endpoint, with the X-Doris-Signature and X-Doris-Event headers. A test has no X-Doris-Delivery header.