Skip to main content

September 30th, 2026 | TripBuilder Release Notes v382

Written by Product Management

We are happy to announce our latest TripBuilder release. Please see these release notes for the most significant changes. Let us know if you have any questions, feedback, or ideas for features or improvements!

.DISCOVERY

Full-screen photo viewer for hotel galleries

Hotel detail pages in the new hotel only flow now open a full-screen photo viewer when you click a gallery image, letting you browse every photo of the hotel — not just the first five. Navigate with arrows, thumbnails, or your keyboard.

NTP-70076

.PLANNER

Filter hotel search results by property and room amenities

Hotel-only search flow now supports filtering by property and room amenities (e.g. pool, wifi, kitchen), so users can narrow results to hotels that have exactly what they’re looking for.

NTP-69758

.SMART PLANNER

Fixed hotel meal info incorrectly showing “No meals included”

Hotel recommendation cards and the hotel details view sometimes showed “No meals included” even when a meal plan like breakfast was part of the offer. This is now fixed — Smart Planner displays the correct meal information for every hotel offer.

NTP-69844

Fixed “Customise” on multi-day activities falling back to the wrong view

“Customise” on a multi-day activity used to silently jump to the “Change activity” list instead of showing its details, due to a failed request. It now correctly shows the activity details, with a clear error message if loading ever fails.

NTP-70087

“Scheduled” and “Time set later” tags on ground transport offers

Ground transport offers now show whether pickup time is fixed (“Scheduled”) or confirmed later by the agent/supplier (“Time set later”), with a clear message replacing the timeline for on-request offers.

NTP-69143

.COCKPIT

Rental cars support per-day markup

We've added a "per day" markup option only for rental car components in the Cockpit markup editor and default markup table, alongside the existing percentage, per-booking, and per-pax options.

Users now set a rental car markup that scales with rental duration instead of only as a flat percentage or fixed amount.

Existing rental car markup configurations are unaffected and remain visible and applicable as before.

NTP-68969

Cancellations with a permanently-failed component are now visible in Cockpit

When a cancellation completes despite one or more components permanently failing to cancel at the supplier, Cockpit now records what happened: an itinerary audit entry, a note listing the affected components, and a system event with the underlying technical error.

Previously the only signal was a "cancellation failed" email that was immediately followed by a second "cancellation confirmed" email, with no persistent record anywhere that a component was still booked at the supplier.

This applies to distribution channels using the "Ignore Failed Cancellations" setting, where a full itinerary cancellation is allowed to complete even when some components couldn't be cancelled.

NTP-69705

Component Status Report and On Request queue no longer duplicate or misreport statuses

We improved an area of Customer Care with issues where a booking change could leave stale rows behind in the Cockpit Component Status Report and the Components > On Request queue with the same component showing twice, or showing an outdated status that didn't match the itinerary itself.

In the main each component now appears once, with the status the itinerary detail view already shows. We have some small follow up scenarios we continue to work on.

NTP-69870

Configure a fixed promo code on templates

Template creators can now attach a fixed promo code to a template. At checkout, customers simply check a box to self-declare and apply it — no manual code entry needed. Available per company via a new merchant setting.

NTP-68788

.APIs

Booking API no longer fails on a component dated on a daylight-saving changeover day

Fixed a Booking API crash affecting bookings with a manually added component whose date falls on a day when the destination's local midnight doesn't exist because of a daylight-saving transition — for example, Egypt's spring-forward date. The API now serialises these dates correctly instead of returning a server error.

NTP-69926

Booking API enhancements

Integrators relying on the Booking API for language rendering or supplier reconciliation get more complete and accurate data as a result.

We introduced a new ?lang=itinerary option returns booking content in the itinerary's own preferred language in a single call, instead of requiring an extra request just to discover it.

And externalReferences, which are used to reconcile supplier IDs, are now included on components inside booking history, including cancelled ones.

NTP-67650, NTP-67649

Distribution channel now available on Planner API itinerary responses

The Planner API now returns the distribution channel that owns an itinerary — including for itineraries still in planning, before booking. This lets integrators theme documents and content correctly earlier in the process.

NTP-69465

More amenity and pricing detail on activity offers via the API

The activities/offers API endpoint now returns amenity details, inclusion policy, and pricing dimensions (per pax/group, per stay/night) — matching what’s already available on the activities endpoint.

NTP-60501

Rental car search, offers & vehicle details now available via API

The product API now supports rental cars — search, offers and vehicle details — covering supplier, filters (transmission, kitchen, bathroom, and more), and vehicle types.

NTP-69209

.INTEGRATIONS

Rental car search results now show the supplier name for Alamo and Sunnycars

