Stay updated

Stay informed and see how CaptainBook evolves to deliver smarter

v27.2.0

Captainbook v27.2.0

New

Ask for a product's photos and documents over MCP

Your connected AI assistant can now list the images and documents attached to

a product, not just fetch one when it already knows the ID. Previously it had

no way to discover what media a product had, so questions like "what photos

are on the sunset cruise?" could not be answered at all. Incremental syncs

that filter by a date also work now instead of failing.


Improved

Load the billing page faster for accounts with many invoices

The billing page no longer waits on an external lookup for every past

invoice before it renders, so it opens quickly even for long-standing

accounts. The "External Platform Invoice" link now resolves when you

open the download menu, and lookup failures are logged instead of

silently leaving the link broken.


Get a confirmation when you switch a booking's resource or save app settings

Switching the assigned resource on a booking (from the manifest or the booking

details panel) and saving an app's parameters now show a success toast, so you

get clear confirmation the action worked instead of the screen changing silently.


Fixed

WebP product image uploads no longer fail

Suppliers can now upload `.webp` images for product attachments and they'll be processed into variants like JPEG and PNG images.

Booking buttons no longer send customers away from your site on WIX

On sites built with Wix — and other builders that handle link clicks

themselves — clicking a booking button flashed the booking window open and

then sent the customer to a bare booking page, off your site entirely. The

booking window now stays put and the customer books without leaving you.

If you still embed with the older widget.js, switch to widget-dynamic.js to pick this up.


Editing a large group booking on mobile no longer blocks Save

Opening a large group booking in the mobile app's edit screen could leave

"Save changes" permanently disabled, with no explanation, so adding a note

meant removing guests from the booking first. The screen now reads the real

party size the slot allows, so notes and comments save normally and guests

can be added while seats remain.


Rescheduling a booking keeps each guest's passport and travel details

When you reschedule a booking, the passport numbers, dates of birth and

nationalities collected for each traveller now carry over to the new

booking's passenger manifest instead of silently disappearing.


Scanning a voucher shows the full party size

Scanning a booking's voucher in the mobile app now shows how many guests are on

the booking instead of always showing 1. The slot's checked-in count is also

correct now, so the occupancy figure on the availability screen reflects real

guests rather than scanned codes.


Discounts save correctly again, and public ones show up where they should

Editing a discount that had no expiry date failed with an error instead of

saving. Discounts marked "Public" now actually appear in your booking widget

and on your site, unticking every listing option removes the discount from

them, and cover images accept WebP files and reject anything over 4MB.


Booking pages no longer break when a customer has been deleted

Opening or managing a booking whose customer had been deleted used to crash the page. The booking now opens normally, shows "No customer found" in place of the deleted details, and you can still cancel, refund, or record a payment on it.

Billing now shows a single default card and lets you remove the rest

If you had saved two cards from the same bank that ended in the same four

digits, the billing page marked both as your default and hid the Remove

button on both, so you could not delete them or tell which card we would

charge. Now only your real default is marked, and every other card can be

removed.


Downgrading to a lower plan is no longer blocked for accounts with no revenue

Accounts that had not taken any bookings yet were unable to switch to a cheaper

plan — the downgrade button was greyed out and cancelling was the only option

left. Plan changes now compare your actual revenue against the plan's limit, so

a quiet account can move down a plan, and an account over a plan's revenue limit

is correctly stopped from moving onto it.


Google Things To Do listings now refresh when you change a product's capacity

Editing capacity on a product (not just on an individual schedule) now refreshes the product's Google Things To Do feed, so your listing no longer goes stale after a product-level capacity change. Separately, when a customer follows a captain's personal booking link and that captain is already taken, the widget now says "your guide is already booked" instead of "only N spots are left".

v27.1.0

Captainbook v27.1.0

New

Sell your tours on Viator

Your products, availability and pricing now sync to Viator, and bookings made on Viator flow back automatically. Mark a discount as "for Viator" to run channel-specific special offers.

Assign and switch booking resources from the CLI and MCP

You can now switch the main resource on a booking and assign or remove

auxiliary resources from the CLI and inventory MCP. Concurrent edits are

