Skip to content
Extending Kemble

Webhooks

Subscribing to domain events, verifying the signature, and what happens on failure.

Register a webhook against an organization and subscribe it to one or more event types. Deliveries are signed with HMAC; verify the signature before trusting the body.

Event types

  • message.created — A message is posted
  • message.updated — A message is edited
  • message.deleted — A message is deleted
  • reaction.added — Somebody reacts to a message
  • channel.created — A channel is created
  • space.created — A space is created
  • member.joined — Somebody joins
  • member.left — Somebody leaves or is removed
  • channel.went_quiet — A channel has had no messages for a while

Payloads are deliberately narrow — identifiers, plus the few fields a consumer cannot look up without another round trip. A webhook body is a public contract with every customer who ever subscribed, and widening one later is easy while narrowing one is a breaking change.

A destination that keeps failing is disabled automatically. Read its recent attempts at GET /api/webhooks/:webhook/deliveries, fix the endpoint, and resume it with PATCH /api/webhooks/:webhook and isActive: true — the failure count is measured from the moment you resume, so a fixed destination is not disabled again by the failures that preceded the fix. The id and the signing secret are kept.