Articles on: FAQ

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"
}


Conclusion: Webhooks in Picktime enable seamless real-time event notifications, allowing businesses to automate workflows efficiently. By subscribing to relevant events and processing webhook payloads properly, businesses can optimize their booking management system. Ensure proper security practices, such as validating incoming webhook requests, to maintain data integrity and security.


Updated on: 06/03/2026

Was this article helpful?

Share your feedback

Cancel

Thank you!