Retrieve booking IDs
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 }
});