FareHarbor
SchedulingConnect AI agents to FareHarbor, a booking platform for tours and activities. Agents read the catalog and live availability, create bookings, and check guests in on the day.
What This Integration Enables
FareHarbor sells seats on a boat, a bus or a guided walk that leaves at a fixed time whether or not the paperwork caught up, and that physical fact is why this connector is shaped differently from the registration platforms it sits beside in this catalog. The catalog reads are the setup: List Companies returns the suppliers the authenticated user key is permitted to book for, List Items returns their bookable tours and activities with cancellation policy, images, locations and customer prototypes, and List Lodgings, List Agents and List Desks return the hotels, booking agents and desks a booking can be attributed to. Agents and desks are scoped per affiliate rather than per supplier, which matters the moment a flow books across more than one operator.
Availability is the centre of the connector rather than a lookup beside it. List Availabilities For Date and List Availabilities For Date Range return the possibly bookable departures for one item, excluding the ones where customers are asked to call to book, and each carries start and end times, capacity, party size limits, online booking status and customer type rates. Get Availability returns the full representation of a single departure including the customer_type_rate list with pricing, and that list is not optional context: a booking has to reference a customer_type_rate pk taken from the target availability, so Get Availability is a required step rather than an enrichment. List Availability Bookings returns everything already booked on a departure in simplified form, which is how a flow reads the current load on a specific sailing.
The booking surface has an unusual and genuinely useful property: FareHarbor ships a dry run. Validate Booking accepts the same contact, customers, voucher and note inputs as Create Booking and returns an is_bookable flag plus booking level pricing without creating anything, and when the answer is no it returns an error code and message explaining why. Create Booking then commits, optionally with a booking agent, desk, lodging pk for transportation, booking level custom field values, and a rebooking uuid to replace an existing booking. The undo has a cliff rather than a switch: Cancel Booking is allowed up until the availability start time, cancelling at least 48 hours before start time qualifies for a full refund, any affiliate collected payments must already be fully refunded, and the requesting user needs per company permission to cancel. Check In Booking and Check In By QR Code close the loop at the dock, the second one resolving a scanned code to the booking without needing the uuid at all.
There are no triggers in this connector. FareHarbor does have webhooks for booking and item events, but they are configured by FareHarbor support and are not part of this service, so nothing here registers a callback and nothing here receives one. Flows are driven by whatever raises the booking request in the first place, or by a scheduled read of List Availability Bookings and List Availabilities For Date Range. Two operational limits are worth building around: the API runs at 30 requests per second and 3000 requests per five minute window, and access is limited to approved partners, so the app key and user key come from FareHarbor rather than from a self service developer portal.
Without FlowRunner
With FlowRunner
Use Case Scenarios
A reseller request answered with a real price
A hotel concierge emails asking whether the sunset sail has room for a family of five on Thursday. Today that is a phone call to the desk. The agent reads the request, calls List Items for the operator to resolve the tour name to an item pk, then List Availabilities For Date Range across the requested window, which returns each departure with its capacity, party size limits and online booking status. It filters to departures whose party size limits actually admit a party of five, since a boat with seats free and a maximum party of four is not an answer. For the best candidate it calls Get Availability to read the customer_type_rate list, builds the party as two adults and three children against the correct rate pks, and calls Validate Booking. What comes back is an is_bookable flag and the booking level price, which is the number the concierge is quoted. Nothing has been reserved yet, and the quote is the platform's own arithmetic rather than a rate card somebody copied last season.
Pickups that match where the guest is actually staying
An operator runs hotel pickups and gets the transportation wrong often enough that it costs a van. When a booking includes a stay, the agent calls List Lodgings for the company to resolve the hotel name to a lodging pk, then List Availability Lodgings for the specific departure, which returns the lodgings for that availability each flagged with whether pickup transportation is currently offered on it. That flag is the point: a hotel that is served on the morning departure may not be served on the afternoon one, and a booking that requests transportation to an unserved lodging is a guest standing in a lobby. Where the flag is false the agent moves the party to a departure that does serve their hotel and re-runs Validate Booking to confirm the price still holds, and where no departure serves them it says so rather than booking anyway. Create Booking then carries the lodging pk. The confirmed pickup point goes to the guest through Twilio and the day's pickup manifest to the driver channel in Slack.
A dock that checks itself in
On the day, the crew scans guests aboard. The agent calls Check In By QR Code with the scanned URL, and FareHarbor resolves the code to the correct booking without the crew ever handling a uuid, returning the booking with check-in status updated. It calls List Availability Bookings for the departure to hold the full expected manifest, and List Check-in Statuses to read the statuses this company has actually configured rather than assuming a fixed vocabulary, since checked in and no-show are configured per company. Fifteen minutes before departure it posts the difference to the crew: who is aboard, who is not, and which of the missing have a lodging pickup recorded so the driver can be asked before the boat leaves. Afterwards the manifest with final statuses is appended to Google Sheets for the no-show reporting the operator bills partners against.
Human-in-Loop Highlight
Create Booking is the gate, and FareHarbor makes the argument for it better than any prose could by shipping the dry run itself. Validate Booking exists precisely because committing a seat is different from checking whether one is available: it takes the same inputs as Create Booking, returns is_bookable and the booking level pricing, and creates nothing. The reason that distinction matters here and not on a webinar platform is that the thing being sold is a physical place on a departure that leaves at a fixed time, and the undo is time bound rather than free. Cancel Booking is permitted up until the availability start time, but only a cancellation at least 48 hours before start qualifies for a full refund, any affiliate collected payments must already be fully refunded before it will go through, and the requesting user needs per company permission to cancel at all. So a booking made in error at midday for a nine o'clock departure tomorrow is not a mistake that can be tidied away: it is a seat somebody else could have had and a refund that may not be full. Add that a booking must reference a customer_type_rate pk taken from the target availability, which is where a party gets priced as three adults instead of two adults and a child, and the price a guest was quoted stops matching the price the booking carries. So the agent runs Validate Booking, brings back exactly what FareHarbor said, and asks. It posts to the reservations desk: "Sunset Sail, Thursday 18:30, availability 44127. Validate Booking returns is_bookable true at 412 USD for 2 Adult and 3 Child at the rates on that departure. Get Availability shows 6 of 24 seats remaining and a maximum party size of 6. The concierge asked for 5 and quoted the family 380 USD from last season's rate card. Book at 412, hold while somebody calls the hotel about the difference, or try the 16:00 departure which validates at 380?" One person answers and Create Booking runs against the departure they named. That is the human-in-the-loop moment in tour operations: the platform will tell an agent whether a seat can be taken, and a person decides whether it should be, at the price the guest was actually promised.
Agent Capabilities
19 actionsCatalog
6- List Companies Returns the companies (suppliers) the authenticated user key is permitted to create bookings for, each with its shortname and display name. The list can include companies with no bookable availabilities at present.
- Get Company Returns the extended representation of one company by shortname, including currency, description fields, social URLs, physical and billing addresses, and affiliation date.
- List Items Returns the bookable items (tours and activities) for a company, each with pk, name, description, cancellation policy, images, locations and customer prototypes. The list can include items with no current availabilities.
- List Lodgings Returns the lodgings (hotels and pickup locations) configured for a company, each with a pk that a booking references when it requests transportation.
- List Agents Returns the booking agents for the affiliate company tied to the authenticated user key. Agents are scoped per affiliate rather than per supplier, and either the pk or the name can be supplied on a booking.
- List Desks Returns the booking desks for the affiliate company tied to the authenticated user key, also scoped per affiliate. Either the pk or the name can be supplied on a booking.
Availabilities
5- List Availabilities For Date Returns the possibly bookable availabilities for one item on a single date in minimal form, excluding departures where customers are asked to call to book. Each carries pk, start and end times, capacity, party size limits, online booking status and customer type rates.
- List Availabilities For Date Range The same read across an inclusive date range, which is what a "when can this party go" question is actually asking.
- Get Availability Returns the full representation of one availability including capacity, party size limits, online booking status, the parent item and the customer type rates with pricing. Required rather than optional, because a booking has to reference a customer_type_rate pk taken from here.
- List Availability Lodgings Returns the lodgings for a specific availability, each flagged with whether pickup transportation is currently offered on that departure. A hotel served on one departure is not necessarily served on the next.
- List Availability Bookings Returns all bookings on a specific availability in simplified form, each with pk, uuid, contact details, company and affiliate, display id, external id, status and dashboard URL. The read that produces a manifest.
Bookings
5- Create Booking Creates a booking against a specific availability. Requires contact details, at least one customer referencing a customer_type_rate pk from that availability, and a voucher number. Optionally takes a booking note, external id, booking agent, desk, a lodging pk to request transportation, booking level custom field values, and a rebooking uuid to replace an existing booking. Returns the created booking with its uuid.
- Validate Booking Checks whether a booking can be created and returns booking level pricing, without creating anything. Takes the same contact, customers, voucher and note inputs as Create Booking and returns an is_bookable flag plus an error code and message when the answer is no. This is the action an approval flow puts in front of a person.
- Get Booking Returns the full booking object by uuid, including availability, contact, customers, pricing subject to permissions, status and dashboard URL.
- Cancel Booking Cancels a booking by uuid. Permitted up until the availability start time, with a full refund qualifying only when cancelled at least 48 hours before start, any affiliate collected payments already fully refunded, and per company cancel permission on the requesting user.
- Update Booking Note Replaces the note on a booking, or clears it by passing an empty string. Returns the booking with the updated note.
Check-in
3- Check In Booking Checks a booking in by uuid using the QR code URL from its check-in link, returning the booking with each customer's check-in status updated.
- Check In By QR Code Checks a booking in for a company from a scanned QR code URL alone, with FareHarbor resolving the code to the booking. The action a dock or a coach door actually uses, because nobody at the gangway is looking up a uuid.
- List Check-in Statuses Returns the check-in statuses configured for a company, such as checked in and no-show, each with a pk, type and display name. Read them rather than assuming a fixed vocabulary, since they are configured per company.
Frequently Asked Questions
What can FlowRunner do with FareHarbor?
FlowRunner agents can run List Companies, Get Company, and List Items in FareHarbor, plus 16 more actions.
Does connecting FareHarbor to FlowRunner require OAuth?
FareHarbor uses a custom authentication method to connect to FlowRunner.
Can FareHarbor trigger a FlowRunner workflow automatically?
FareHarbor doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with FareHarbor
$100 in credits. No card required. Connect in minutes.