Prerequisites
- A valid Bearer token with admin access
- An HTTPS endpoint capable of receiving POST requests
- Organization context (
?o={organization_id})
- Creating Webhooks via the Admin Dashboard
- Creating a Webhook Subscription via API
The easiest way to set up webhooks is through the anny admin dashboard:
- Navigate to Organization Settings → API → Webhooks
- Click Create Webhook
- Enter your HTTPS endpoint URL, select the events to subscribe to, and save
Event Catalog
Bookings
Bookings
Orders
Orders
Invoices
Invoices
Customers
Customers
Subscriptions (Plans)
Subscriptions (Plans)
Timeslots
Timeslots
Communities
Communities
Payload Structure
Every webhook delivery is a POST request withContent-Type: application/json. The payload uses a normalized flat JSON format — not JSON-API.
Key differences from JSON-API
Included relations per entity
Included relations and fieldsets may vary by event. The table above shows typical inclusions.
Signature Verification
Every webhook request includes aSignature header containing an HMAC SHA-256 hash of the request body, signed with your subscription’s signing_key.
Verifying the Signature
Retry Policy
If your endpoint doesn’t respond with a2xx status code within 10 seconds, the delivery is retried:
After 3 failed attempts for a single event, that delivery is abandoned.
Auto-Deactivation
If deliveries fail repeatedly across events, the subscription’sfailure_count increments. After 5 consecutive failures, the subscription is automatically deactivated:
is_activeis set tofalsefailure_countresets to0- Organization admins receive a notification about the deactivation
Managing Subscriptions
List All Subscriptions
Update Events
Delete a Subscription
Best Practices
- Respond quickly — return
200immediately and process the payload asynchronously. The 10-second timeout is strict. - Handle duplicates — use
event_idto deduplicate. The same event may be delivered more than once on retries. - Verify signatures — always validate the
Signatureheader before trusting the payload. - Subscribe selectively — only subscribe to events you actually process to minimize traffic.
- Monitor
failure_count— periodically check subscription status to catch issues before auto-deactivation.
Normalized JSON via Accept Header
Webhook management endpoints (and all other APIGET endpoints) also support Accept: application/json to receive the same flat/normalized format used in webhook payloads.
data.attributes, matching the webhook payload structure.
POSTandPATCHrequests must still useContent-Type: application/vnd.api+jsonwith standard JSON-API format.