rejected when the booking’s resource state has changed since you last

read it, so you do not overwrite another operator’s assignment by accident.


Ask the AI assistant what your customers answered on a booking

Your customers' answers to your custom booking questions — dietary

requirements, pickup point, passport details — are now readable through the

Inventory MCP connection. Ask "what dietary requirements does booking 4291

have?" and get an answer instead of a dead end. Answers only ever come back

for one booking at a time, never in bulk.


Reservation managers can now create an Inventory connection, and every connection is limited to the data that person's role already lets them see.

Pay for your channel manager connections yearly instead of monthly

Your billing page now shows whether your channel manager connections are billed

monthly or yearly, when they next renew, and a link to switch to yearly. Before

anything is charged you see the exact prorated amount and the date it covers, and

you confirm it.


Format your triggered-notification emails and add links

You can now format a triggered notification's message body — bold, italic,

colour, lists — and insert links, using a toolbar in the editor. The preview

now shows the exact branded email your customer receives, so what you see is

what they get.


Filter the bookings feed by resource and see revenue for the selection

Filter the bookings feed by a primary or auxiliary resource. Each filter has a

searchable dropdown that shows up to 10 resources and searches as you type. While

a resource filter is active, a summary bar shows Total GMV and Net revenue for

exactly what's on screen, and your selection is saved in the URL so you can share

or reload the view.


Send Apple Wallet pass messages automatically from automated messages and workflows

You can now send a message to a customer's Apple Wallet pass automatically —

as a triggered Automated Message or a workflow "Send Notification" action —

instead of only sending it by hand from the booking. It goes to the booking's

customer, respects the once-per-booking-per-day limit, and quietly skips when

there is no installed pass.


Improved

Your translated product content now reaches OCTO resellers in their own language

Resellers connecting through our OCTO API now receive your product and supplier

content in the language they request, using the translations you added in the

dashboard. Anything not yet translated falls back to English, so nothing ever

comes back empty.


Inventory AI connections now follow the permissions of whoever created them

An Inventory connection now shows an AI assistant exactly what the person who

created it can see in Captainbook — no more, no less. If someone can't open the

Customers list in the web app, the assistant can't read customers either, and

prices and traveller contact details are withheld from roles that aren't allowed

to see them. Reservation managers can now create a read-only connection, which

previously wasn't possible at all.


Fixed

Sessions no longer offer to book more guests than they have seats for

The booking widget could show a Book button to a group larger than the seats

actually left on a session — a 12-seat trip with 9 guests booked still accepted

a party of 4. The calendar, the session list and the checkout now all use the

same remaining-seats figure, so a date greys out and the session reads

"Available to groups up to 3 guests" instead of taking a booking it cannot host.


Availability updates no longer fail to reach GetYourGuide when a slot has just started

GetYourGuide was rejecting a whole batch of availability updates whenever one

timeslot in it had already started in the product's local timezone, so the rest

of that batch never reached them. Operators outside UTC could see stale vacancies

on GetYourGuide until the next scheduled sync. Deleted timeslots are now also

withdrawn reliably for operators west of UTC.


Tour times sent to AI assistants and the API now show the correct local time

Departure and end times returned to Claude, ChatGPT and the API were

