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
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
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 }});