Where do I find it?
CONFIGURATION > SYSTEM & SETUP > General booking settings
What does it mean?
This article details a new feature designed to enhance booking integrity by preventing the cancellation of services that have already been partially or fully redeemed by the customer.
This update introduces a new configuration setting and leverages a new webhook event to provide real-time status checks before a cancellation is processed.
The subsystem connected with TourCMS must be configured to handle this webhook event.
The new configuration setting
A new setting, "Block cancellations on already redeemed bookings," has been added to prevent the cancellation of any booking that has one or more redeemed components.
Location: Configuration > System & Setup > Bookings General Settings
admin.tourcms.com/admin/settings/bookings/settings_booking_general.php
Default status: This setting is enabled by default on all accounts.
Purpose: The system will now check the redemption status of all components (e.g., tickets, tours, or hotel nights) before allowing a booking cancellation.
The check_booking_status webhook event
This new feature works in conjunction with the check_booking_status inline webhook event.
Function: This synchronous (inline) webhook is responsible for requesting the most current component redemption status directly from your subsystem. This ensures the redemption status within TourCMS is always up-to-date before any cancellation is attempted.
Scope: The webhook is designed to retrieve component data exclusively for tours, hotels, and freesale bookings.
What should I do?
To utilise this new feature and ensure your system can properly communicate redemption statuses, you must configure a new inline booking webhook.
Configure the inline booking webhook
Navigate to Configuration > System & Setup > Booking Webhooks.
-
Press Create new booking webhook.
Select Synchronous (Inline) Webhook.
Input the Webhook URL for the subsystem that will handle the status check requests.
Ensure the new event,
check_booking_status, is selected and enabled within the webhook configuration. This is crucial as it triggers the request to your subsystem for the latest redemption data.
Define the appropriate channels and bookings that the webhook should have access to.
Save the configuration.
For detailed instructions on setting up an inline webhook, please see the Inline/Synchronous Booking Notification Webhook (article).
Subsystem expected behaviour
Once the setting is enabled and the webhook is active, the following behaviour is expected during API and Expedia interactions:
Scenario |
System action |
Error code/ Message |
API: Show booking |
On every call, TourCMS checks the subsystem for updated redemption status and refreshes the internal status if needed. |
Returns |
API: Cancel booking |
TourCMS retrieves the latest status, checks the new setting, and blocks cancellation if redeemed components are present. |
Returns |
Important Note:
If the "Block cancellations on already redeemed bookings" setting is not enabled, the check_booking_status webhook will be ignored, and cancellations will proceed based on the previous logic.
Subsystem response sample
Your subsystem must respond to the check_booking_status request with the redemption status of the components.
{
"text": "Optional message",
"cancelled": false, // Note: This field is currently ignored by Core.
"components": [
{
"component_id": "1234",
"redeemed": true
},
{
"component_id": "1235",
"redeemed": false
}
]
}
The system will update the booking status in TourCMS based on the redeemed status provided for each component ID.