reported one hour early during British Summer Time (and any other period

when a product's timezone is ahead of UTC). They now carry the product's

own local offset, so a 10:00 tour reads as 10:00 wherever it is read.

Times shown in the operator dashboard were always correct and are

unchanged.


Booking links shared by a specific guide now keep that guide all the way through checkout

When a guide shared their own booking link and the customer took a while to pay,

the booking could quietly end up with a different guide. Those links now hold on

to the guide through the whole checkout, and if that guide is already booked for

the session the widget says so by name instead of failing with an unhelpful error.


Booking details now show which discount code was applied

The booking details page showed no sign that a discount had been applied, so a

price that looked wrong had no explanation. It now lists the discount code (or

codes) alongside the payment breakdown, including codes you have since deleted.

Resellers booking through the marketplace also get the discount amount back in

their booking payload.


Payment reminders now skip guests who have already paid

The reminder that asks a guest to pay any remaining balance before their

experience now checks the balance at the moment it is about to send, and

cancels itself if the booking has been paid in full in the meantime.

Previously a booking could still be reminded after it was fully paid.


Cancelled bookings now always free their seats back up

When several bookings on the same time slot were cancelled at the same moment,

the slot could keep counting some of them as still booked. The calendar showed

guests who were not coming, and connected channels like GetYourGuide were told

there were fewer seats left than there really were. Cancelled seats now always

return to the slot.


v27.0.0

Captainbook v27.0.0

New

Sell your tours on Viator

Your products, availability and pricing now sync to Viator, and bookings made on Viator flow back automatically. Mark a discount as "for Viator" to run channel-specific special offers.

Assign and switch booking resources from the CLI and MCP

You can now switch the main resource on a booking and assign or remove

auxiliary resources from the CLI and inventory MCP. Concurrent edits are

rejected when the booking’s resource state has changed since you last

read it, so you do not overwrite another operator’s assignment by accident.


Fixed

Sessions no longer offer to book more guests than they have seats for

The booking widget could show a Book button to a group larger than the seats

actually left on a session — a 12-seat trip with 9 guests booked still accepted

a party of 4. The calendar, the session list and the checkout now all use the

same remaining-seats figure, so a date greys out and the session reads

"Available to groups up to 3 guests" instead of taking a booking it cannot host.


Availability updates no longer fail to reach GetYourGuide when a slot has just started

GetYourGuide was rejecting a whole batch of availability updates whenever one

timeslot in it had already started in the product's local timezone, so the rest

of that batch never reached them. Operators outside UTC could see stale vacancies

on GetYourGuide until the next scheduled sync. Deleted timeslots are now also

withdrawn reliably for operators west of UTC.


v26.4.0

Captainbook v26.4.0

Improved

Search your brandings when creating a booking

The branding picker on the booking form is now searchable. Start typing to filter

your widget brands by name or sender, or use the arrow keys to move through the

list. If you only have a couple of brands nothing changes for you; if you have

dozens, you no longer have to scroll to find the right one.


Fixed

Discount codes no longer stack across different schedules of the same experience

When an experience had separate discount codes on separate schedules (say 20%

off mornings and 15% off sunsets), the "From" price added them together and

advertised 35% off — a price no booking could actually get. Each schedule now

shows the best discount a customer can really book on it, and checkout charges

the same figure the widget quotes.


Chat assistant no longer goes quiet when several messages arrive at once

When a visitor sent the AI assistant a second message while it was still

answering the first, that message could be dropped: the assistant showed

the "typing" dots indefinitely and never replied. Messages sent in quick

succession are now answered in order, and if something does go wrong the

assistant says so instead of leaving the visitor waiting.


Availability updates reach GetYourGuide again after a slot is overbooked

An overbooked or capacity-less time slot could stop a whole batch of

availability updates from reaching GetYourGuide, leaving your listings out

of date until the next successful sync. Those updates now go through, and

slots that are closed or fully booked correctly show as having no space

instead of advertising seats you would have had to refuse.


Tour-grade changes from Viator no longer fail on bookings with traveller questions

When Viator changed the tour grade on a booking that had traveller

information collected against it (passport numbers, dates of birth), the

amendment failed and the booking stayed on the old slot. It now goes

through, and the traveller answers carry over to the new departure when it

belongs to the same product.


Deleted timeslots are now withdrawn from GetYourGuide immediately

When you delete a timeslot, GetYourGuide is now told straight away that it is no

longer for sale. Previously the slot stayed bookable on GetYourGuide until their

next scheduled check, so travellers could still book a departure you had removed.


v26.3.0

Captainbook v26.3.0

Improved

Google Things to Do listings now show your auto-applied discount prices

Products in your Google Things to Do feed now advertise the discounted price

when a discount is set to apply automatically, instead of the full fare. The

price shown matches what the customer pays at checkout.


Fixed

The booking assistant now offers the soonest available dates instead of a date far in the future

When a guest asked about availability without naming a specific day, the

assistant could reply with a date several weeks out even though much earlier

dates were open — costing bookings. It now answers with the genuinely soonest

dates it can offer.


Booking buttons now work on React and single-page websites

Booking links on sites built with React, Next.js, or a page builder that

loads scripts through a tag manager could silently stop opening the booking

widget. A new version of the embed script fixes this and also handles links

that appear after the page has loaded, such as when a visitor navigates

between pages without a full reload. Existing embeds are untouched and keep

working exactly as before.


Subscribing no longer fails when your business phone number is long

Businesses whose phone number was written out in full (for example

"+31 (0) 6 12 34 56 78") could not start a subscription — the checkout

page errored before it ever reached the payment step. Long numbers are

now handled correctly and checkout completes as expected.


OTA and channel-manager bookings are no longer double-counted in your stats

Bookings coming from OTA and channel-manager connections (Viator, GetYourGuide,

OCTO) were counted twice in your booking statistics, so the OTA figure read about

double the real number. The count now reflects the exact number of bookings, and a

cancellation removes exactly one.


v25.18.0

Captainbook v25.18.0

New

Filter bookings by Agency Widget in the bookings feed

The Booking Channel filter on the bookings feed now lists your Agency

Widgets alongside your other widgets. You can select one to see only the

bookings that came through that agency widget — previously these bookings

had no filter option.


Fixed

Waitlist no longer errors when an entry's customer was deleted

The availability waitlist could show an error instead of loading when one of its

entries belonged to a customer who had since been deleted. It now shows the entry

with an "Unknown customer" label and loads normally.


Fix GetYourGuide booking imports that failed to complete

GetYourGuide booking imports could get stuck at the column-mapping step or

silently import zero bookings. Imports now map and save correctly, so you can

bring your GetYourGuide bookings into Captainbook end-to-end.


Email headers now show the correct logo

Some notification emails showed a broken image where the sender's logo should be. The header now renders the logo reliably as a standard PNG.

Fix billing page failing to load for some accounts

The billing page could fail to load for accounts whose SMS plan had more

than one price. It now loads reliably, and the SMS usage figure shows the

actual number of messages used instead of always showing zero.


Fix the product details map failing to load in the booking widget

The map showing where an experience takes place could fail to appear in the booking widget and log a JavaScript error. It now loads reliably.

v25.17.3

Captainbook v25.17.3

Fixed

Availabilities no longer show "fully booked" while seats are still available

Fixed a bug where booking a single spot on a shared time slot could mark the

whole slot as fully booked even though seats were still available. Shared slots

now reflect real availability again.


v25.17.2

Captainbook v25.17.2

Fixed

Booking confirmation emails no longer fail for some imported customers

Customers imported from FareHarbor (or created via the mobile app / automations)

with an unusual language value could silently miss their booking confirmation

email. Those emails now send reliably.


Uploading a HEIC photo no longer breaks the upload form

Picking a HEIC image (the default iPhone format) for an extra, logo, or gift/discount cover used to crash the page. The image is now rejected with a validation message instead, and any already-saved image stays visible.

Onboarding now builds your products from your website again

During onboarding we scan a supplier's website and pre-create their bookable

products. That scan was failing on every run and falling back to a single

generic product. It now reads the website and its linked pages correctly, so

new suppliers start with products drawn from their own site.


v25.17.1

Captainbook v25.17.1

Fixed

Fix error when opening a day on the monthly calendar

Tapping a day in the monthly calendar could fail to load the list of time slots when the experience had a photo. It now opens reliably.

v25.17.0

Captainbook v25.17.0

Fixed

Apple and Google Wallet passes are issued again for new bookings

Wallet passes stopped generating for new bookings after an internal library

upgrade, so the "Add to Apple/Google Wallet" link showed nothing. Passes are

now issued correctly again, and an operator command can re-issue any that were

missed during the outage.


© 2021-2026 CaptainBook.io - All rights reserved.
Legal Terms - Privacy policy

© 2021-2026 CaptainBook.io - All rights reserved.
Legal Terms - Privacy policy

© 2021-2026 CaptainBook.io - All rights reserved.
Legal Terms - Privacy policy