Webhooks
Webhooks notify you about changes to a branch, its team and its subscription — not about orders.
Setting up an endpoint
Webhook endpoints are configured in the Manager under Manager → Settings → Developers & integrations → Webhooks, not through the API key. The same place has the delivery log (with retry) and the signature-verification guide. Each endpoint gets its own secret, generated when you create it.
Payload
Each delivery is a JSON body with an event field naming the event, plus the related record when there is one:
{
"event": "BranchMemberAdded",
"member": { "id": 42, "name": "Jamie", "email": "jamie@example.com" }
}Verifying signatures
Every delivery is signed with HMAC-SHA256 over the JSON payload, using your endpoint's secret. Verify the Signature header before trusting the body.
import { createHmac, timingSafeEqual } from "crypto";
const expected = createHmac("sha256", endpointSecret)
.update(rawBody).digest("hex");
if (!timingSafeEqual(Buffer.from(signatureHeader), Buffer.from(expected))) {
return new Response("Invalid signature", { status: 401 });
}Event catalog
There is no order, payment or menu event yet — only branch, team-membership and subscription changes.
Retries
A non-2xx response is retried up to 3 times total with exponential backoff. There is currently no delivery-id header for deduplication, so make your handler idempotent on the event content itself.