We now return the rental brand name (for example Alamo, National or Enterprise) on Alamo offers, and the rental company name on Sunnycars offers, through the Product API. Previously these offers carried no supplier name, so searches filtered by supplier could never match them.

An unknown Sunnycars offer reference now returns a proper not-found response instead of a generic error, so partner integrations can tell a missing offer apart from a real failure.

NTP-70263

Travel Exchange search no longer returns tours that can never be booked for the selected room

We fixed Travel Exchange activity search so it no longer lists tours that room availability always rejects. Previously, searching with 3 or 4 travelers in one room could return tours that failed with "this activity is not available anymore" the moment an agent tried to select one.

Search now filters out tour dates that don't offer the required room type, so agents only see tours they can actually book.

NTP-69393

Expedia hotel content updates land faster overnight

We rewrote a slow text-conversion step in the nightly Expedia hotel import, cutting run time by roughly 44%. The previous version scaled poorly with long hotel descriptions, and the import was taking about 10.5 hours.

Other importers that share the same conversion step, such as GIATA, benefit from the same speed-up. Imported content itself is unchanged — only the processing time improved.

NTP-70088

Flight bookings from TravelFusion now return the correct PNR

We now populate the pnrLocator field with the supplier's own booking reference on Connect API transport bookings from TravelFusion, instead of leaving it empty. The booking ID field continues to carry TravelFusion's own reference.

This lets partner integrations reliably retrieve and refresh the PNR for TravelFusion bookings through the Connect API.

NTP-70072

Expedia hotel photos are now labeled with the room they show

We now title Expedia hotel pictures with the name of the room they belong to, for example "Apartment, 2 Bedrooms, Terrace." Previously these pictures carried only a generic caption such as "Room," or no caption at all.

Pictures that aren't tied to a specific room keep the best available label from Expedia's own content.

NTP-70016

Accommodation content rules now narrow hotel search results earlier

We now apply accommodation content rules for hotel star rating, guest rating, country, and area directly on the hotel search itself, rather than only after candidates have already been retrieved. Previously, a strict rule (for example, requiring hotels rated 4 stars and above, or restricted to a specific country or area) could discard most of the fetched candidates after the fact, so agents sometimes saw fewer or lower-quality options than the inventory actually had available.

With the rules applied earlier, the search retrieves hotels that already satisfy them whenever possible, so agents see a more complete and relevant set of results. The existing check after the search still runs as a safeguard, so nothing that should be filtered out can slip through.

NTP-69155, NTP-69620, NTP-69910, NTP-69970

Hotel add and replace is reliable again on TravelGateX-connected channels

We fixed a configuration error that set the TravelGateX quote timeout to 19 milliseconds instead of 20 seconds, which made every hotel add or replace attempt fail with "not available" on TravelGateX-connected distribution channels.

The timeout is now correctly set, and hotel selection in the planner and at checkout works as expected again.

NTP-69913

Checkout availability checks no longer fail outright when a supplier takes too long to respond

Checking availability during checkout for accommodation bookings routed through TravelGateX could return a generic failure if the supplier's response took longer than our internal deadline. Bookings were blocked outright with no way for the agent to continue, even though other suppliers timing out on the same screen were already handled by marking the affected item unavailable and letting the agent replace it.

We now handle a slow TravelGateX response the same way we handle other supplier failures on this screen: the affected component is marked unavailable so the agent can swap it out and continue the booking, instead of the whole checkout failing.

NTP-69887

Accommodation properties without guest rating data now import correctly

Some accommodation content we receive through the Connect API does not include guest rating information for every property. Our import previously treated ratings as a required field, so a property missing this data could fail to import even though nothing else was wrong with it.

We no longer require ratings on import, so properties without guest rating data are added to the catalogue as expected.

NTP-69889

Hotel location details now show the correct country name for AlliedTPro properties

The Location panel on AlliedTPro hotel detail pages was showing a raw text key, such as "enum.country.United States", instead of the country name. This also meant country-based content rules never matched AlliedTPro hotels, since the system was not storing a recognized country code for them.

We fixed how the country is imported, so the Location panel now shows the correct country name and country-based content rules apply correctly to AlliedTPro properties.

NTP-69672

Star ratings now display for AlliedTPro hotels

AlliedTPro hotel cards in search results and detail pages were showing no star rating, even when the same property already had a rating on file elsewhere. This made it hard for agents to compare AlliedTPro hotels against other options.

Star ratings now display correctly for AlliedTPro hotels throughout search and details. Amenity icons for these properties remain out of scope for now and are tracked separately.

NTP-69671

Flight bookings through TravelFusion are less likely to fail when supplier confirmation is slow

