Webhooks: getting events in real time

The available events, how to verify the signature, and the delivery log.

Maintained by the Cool team · updated on 8/28/2026

Instead of polling the API, a webhook tells you when something happens.

Setting up

Under Integrations → API → Webhooks you register:

  • the URL that will receive;
  • the events you want;
  • and you get a secret, used to sign every delivery.

Available events

EventFires when
member.createdSomeone joined the community
member.removedSomeone left or was removed
payment.paidPayment confirmed
payment.refundedPayment refunded
subscription.updatedA subscription changed state
post.createdNew post in the feed
report.createdA report was opened
crm.contact.createdNew contact in the CRM
crm.stage.changedA contact moved stage
crm.note.addedA note was written on a contact
link.clickedA tracked link was clicked

Verify the signature. Always.

Every delivery is signed with HMAC SHA-256 using your secret. Without verifying, anyone who discovers your URL can send a fake payment.paid — and your system will grant access to someone who never paid.

Verify like this: recompute the HMAC of the raw body with your secret and compare it to the signature header. Different, discard.

Delivery log

Every attempt is recorded with the response code and the error, if any. That's how you find out your server was down at 3am — instead of finding out from a complaining customer.

Good practice

  • Respond fast (2xx) and process afterwards. A slow endpoint becomes a failed delivery.
  • Be idempotent: redelivery happens, and the same event can't become two grants of access.
  • Don't trust the body without verifying the signature.
Didn't solve it? Talk to us — your request gets a case number and you follow the reply in your account.Open a request