The Easy Appointment Booking API and webhooks let you connect booking data to your own systems, dashboards, CRM, spreadsheets, or automation tools.
API access
The v1 API is an early preview for Enterprise planholders and is currently invite-only. It can help you:
Retrieve booking data programmatically.
Look up the Shopify order and customer connected to a booking.
Build a custom integration or reporting dashboard.
Create, reschedule, and cancel bookings from your own system.
If you are on Enterprise and want access, contact support to discuss your use case and onboarding. API access is separate from the webhook setup below.
What you can reach
Resource | What it covers |
Bookings | List, read, create, update, reschedule, cancel, remind, and send a follow-up. |
Events | List and read your services, their booking options, and their open slots. |
Availability | List, create, and update availability, and assign it to a booking. |
Locations | List and read your locations. Read-only. |
Reports | Peak-hours report. |
Me | Confirm which shop a key belongs to. |
Locations
Every booking and event carries a locationId. Use GET /api/public/v1/locations to resolve that id to a name and address, and GET /api/public/v1/locations/{id} to read one.
Locations are read-only over the API. Create and edit them in Settings > Locations in the app.
Rate limits
The API allows 10 requests per second per shop. This is a shared budget: every key for the same store draws on it.
Every response carries the current state of your budget:
Header | Meaning |
| Requests allowed per second. |
| Requests left in the current window. |
| When the window resets. |
Go over the limit and the request is refused with HTTP 429 and a RATE_LIMITED error code:
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit of 10 requests per second exceeded"
}
}
A 429 also carries a Retry-After header telling you how many seconds to wait.
đĄ Tip: Read X-RateLimit-Remaining and slow down before you hit zero, rather than waiting for a 429. If you are backfilling a lot of data, run the job in series instead of in parallel.
What webhooks do
A webhook sends an HTTP POST request to a URL you control whenever a booking event occurs. This lets another tool react immediately when a booking is created, cancelled, rescheduled, updated, or checked in.
Common uses include:
Adding new bookings to a CRM.
Sending a message to Slack, Teams, or another internal tool.
Logging booking data in Google Sheets or a database.
Triggering a custom email or follow-up workflow.
Webhooks send booking events, not live availability or schedule data.
Set up a webhook
In Easy Appointment Booking, go to Settings > Webhooks & API.
Enter the destination URL supplied by your own system, Zapier, Make, or another automation platform.
Click Save.
Webhooks require the Ultimate plan. You need a destination URL that can receive JSON POST requests.
Events and payloads
The event name identifies what happened. Common event names include:
booking.createdbooking.cancelledbooking.rescheduledbooking.updatedbooking.checked_inbooking.no_showbooking.reminderpackage.purchased
Each request includes an event field and a data object. The data can include the booking ID, Shopify order ID, customer details, selected variant, attendees, date and time, event details, assigned availability, and package information when applicable.
{
"event": "booking.created",
"data": {
"booking_id": "BOK123",
"order_id": "12345",
"event_name": "Consultation Call",
"start_date": "2026-12-11",
"start_time": "10:00 AM",
"timezone": "America/New_York"
}
}
Test your webhook
Create a test endpoint with a tool such as Zapier, Make, or a request inspector.
Paste its URL into Settings > Webhooks & API and save.
Create a test booking or reschedule an existing booking.
Check the destination tool to confirm that the payload arrived.
â ď¸ Warning: Keep your webhook URL private. Make sure your receiving system handles failures and protects customer data. If you use a platform such as Zapier or Make, use its retry and logging tools to monitor delivery.
