Back

Receive webhook events

A webhook sends an HTTP POST when a selected event occurs. The receiving system must be configured before the endpoint can be useful.

Add a destination

  1. Open Settings → Security & data → Integrations → Event feed.
  2. Select Add a destination.
  3. Enter a label and public HTTPS address.
  4. Choose the events and save.
  5. Copy the signing key when shown and give it to the receiver securely.
EventTrigger
case.createdA case is opened
case.service_scheduledA service time is set or changed
obituary.publishedA notice is published
payment.receivedA payment is recorded

A rescheduled service can produce the same event type again. The endpoint receives events within its creator's scope.

Verify a delivery

The request carries these headers:

X-Funeral-Event: case.service_scheduled
X-Funeral-Delivery-Id: <delivery identifier>
X-Funeral-Signature: t=<unix seconds>,v1=<hex signature>

The signature is HMAC-SHA256 over <t>.<raw request body>, using the signing key.

The receiver must reject malformed signatures and timestamps outside its allowed tolerance. Compute the HMAC from the original bytes, then compare the signatures with a timing-safe comparison. Do not parse and reserialize JSON before hashing.

The JSON envelope contains id, event and data. Event data uses the corresponding API field vocabulary and excludes the protected certificate fields and internal notes.

Store, acknowledge and process

Store the verified delivery durably before returning a 2xx response. Process longer work afterward.

Use the delivery identifier to deduplicate retries. A response can be lost after your system has already processed the event.

Non-2xx responses and timeouts are retried. The retry delays are 1, 4, 9, 16 and 25 minutes after successive failures; actual delivery also depends on the worker schedule. After six failed attempts the delivery is marked dead.

The sender does not follow redirects. Use the final HTTPS address.

Investigate a missing event

Check Recent sends under the event feed. Confirm the destination is enabled, the event is selected and the creator still has access.

A dead delivery remains listed. The staff interface does not promise a manual replay action; reconcile the receiving system from the read API or contact support.

Disabling an endpoint is final. Create a new endpoint to replace its address or signing key. A 2xx response acknowledges receipt; it cannot write changes back to a case.

See Contact support for reports, attachments and help when you cannot sign in.