TravelFusion booking confirmations can occasionally take longer than our system previously allowed, which meant the booking request could time out before we knew the real outcome. We now keep checking for a result in the background after responding, and confirm the final booking outcome once it is available, in line with what TravelFusion's certification requires.

This does not change how quickly a normal booking completes; it only affects the small number of cases where supplier confirmation is unusually slow.

NTP-70074

Trip creation from a selected flight no longer crashes outright when fare verification is slow

Creating a trip from a selected SOFTCONEX flight offer runs a live fare check with the supplier before the trip is created. When that check took longer than our internal limit, the request failed with an unclear error and no trip was created.

We now handle this case the same way as other supplier failures: the trip is created with the flight marked as unavailable so the agent can recheck or retry, instead of the request failing outright. This does not address the underlying supplier response time itself, which remains a separate, ongoing investigation.

NTP-69959

Koob room configurations for children now select correctly

We fixed how Koob's child-inclusive room configurations are handled in TripBuilder. Rooms that include a child could previously appear in the room selection list but could not be selected, and the number of adults shown for the room was inflated by one for each child in it.

Room configurations are now selectable whenever a searched child's age is at or below the maximum age Koob sets for that room, matching how the Connect API defines the field. Adult and child counts shown for each room now match exactly what Koob sends.

NTP-69700, NTP-69618

Fixed selecting TravelExchange multi-night packaged tours

We fixed an issue where selecting certain TravelExchange multi-night packaged tour activities failed with an "Updating activity failed" error. The request TripBuilder sent to TravelExchange for these products was missing required room allocation information, which TravelExchange needs to calculate a price.

Agents can now select these multi-night tour activities without errors. This fix covers the Select action in the activity list; the same products failing during template-based itinerary creation is tracked separately.

NTP-67214

Costa Cruises activities added to templates now appear correctly for travellers

We fixed an issue where a Costa Cruises activity added to a module or template did not appear in the Travel Planner once a traveller created an itinerary from that template. The activity was configured correctly in the template but was silently dropped during itinerary creation.

Costa Cruises activities added to a template are now instantiated with the correct product, dates, and price when a traveller starts planning from that template.

NTP-69702

Activity search results respect the requested date range more consistently

We improved how multi-day activity searches apply their date range. Previously, some searches only checked that an activity started within the requested window, so a multi-day tour or cruise could be returned even though it ran well beyond the dates asked for.

Connection searches along a route now apply the full date range consistently with how other activity searches already worked, making results more accurate for multi-day products.

NTP-69614

Room selections are preserved correctly when itineraries are rebuilt

We fixed an issue where certain itinerary changes — such as adjusting stay length or dates — could silently drop a room from an itinerary with more than one room booked, without any visible warning. The missing room's price and traveller allocation were lost even though the itinerary still showed the original number of travellers.

Itineraries now restore any missing room automatically when they are rebuilt, keeping room count, pricing, and traveller allocation consistent.

NTP-68751

Musement activity bookings are no longer rejected for a phone number the customer already answered

We fixed a booking rejection affecting Musement activities that ask for a phone number as part of the checkout questions. Previously, some activities correctly showed and required a phone number field during checkout, but the answer wasn't reaching the field Musement validates at booking time, so the booking was rejected with a "blank" error even though the customer had filled it in.

Bookings for these activities now complete successfully with the phone number the customer provided.

NTP-68403

Musement activity bookings can now be retried after an initial failure

We fixed a bug that made a failed Musement activity booking non-retryable. Previously, once a Musement activity booking failed for any reason, retrying it — manually or automatically — immediately failed again with an unrelated internal error ("No cartId provided") instead of attempting the booking again.

Retries now re-establish what's needed before attempting the booking, so a failed Musement activity booking can succeed on retry instead of being permanently stuck.

NTP-68400

Added the Hainan Airlines (HU) logo to flight displays

We added the missing carrier logo for Hainan Airlines (IATA code HU). Flight cards in the Planner previously showed blank space where this airline's logo should appear; they now display the correct logo.

NTP-68738

Added Divi Divi Air (3R) airline details and logo

We added Divi Divi Air N.V. (IATA code 3R, ICAO DVR) to our airline database with its logo, name and country details, so flights on this carrier now display correctly instead of showing incomplete or missing airline information.

NTP-68360

Nezasa AI hotel suggestions now respect star-rating filters

We fixed how Nezasa AI applies star-rating filters when suggesting hotels. Previously, when a traveler asked for hotels within a specific star rating (for example, "only 4-star hotels"), the filter wasn't applied to an instance's recommended hotels, so non-recommended hotels could be suggested even when matching recommended hotels existed.

Recommended hotels that match the requested star rating are now preferred over non-recommended ones, while trip planning without a star-rating filter and searches for a specific hotel by name continue to work as before.

NTP-64253

Did this answer your question?