- CategoryRentals
- AuthHTTP Basic
Overview
WebHotelier is a hotel reservation and distribution platform. The integration pastes a username, a password and the hotel's property code (there is no 'list my properties' endpoint for a normal hotel account, so the code is typed by hand). The AI can read your rooms, check real availability with per-stay pricing on the WebHotelier booking engine, and hand the guest a prefilled booking-engine link. It never creates a reservation on the hotel's behalf. The AI can also look up an existing reservation when its guest email matches the trusted contact attached to the conversation.
What MessageMind can do with it
- Import your WebHotelier rooms (both active and inactive) into the AI's catalog, keyed by the WebHotelier room id.
- Attach rate-plan facts to each room: the room's booking-engine URL, its board basis and whether it is refundable (verbose rate reads expose the free-cancel day count).
- Check real availability for a specific stay with per-room, per-rate pricing from GET /availability.
- Discover open check-in dates in a window using GET /availability/{code}/calendar, then confirm each candidate with the exact-stay availability call.
- Offer a guest the rate-level engine URL from GET /availability, prefilled with the stay and party, so they complete booking and payment themselves on the WebHotelier engine.
- Keep the catalog in sync on a weekly schedule and merge the active and inactive halves so a room merely switched off in WebHotelier is not deleted from the catalog.
Requirements
- A WebHotelier Hotelier account with Public API access.
- A WebHotelier username, password and property code. The property code has no lookup endpoint on a normal hotel account; ask WebHotelier, or whoever administers the account, for it.
- This server's egress IP allow-listed on the WebHotelier account when the account enforces an IP allow-list.
How to connect
- In WebHotelier, make sure the account has Public API access and that this server's IP is allow-listed if required.
- In MessageMind, open Integrations and click the WebHotelier card. The modal opens with title "Connect WebHotelier" and reads: Enter your WebHotelier username, password and property code. MessageMind checks them against WebHotelier before saving, so connecting can take up to 20 seconds.
- Fill in the three fields in order. Username (placeholder "Your WebHotelier username"), password (placeholder "Your WebHotelier password") and propertyCode (placeholder "DEMO"). The backend expects exactly these three keys and rejects any other count with "Missing right amount of keys".
- Save. MessageMind runs one live call against the pasted property code (reads active rooms). An empty room list is accepted, since an unconfigured hotel is a real state.
- On success, your rooms and rates are imported and the weekly catalog poll is scheduled.
Authentication and permissions
- Mechanism
- HTTP Basic auth over HTTPS against rest.reserve-online.net.
- Credentials
- Username, password and property code pasted into the connection form and stored on your MessageMind tenant. The wire keys are literally `username`, `password` and `propertyCode`.
Available data and actions
Reads
- Your rooms via GET /room/{propertycode}?active=1 and GET /room/{propertycode}?active=0 (both halves, merged).
- Rate plans via GET /rate/{propertycode}?verbose=1 for the room URL, board basis and refundability flag.
- Exact-stay availability and pricing via GET /availability/{propertycode}.
- Open check-in dates via GET /availability/{propertycode}/calendar.
AI agent use cases
- Answer guest questions about room types, amenities and board basis straight from the catalog.
- Quote the exact price and availability for a stay without the guest leaving the chat.
- Hand a guest a prefilled WebHotelier booking-engine link so they book and pay themselves.
- Help a guest find the nearest open date when their requested stay is not available.
Configuration
- The sync reads both the active and inactive room lists and merges them, because the room endpoint defaults to active=true and a room merely switched off would otherwise be reconciled as deleted.
- The rate read is best-effort: Source and Travel-Agent credentials may be refused on the public/active rate parameters, in which case a rooms-only sync is the correct degradation.
- Price is never stored in the catalog; WebHotelier prices are date-scoped and only resolved at availability time.
- POST /book/{propertycode} is deliberately not used. The AI never takes card details and never creates a confirmed booking from a chat; the guest completes payment on the WebHotelier engine itself.
Example workflows
Catalog import
- You paste username, password and property code and save.
- MessageMind validates the credential by listing active rooms. A blank username, password or property code is refused with "username, password and property code are required, or connect WebHotelier first".
- On the first fetch, both active and inactive rooms are read and merged, and the rate read attaches each room's URL, board basis and refundability.
- The weekly tick refreshes the catalog in place.
Limitations
- No 'list my properties' endpoint for a normal hotel account; the property code is typed by hand and only validated by reading its rooms.
- A 401 or 403 at connect can be bad credentials, missing permissions or an IP block.
- Existing reservation lookups require a trusted guest email on the conversation and an ownership match. A booking reference or an email typed into chat alone is not sufficient. The stay-extension availability mode can use a verified reservation, but it does not change that reservation.
- Prices are not stored in the catalog; they are resolved per stay at availability time only.
- There is no booking creation from the AI; the guest always completes payment on WebHotelier's engine.
Troubleshooting
Connect fails with no visible reason.
Check the server logs for a WebHotelier error description. A 401 or 403 typically means bad credentials, missing API permissions, or an IP block that is not allow-listed on the WebHotelier account.
Save is refused with "Missing right amount of keys".
The backend expects exactly three fields on the WebHotelier payload: username, password and propertyCode. If a field was renamed or stripped by the client, repaste the three values in the connect modal and save again.
Save is refused with "username, password and property code are required, or connect WebHotelier first".
One of the three fields is blank. Fill in username, password and the property code (placeholder DEMO) and save again.
An inactive room is missing from the catalog.
The inactive-rooms read is best-effort. If it fails, the active rooms still sync; the next scheduled pass will try again.
The AI cannot look up an existing reservation.
WebHotelier reservation search takes no phone number, so a phone-only guest cannot be matched. Use the email already trusted by the conversation to verify ownership of the reservation; a newly asserted email alone is not proof of ownership.
The AI cannot help a guest extend an existing stay.
The by_extend_stay path does not read the current booking. Ask the guest for their current check-out date and use by_checkin_checkout for the extra nights.
Disconnect and reconnect
- Open Integrations and the WebHotelier card in the dashboard and choose Disconnect. The stored credentials are removed from your tenant and the weekly poll is cancelled.
- To reconnect, paste a fresh username, password and property code. Confirm the server's IP is still allow-listed on your WebHotelier account.