Webhook events
Webhook event: booking.created
The payload Cooledge sends when a booking is created.
Updated 17/06/2026
booking.created
Sent when a booking is created. Delivered to your webhook subscriptions. Deliveries are at-least-once, so dedupe on X-Cooledge-Event-Id.
Envelope
Every event shares the flat envelope: event_type, version ("v1"), event_id, business_id, occurred_at, plus the fields below. See the events overview for the envelope detail and webhooks for signature verification and delivery semantics.
Fields
| Field | Type | Notes |
|---|---|---|
booking_id | string | UUID of the new booking. |
job_id | string or null | UUID of the linked job, when one is set. Null otherwise. |
booking_type | string | The kind of booking, for example a site visit or a scheduled job. |
status | string | The booking status. |
starts_at | string or null | ISO 8601 timestamp the booking starts. Null when not set. |
ends_at | string or null | ISO 8601 timestamp the booking ends. Null when not set. |
staff_ids | array of string | The UUIDs of the staff users assigned to the booking. Empty when none are assigned. |
customer_id | string or null | UUID of the linked customer, when one is set. Null otherwise. |
notes | string or null | Notes on the booking. Null when there are none. |
external_ghl_contact_id | string or null | The matching GoHighLevel contact id, from the linked customer when one exists. |
external_ghl_opportunity_id | string or null | The matching GoHighLevel opportunity id, from the linked lead when one exists. |
customer_name | string or null | The customer's name from the live customer row. |
customer_email | string or null | The customer's email from the live customer row. |
customer_phone | string or null | The customer's phone from the live customer row. |
The customer_* and external_ghl_* fields are the shared correlation block, resolved from the live customer and lead rows.
Example
{
"version": "v1",
"event_type": "booking.created",
"event_id": "e1c2d8a2-6c47-4e09-9a51-2d7e0c4b8f63",
"business_id": "a7f3c9d1-2e84-4b6f-8c01-5d9e2a1f7b30",
"occurred_at": "2026-06-17T16:05:12.480Z",
"booking_id": "4a7e2c91-6b08-4a3f-bf52-1e0c4d8a9f63",
"job_id": "5c1a0e74-3d29-4b06-9f81-2e7a0c4d6b18",
"booking_type": "site_visit",
"status": "scheduled",
"starts_at": "2026-06-20T22:30:00.000Z",
"ends_at": "2026-06-21T00:00:00.000Z",
"staff_ids": [
"3b1c0e2a-7d44-4e91-9a2c-1f0b8e6d5a23",
"6d0e3c9f-2a87-4e7a-a15b-9c302f8d6b41"
],
"customer_id": "8c3e1a72-5d49-4b06-9f81-2e7a0c4d6b18",
"notes": "Confirm access with site manager before arrival.",
"external_ghl_contact_id": "x9TpL2mQ7sV4nB1k",
"external_ghl_opportunity_id": "pT8wK3rN6vM1jQ5d",
"customer_name": "Priya Nair",
"customer_email": "priya.nair@example.com",
"customer_phone": "+61498765432"
}
See webhooks for signature verification and delivery semantics, and all events.
Need a hand with an integration? Contact support