Gymdesk signs every outbound webhook to the Standard Webhooks specification. Verify the signature before you trust a payload. Libraries that follow that specification work unchanged. Your signing secret starts with whsec_. The rest is base64 key material. Gymdesk signs the string {id}.{timestamp}.{body}, where id is the webhook event ID and body is the exact raw request body. The signature is v1, followed by the base64 of an HMAC-SHA256 over that string.
Verify the raw body before you parse it. If you re-serialize the JSON first, the bytes change and the signature no longer matches.
Every event carries the same envelope: id, event, occurredAt, actor, and data. actor is one of member, manager, or system. The Endpoints tab lists each event and its payload.