Overview
Webhooks allow your application to receive real-time notifications when data changes in BookingShake. Instead of polling the API for updates, BookingShake automatically sends HTTP POST requests to your specified endpoint whenever an account or contact is created, updated, or deleted. Why use webhooks?- Real-time updates: Receive notifications instantly when data changes
- Reduced API usage: No need to continuously poll for changes
- Efficient: Only get notified about events you care about
- Scalable: Build reactive integrations that sync data automatically
- Sync contacts and accounts to external CRM systems (Salesforce, HubSpot, etc.)
- Trigger automated workflows when new contacts are created
- Update analytics dashboards in real-time
- Maintain data consistency across multiple platforms
Quick Start
1
Access Webhook Settings
In your BookingShake dashboard, go to Settings > Integrations and scroll to the Webhooks section.
2
Create a Webhook
Click New Webhook and configure:
- Name: A descriptive name for your webhook (e.g., “CRM Sync”)
- URL: Your HTTPS endpoint (e.g.,
https://api.yourdomain.com/webhooks/bookingshake) - Events: Select which events to receive (see available events below)
3
Save and Copy Secret
After saving, copy the webhook secret. You’ll need it to verify webhook signatures for security.
4
Test Your Webhook
Create or update a contact or account to trigger a test webhook delivery.
Available Events
BookingShake supports six webhook events:| Event | Description | Triggered When |
|---|---|---|
account.created | New account created | A company is added to your venue |
account.updated | Account modified | Company information is updated |
account.deleted | Account removed | A company is deleted |
contact.created | New contact created | A person is added to your venue |
contact.updated | Contact modified | Contact information is updated |
contact.deleted | Contact removed | A contact is deleted |
You can subscribe to multiple events in a single webhook. Select only the events you need to reduce unnecessary traffic.
Webhook Payload Structure
All webhooks follow this consistent structure:Payload Fields
| Field | Type | Description |
|---|---|---|
event | string | The event type (e.g., contact.created) |
timestamp | number | Unix timestamp in milliseconds when the event occurred |
venue_id | string | The venue ID where the change happened |
venues_group_id | string | null | The venues group ID if applicable |
data | object | Event-specific data containing the resource details |
Event Examples
Contact Created
Triggered when a new contact is added to your venue.Contact Updated
Triggered when contact information is modified. Contains all contact data after the update.Contact Deleted
Triggered when a contact is removed. Only includes the contact ID.Account Created
Triggered when a new account (company) is added to your venue.Account Updated
Triggered when account information is modified. Contains all account data after the update.Account Deleted
Triggered when an account is removed. Only includes the account ID.HTTP Headers
Each webhook request includes these headers:Header Details
| Header | Description |
|---|---|
Content-Type | Always application/json |
User-Agent | Identifies the request as coming from BookingShake webhooks |
Bookingshake-Signature | HMAC SHA256 signature for verifying authenticity (see Security) |
Idempotency-Key | Unique UUID for this delivery attempt - use to prevent duplicate processing |
Custom Fields
Webhooks include custom fields configured for your venue. Custom fields are prefixed withcustom_ followed by a UUID:
Custom field values can be strings, numbers, arrays, or objects depending on your field configuration.
Venue vs Venues Group Webhooks
When creating a webhook, you can choose the scope: Venue-level webhooks: Receive events only for a specific venue- Use when you want separate webhook endpoints per venue
- Useful for venue-specific integrations
- Use when you want a single endpoint for multiple venues
- More efficient for managing multi-venue organizations
- The
venue_idfield identifies which venue triggered the event
Next Steps
Security & Verification
Learn how to verify webhook signatures and implement security best practices
Error Handling
Understand error codes and how to handle failures
API Reference
Explore the BookingShake API for additional functionality
Support
Contact our support team for assistance
Rate Limits and Delivery
Delivery timeout: Your endpoint must respond within 5 seconds with a
200-299 status code.Retry policy: Failed deliveries are automatically retried up to 10 times with exponential backoff.Status monitoring: Check your webhook status in the dashboard to track delivery success and failures.