1) Create a webhook subscription
secret securely; you need it to verify signatures.
Events (common):
booking.created,booking.updated,booking.cancelledinvoice.created,invoice.updated,invoice.paid,invoice.failedpayment.failed(if applicable)
2) Receive events
2xx quickly; handle work asynchronously.
3) Verify signatures
- Compute an HMAC (SHA-256) using the shared
secretand the raw request body. - Compare to the
v1hash in theBoseat-Signatureheader and reject mismatches. - Allow small clock skew (a few minutes) when validating timestamped signatures.
4) Retry behavior
- Boseat retries failed deliveries with exponential backoff.
- Ensure your handler is idempotent: use the event ID to de-duplicate.
5) Test locally
- Use an HTTPS tunnel (e.g.,
ngrok) to expose your local server and validate signature handling.