Preventing cancellations for redeemed bookings

Blanca Castillo
Blanca Castillo
  • Updated

Where do I find it?

CONFIGURATION > SYSTEM & SETUP > General booking settings

ddd0d9fc-5528-4df9-b44b-2809b0d787fb.png

 

 

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

a22070d7-0f38-400e-b7a6-3f483125511d.png

 

  • 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.

 
c90e8dda-535b-4265-bb14-138587a30432.png

 

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

  1. Navigate to Configuration > System & Setup > Booking Webhooks.

  2. Press Create new booking webhook. 583387c7-16e1-4a1e-8ef1-04a8111b850a.png

     
  3. Select Synchronous (Inline) Webhook.c8a3e4ea-6557-4ef6-b9d0-de8b1df9c437.png

 

 

  1. Input the Webhook URL for the subsystem that will handle the status check requests.4256aaa5-bdeb-4167-a7c2-443e0696e404.png

 
  1. 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.3187265b-fffb-42b5-850b-62ad740549fe.png

 
  1. Define the appropriate channels and bookings that the webhook should have access to.b401ac91-547d-4333-b8b7-04b53f6360a7.png

 
  1. Save the configuration.fdd2ed15-46d3-4996-bbe5-07640c94d326.png

 

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 UNABLE_TO_OBTAIN_LATEST_BOOKING_STATUS_FROM_SUBSYSTEM if the subsystem status cannot be retrieved.

API: Cancel booking

TourCMS retrieves the latest status, checks the new setting, and blocks cancellation if redeemed components are present.

Returns BOOKING_ALREADY_REDEEMED if the cancellation is blocked.

 

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.