Webhooks

React to donations, registrations, and more in real time.

Webhooks deliver events to a URL you control. Use them to sync donations to QuickBooks, post to Slack on new registrations, or trigger any custom workflow.

Configuring an endpoint

  1. Open Settings → Webhooks → New endpoint.
  2. Paste your URL (must be HTTPS).
  3. Pick the events you want to subscribe to.
  4. Save and copy the signing secret.

Verifying signatures

Every payload is signed with HMAC-SHA256. Verify the signature with the secret to confirm authenticity:

import crypto from "node:crypto";
const expected = crypto
  .createHmac("sha256", secret)
  .update(rawBody)
  .digest("hex");
if (expected !== req.headers["x-masjiddesk-signature"]) {
  return new Response("invalid", { status: 400 });
}

Retries

Non-2xx responses are retried with exponential backoff for up to 24 hours. After that, the event is marked failed and visible in the dashboard for manual replay.