A booking ID is a unique identifier for a specific Scheduler booking. A Configuration ID and booking ID are required to use all Bookings endpoints, and to use the Availability endpoint for round-robin events.
Configuration IDs and booking IDs are in the following standard UUID format, where x
represents a hexadecimal digit:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
The section beginning with M
indicates the UUID version (1
, 2
, 3
, 4
, or 5
), and the section beginning with N
indicates the variant (most commonly 8
, 9
, A
, or B
).
To retrieve a booking ID, you need to decode its booking reference. Scheduler creates a booking reference by combining a booking’s Configuration ID and booking ID with a salt. You can find the booking reference in the URL for rescheduling or cancellation pages, or by subscribing to Scheduler webhook triggers.
Decode booking reference
Section titled “Decode booking reference”Follow these steps to decode a booking reference:
- Use a Base64 decoding function to convert the encoded string to a byte array. This array contains the concatenated bytes of the two original UUIDs, along with a salt.
- Extract the UUIDs from the byte array. Each UUID should be 16 bytes long.
- Extract the remainder as the salt.
- Insert hyphens to convert each 16-byte segment to the original UUID format. The first string is the Configuration ID, and the second is the booking ID.
- Replace all
+
and/
characters with-
and_
, respectively. This converts the extracted salt to a URL-safe Base64 string.
The following code shows one way to decode a booking reference using JavaScript.
export function compactStringToUUIDs(compactString) { // Decode the Base64 string to a buffer. const buffer = Buffer.from(compactString, 'base64');
// Extract UUIDs (16 bytes each). const uuidBytes1 = buffer.slice(0, 16); const uuidBytes2 = buffer.slice(16, 32);
// Extract the remainder as the salt. const salt = buffer.slice(32);
// Function to convert a buffer to UUID string format. function bufferToUUID(buffer) { const hex = buffer.toString('hex'); return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`; } // Convert buffers to UUID strings. const uuid1 = bufferToUUID(uuidBytes1); const uuid2 = bufferToUUID(uuidBytes2);
// Convert salt buffer to URL-safe Base64 string. const b64EncodedSalt = salt.toString('base64').replace(/\+/g, '-').replace(/\//g, '_');
return [uuid1, uuid2, b64EncodedSalt];}
Extract booking references from Scheduling Component
Section titled “Extract booking references from Scheduling Component”The Scheduling Component emits a bookingRefExtracted
event when you pass one of the following properties:
cancelBookingRef
organizerConfirmationBookingRef
rescheduleBookingRef
You can listen for the bookingRefExtracted
event to retrieve booking IDs.
schedulingComponent.addEventListener('bookingRefExtracted', (e) => { console.log(e.detail); // { configurationId: rescheduleConfigId, bookingId: rescheduleBookingId }});