Webhooks Documentation
WEBHOOKS
Introduction:
Webhooks are a way to get notified about Booking Event changes in Picktime during real-time. They POST data to Endpoint URL when a specific event occurs. Webhooks push data automatically when the event is triggered, making them efficient for certain tasks.
Here’s an overview of webhooks, how they work, and how to implement them:
How Webhooks Work:
- Event Occurrence: A specific event happens in the Picktime Bookings (e.g., Customer books an appointment with Picktime or when a booking is created on the Picktime Calendar).
- Webhook Triggered: The event triggers the webhook.
- HTTP Request Sent: The webhook makes an HTTP POST request to a specified URL (the "webhook endpoint").
- Data Payload: The POST request carries a payload, typically in JSON, containing details about the event.
- Endpoint Receives Data: The receiving end server receives and processes the data, performing actions such as updating a database, sending a notification, etc.
Webhooks are powerful tools for real-time integrations. They can enhance the interaction between different web services to a great extent. Proper implementation and security practices are vital. They ensure your webhooks function without issues and maintain security.
Here are the different payload types that will be sent when Webhooks are subscribed:
For Service Bookings
- When a Service booking is created
- When a Service booking is updated
- When a Service booking is deleted
For Class Bookings
- When a Class session is created
- When a Class session is updated
- When a Class session is deleted
- When a Participant is added to confirmed or waitlist
- When a Participant is deleted from confirmed or waitlist
For Resource Bookings
- When a Resource Booking is created
- When a Resource Booking is updated
- When a Resource Booking is deleted
Here are the sample payloads that will be sent for each type of an event when Webhooks are subscribed:
When a Service appointment is created:
{
"dataObject": {
"videoMeeting": false,
"event_id": "3a639e77-9337-4407-babe-adcXXXXb2cb",
"account_id": "b7XX3-a25e-4ae1-8a0c-6aXXXX71",
"event_type": "appointment",
"event_duration": 75,
"padding_before": 0,
"padding_after": 15,
"booking_id": "D5XX5Z",
"price": 100,
"booking_notes": "Booking Notes Check",
"location_name": "Louisville",
"video_meeting": false,
"service_names": [ "Hair Cut" ],
"sub_service_names": [],
"team_member_name": [ "John Doe" ],
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"customer_name": "Dino Powlowski",
"paid": false,
"event_status": "new",
"start_date_time_gmt": 1732195800,
"end_date_time_gmt": 1732200300,
"free_event": false,
"all_day": false,
"unique_id": "1mB51IXXXXXXAXudsB",
"blocked": false,
"mobile_no": "16319055031",
"alt_mobile_no": "",
"email": "dino@example.com",
"address": "Guadalupe St",
"city": "Austin",
"state": "Texas",
"zip": "78155",
"cancel_url": "https://www.picktime.com/cancel/71XXd-6a9b-43dd-9798-6e3XXX7f"
},
"status": true,
"type": "CREATE"
}
When a Service appointment is updated:
{
"dataObject": {
"videoMeeting": false,
"event_id": "3aXXX77-9337-4407-babe-adcXXXXXcb",
"account_id": "b7XXX23-a25e-4ae1-8a0c-6acXXXX671",
"event_type": "appointment",
"event_duration": 75,
"padding_before": 0,
"padding_after": 15,
"booking_id": "D5827ONQ5Z",
"price": 100,
"booking_notes": "Booking Notes Check",
"location_name": "Louisville",
"video_meeting": false,
"service_names": [ "Hair Cut" ],
"team_member_name": [ "John Doe" ],
"resource_category_names": [ "Room1" ],
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"customer_name": "Dino Powlowski",
"paid": false,
"event_status": "new",
"start_date_time_gmt": 1732203900,
"end_date_time_gmt": 1732203900
"free_event": false,
"all_day": false,
"unique_id": "1mB51XXXXeAXudsB",
"blocked": false,
"mobile_no": "16319055031",
"alt_mobile_no": "",
"email": "dino@example.com",
"address": "Guadalupe St",
"city": "Austin",
"state": "Texas",
"zip": "78155",
"cancel_url": "https://www.picktime.com/cancel/11XXXca6-bfcc-4f4b-8007-d7XXXXc38"
"status": true,
"type": "UPDATE"
}
When a Service appointment is deleted:
{
"dataObject": {
"videoMeeting": false,
"event_id": "3XXX77-9337-4407-babe-adcXXXX2cb",
"account_id": "b7XX23-a25e-4ae1-8a0c-6aXXXX671",
"event_type": "appointment",
"event_duration": 75,
"padding_before": 0,
"padding_after": 15,
"booking_id": "D58XXX5Z",
"price": 100,
"booking_notes": "Booking Notes Check",
"location_name": "Louisville",
"video_meeting": false,
"service_names": [ "Hair Cut" ],
"team_member_name": [ "John Doe" ],
"resource_category_names": [ "Room1" ],
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"customer_name": "Dino Powlowski",
"paid": false,
"event_status": "new",
"start_date_time_gmt": 1732203900,
"end_date_time_gmt": 1732208400,
"free_event": false,
"all_day": false,
"blocked": false,
"mobile_no": "16319055031",
"alt_mobile_no": "",
"email": "dino@example.com",
"address": "Guadalupe St",
"city": "Austin",
"state": "Texas",
"zip": "78155",
"cancel_url": "https://www.picktime.com/cancel/1XXXa6-bfcc-4f4b-8007-d7XXXXac38"
},
"status": true,
"type": "DELETE"
}
When a class session is created:
{
"dataObject": [
{
"videoMeeting": false,
"event_id": "99XXX45-1706-440a-8af9-1f6dXXX55",
"account_id": "bXXX3-a25e-4ae1-8a0c-6ac2XXXX71",
"event_type": "class",
"event_duration": 30,
"padding_before": 0,
"padding_after": 0,
"total_slots": 4,
"booking_id": "EPXXXX0J9",
"slots_filled": 0,
"price": 100,
"location_name": "Louisville",
"video_meeting": false,
"service_names": [],
"team_member_name": [ "John Doe" ],
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"paid": false,
"event_status": "confirmed",
"start_date_time_gmt": 1732617000,
"end_date_time_gmt": 1732618800,
"free_event": false,
"all_day": false,
"unique_id": "4fi7rXXXXXlbKAdLJ",
"blocked": false
},
{
"videoMeeting": false,
"event_id": "eXXXXe0a-5cdb-4df0-a25a-8c6XXXX45c",
"account_id": "b7XXX23-a25e-4ae1-8a0c-6acXXXXX71",
"event_type": "class",
"event_duration": 30,
"padding_before": 0,
"padding_after": 0,
"total_slots": 4,
"booking_id": "G1K312XEX",
"slots_filled": 0,
"price": 100,
"location_name": "Louisville",
"video_meeting": false,
"service_names": [],
"team_member_name": [ "John Doe" ],
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"paid": false,
"event_status": "confirmed",
"skip_rec_appointments": false,
"start_date_time_gmt": 202411271600,
"end_date_time_gmt": 202411271630,
"free_event": false,
"all_day": false,
"unique_id": "7IoWhpQXXXXXxOyGS",
"blocked": false
}
],
"status": true,
"type": "CREATE"
}
When a class session is updated:
{
"dataObject": {
"videoMeeting": false,
"event_id": "99XXX45-1706-440a-8af9-1f6XXXX555",
"account_id": "b7XXX23-a25e-4ae1-8a0c-6aXXXX671",
"event_type": "class",
"event_duration": 30,
"padding_before": 0,
"padding_after": 0,
"total_slots": 4,
"booking_id": "EPXXXXM0J9",
"slots_filled": 0,
"price": 100,
"location_name": "Louisville",
"video_meeting": false,
"service_names": [],
"team_member_name": [ "John Doe" ],
"resource_category_names": [ "Room1" ],
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"paid": false,
"event_status": "confirmed",
"start_date_time_gmt": 1732624200,
"end_date_time_gmt": 1732626000,
"free_event": false,
"all_day": false,
"unique_id": "4fi7rcaAeXXXXXAdLJ",
"blocked": false
},
"status": true,
"type": "UPDATE"
}
When a class session is deleted:
{
"dataObject": {
"videoMeeting": false,
"event_id": "efXXXa-5cdb-4df0-a25a-8c6dbXXX5c",
"account_id": "bXXX423-a25e-4ae1-8a0c-6acXXXX671",
"event_type": "class",
"event_duration": 30,
"padding_before": 0,
"padding_after": 0,
"total_slots": 4,
"booking_id": "G1XXXEX",
"slots_filled": 0,
"price": 100,
"location_name": "Louisville",
"video_meeting": false,
"service_names": [],
"team_member_name": [ "John Doe" ],
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"paid": false,
"event_status": "confirmed",
"start_date_time_gmt": 1732703400,
"end_date_time_gmt": 1732705200,
"free_event": false,
"all_day": false,
"blocked": false,
"cancel_url": "https://www.picktime.com/cancel/c1XXX1-739e-4a1d-bb47-495XXXX865"
},
"status": true,
"type": "DELETE"
}
When a participant is added to confirmed or waitlist:
{
"dataObject": {
"videoMeeting": false,
"event_id": "9XXX345-1706-440a-8af9-1f6XXXX555",
"attendee_id": "99XXX45-1706-440a-8af9-1f6XXX555_137f113a-f905-4201-9d5b-cdXXXXef945",
"account_id": "b79XXX3-a25e-4ae1-8a0c-6aXXXf671",
"event_type": "class",
"event_duration": 30,
"padding_before": 0,
"padding_after": 0,
"total_slots": 4,
"booking_id": "EPVZM6M0J9",
"slots_filled": 1,
"price": 100,
"location_name": "Louisville",
"video_meeting": false,
"service_names": [],
"team_member_name": [ "John Doe" ],
"resource_category_names": [ "Room1" ],
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"customer_name": "Dino Powloski",
"paid": false,
"event_status": "confirmed",
"start_date_time_gmt": 1732624200,
"end_date_time_gmt": 1732626000,
"addnl_fields": "{\"BOOKING ADDITIONAL FIELD 1\":\"Booking Field Input\"}",
"free_event": false,
"all_day": false,
"blocked": false,
"mobile_no": "16319055031",
"alt_mobile_no": "",
"email": "dino@example.com",
"address": "Guandalupe St",
"city": "Austin",
"state": "Texas",
"zip": "78155",
"cancel_url": "https://www.picktime.com/cancel/8XXX995-4008-4be9-a67e-32XXXXb4d"
},
"status": true,
"type": "CREATE"
}
When a participant is deleted from confirmed or waitlist:
{
"dataObject": [ "9XX45-1706-440a-8af9-1f6XXX55_137f113a-f905-4201-9d5b-cdbXX5" ],
"status": true,
"type": "DELETE"
}
When a Resource Booking is created:
{
"dataObject": {
"videoMeeting": false,
"event_id": "aXXX03-c7b4-4c4e-a537-56XXXXX4",
"account_id": "b7XX23-a25e-4ae1-8a0c-6XXXX71",
"event_type": "resource",
"event_duration": 60,
"padding_before": 0,
"padding_after": 0,
"booking_id": "5DNXXXEO",
"price": 250,
"booking_notes": "BookingNotes123",
"location_name": "Louisville",
"video_meeting": false,
"sub_service_names": [],
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"customer_name": "Dino Powlowski",
"paid": false,
"event_status": "new",
"start_date_time_gmt": 1732289400,
"end_date_time_gmt": 1732293000,
"free_event": false,
"all_day": false,
"unique_id": "4x33XXXXXfrJ2H4O",
"blocked": false,
"mobile_no": "16319055031",
"alt_mobile_no": "",
"email": "dino@example.com",
"address": "Guadalupe St",
"city": "Austin",
"state": "Texas",
"zip": "78155",
"cancel_url": "https://www.picktime.com/cancel/e7XXd5-1f13-4d84-bb2d-edeXXXab1"
},
"status": true,
"type": "CREATE"
}
When a Resource Booking is updated:
{
"dataObject": {
"videoMeeting": false,
"event_id": "6eXXXe4e-bb38-468a-11aa-e3aXXXX71b",
"account_id": "bXXXX123-a25e-4ae1-8a0c-6aXXXXf671",
"event_type": "resource",
"event_duration": 60,
"padding_before": 0,
"padding_after": 0,
"booking_id": "DKXXX5Q",
"price": 250,
"location_name": "Louisville",
"video_meeting": false,
"resource_category_names": ["Room1"],
"resource_names": ["Meeting Room"],
"resource_linked": true,
"customer_name": "Richard Roe",
"paid": false,
"event_status": "new",
"start_date_time_gmt": 1732221000,
"end_date_time_gmt": 1732224600,
"free_event": false,
"all_day": false,
"unique_id": "3M4N3NXwyXXXX8GzTX",
"blocked": false,
"mobile_no": "",
"alt_mobile_no": "",
"email": "richard@website.com",
"city": "Austin",
"state": "Texas",
"zip": "73301",
"cancel_url": "https://www.picktime.com/cancel/5aXXbd-1dec-123d-8b47-a8XXXXXaf5"
},
"status": true,
"type": "UPDATE"
}
When a Resource Booking is deleted:
{
"dataObject": {
"videoMeeting": false,
"event_id": "a2XXX03-c7b4-4c4e-a537-567XXXXac94",
"account_id": "bXXX423-a25e-4ae1-8a0c-6aXXX671",
"event_type": "resource",
"event_duration": 60,
"padding_before": 0,
"padding_after": 0,
"booking_id": "5DNXXXEO",
"price": 250,
"booking_notes": "BookingNotes123",
"location_name": "Louisville",
"video_meeting": false,
"resource_names": [ "MeetingRoom" ],
"resource_linked": true,
"customer_name": "Dino Powlowski",
"paid": false,
"event_status": "new",
"start_date_time_gmt": 1732289400,
"end_date_time_gmt": 1732293000,
"free_event": false,
"all_day": false,
"blocked": false,
"mobile_no": "16319055031",
"alt_mobile_no": "",
"email": "dino@example.com",
"address": "Guadalupe St",
"city": "Austin",
"state": "Texas",
"zip": "78155",
"cancel_url": "https://www.picktime.com/cancel/eXX5d5-1f13-4d84-bb2d-edXXXbab1"
},
"status": true,
"type": "DELETE"
}
Updated on: 06/03/2026
Thank you!
