> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://support.picktime.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Webhooks Documentation

# **WEBHOOKS&#160;**

## **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"
}
```
#### **&#160;**

#### **__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"
}
```
#### **&#160;**

#### **__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"
}
```
#### **&#160;**

#### **__When a class session is created__:&#160;**

```
{
  "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"
}
```
#### **&#160;**

#### **__When a class session is updated__:&#160;**

```
{
  "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"
}
```
#### **&#160;**

#### **__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"
}
```
#### **&#160;**

#### **__When a participant is added to confirmed or waitlist__:&#160;**

```
{
  "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"
}
```
#### **&#160;**

#### **__When a Resource Booking is created__:&#160;**

```
{
  "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.
