- CategoryRentals
- AuthOAuth
- Scopes3
Overview
Uplisting is a short-stay PMS. The connection lives on the Uplisting channel document, not on the integration card: on /integrations the Uplisting card opens a 'Connect Uplisting' modal that reads 'MessageMind reads your properties through your connected Uplisting channel, so there is nothing to paste. Connecting imports nothing unless Sync Properties is on in its settings (it starts off).' The channel owns the OAuth grant, the optional legacy account API key, the host-email list and the webhook token. The integration card is a thin configuration surface over that channel: it toggles Sync Properties, exposes a Sync Properties Now action, and borrows the channel's grant for the property catalog, the reservation ledger and the AI's rental tools.
What MessageMind can do with it
- Sync Uplisting properties into the AI's catalog with their address, photos, amenities, policies, fees, taxes, suitability flags, timezone, check-in and check-out clocks, capacity and OTA listing ids.
- Watch Uplisting's booking webhooks (created, updated, cancelled, removed, approved requests) on the channel's per-connection webhook URL and refresh each booking fresh from the API so stale redeliveries never fire anything.
- Walk every property's bookings once a day in a 1 day back, 540 day ahead window so a removal or an edit Uplisting did not deliver still lands on the ledger.
- Serve the AI's rental tools from Uplisting: live availability and nightly pricing from the calendar, reservation lookup by thread, code, internal id or contact, stay change reads, and time and date reads in the property's own timezone.
- Fetch a booking's lock code on demand at send time so door-code messages carry the right value and never leak into logs or ledger snapshots.
- Sync Uplisting guests into MessageMind contacts so a returning guest arrives in the inbox already identified.
- Expose Uplisting-specific values (property, booking, guest money, clocks) as automation variables so stay-timed templates read directly from Uplisting state.
- Backfill existing Uplisting threads on first connect so guests who booked before the integration was wired up are not stuck in an empty inbox.
Requirements
- An Uplisting account connected on the channels page at /channels/uplisting through the OAuth sign in. An API-key-only channel can receive messages but cannot be read by the rental tools or the property catalog.
- The OAuth grant must carry properties:read for the catalog, and bookings:read for the reservation ledger and the AI's rental tools.
- The calendar needs either calendar:read on the OAuth grant or the account's legacy API key stored on the channel. The default grant has no calendar:read, so most accounts fall through to the API-key route.
- At least one property on the Uplisting account. The catalog cannot complete a probe for an account with zero properties.
- Only one PMS integration per MessageMind account. If another PMS is already connected, the Uplisting OAuth start is refused.
How to connect
- In the MessageMind dashboard, open the channels area and start the Uplisting channel. Sign in to Uplisting and approve the requested scopes; MessageMind stores the OAuth tokens on the Uplisting channel document and registers Uplisting's webhooks on your account.
- Optional: on the channel, paste your Uplisting account API key to unlock the legacy calendar surface and the legacy webhook route when the OAuth grant has no calendar:read, and add host emails so replies from the Uplisting dashboard are attributed to the right teammate.
- In /integrations, open the Uplisting card. The 'Connect Uplisting' modal reminds you that MessageMind reads your properties through your connected Uplisting channel, so there is nothing to paste, and that connecting imports nothing unless Sync Properties is on in its settings (it starts off).
- Enable the integration. The property catalog, the reservation ledger and the AI's rental tools now read through the channel's grant.
- To import your properties, open the integration settings and turn Sync Properties on. MessageMind probes the connection by reading one property with every relationship included, confirms properties:read, and imports your catalog. You can also fire a one-off import from Sync Properties Now.
Authentication and permissions
- Mechanism
- OAuth 2.0 against Uplisting, with the grant minted and refreshed on the Uplisting channel document. The property catalog and the reservation ledger always read through that same token. An optional legacy account API key sits beside the OAuth tokens on the channel for webhook registration and the legacy calendar route. The integration card holds no credentials of its own.
- Credentials
- On the channel: access token, refresh token, granted scopes, the Uplisting account id, an optional legacy account API key, host emails and a per-connection webhook token. Tokens, the API key and every webhook signing secret are stripped before the connection is shown anywhere in the dashboard.
Required scopes
properties:readbookings:readcalendar:read
Available data and actions
Reads
- The connected Uplisting account identity and the full property list, cursor paginated with every relationship (address, amenities, channels, discounts, fees, multi units, photos, policy, security deposit, suitability, taxes) returned inline.
- One property on demand (same shape as the catalog pass) when a stay arrives for a property the roster has not seen yet.
- Any single booking fresh by id (dates, status, nights, party size, channel, direct flag, arrival and departure clocks, external reservation id, cancellation time and reason, lock code, booked_at).
- Each property's bookings in a date window during the daily backfill walk, one property at a time, paced for the per-property rate limit.
- Live calendar days for a property (availability, nightly rate, minimum stay, closed-for-arrival and closed-for-departure flags) through either the OAuth calendar or the legacy API-key calendar.
- Existing Uplisting threads and their messages on first connect, so historical guests appear in the inbox with their identity attached.
Writes
- Webhook subscriptions on the Uplisting account for messages, bookings, booking requests, property changes, prices, restrictions, availability, payments, reviews and payment refunds, delivered to a per-connection URL of the shape /v1/uplisting-webhook/<token>/<event>.
- Replies posted into the same Uplisting message thread the guest wrote on, under the host's own account.
- MessageMind contact records derived from Uplisting guest identities (contact sync is one-way from Uplisting into MessageMind).
AI agent use cases
- Answer a WhatsApp, Airbnb or Booking.com message the moment Uplisting delivers it, with the booking, the property and the dates already resolved from Uplisting.
- Quote live availability and a nightly price inside the chat from Uplisting's calendar, then hand the booker to the host's direct booking page.
- Confirm the guest's own door code at check-in by reading the booking's lock code at send time, with no risk of the code sitting in a cached snapshot.
- Answer stay change questions (new check-in time, new check-out time, dates, nights, party size) from a fresh booking read, so a rebooked stay is never answered from stale state.
- Fire check-in and check-out reminders from the booking's own arrival and departure clocks, in the property's own timezone, through automation variables that read Uplisting fields directly.
Configuration
- The channel is the only credential surface. The property catalog and the reservation ledger always read through the channel's token, never through a copy on the integration document.
- Sync Properties is off by default on a fresh integration enable. The import only runs when the toggle is on, or when you fire Sync Properties Now.
- The property catalog defaults to pages of 50 and up to 40 pages per walk, with photos capped at 20 per property.
- The daily reservation walk runs each property side by side with a two second floor between any two requests on this account and twelve seconds between two requests on the same property, under Uplisting's 5 per second and 100 per minute per IP ceilings and the 15 per minute per property ceiling.
- A booking status word Uplisting adds that MessageMind does not yet map keeps the lifecycle the ledger already holds for that stay, so a confirmed stay stays confirmed and its timed messages still fire.
- A property delivery (property_created, property_updated, property_removed) is treated as a signal that queues one full catalog pass, never as data to apply, because Uplisting ships only id, name, nickname and timezone on the property webhook body.
- Host emails on the channel map replies typed inside Uplisting's dashboard back to the right teammate; a reply from an unknown host email is still ingested but attributed to the account default.
Example workflows
New Airbnb booking lands in Uplisting
- Uplisting fires booking_created to the per-connection webhook URL, carrying the booking id and the delivery's event_id.
- MessageMind queues one booking read for that owner, paced on the connection's rate-limit state.
- The AI reads the booking fresh, places it on the property's timezone, resolves the guest identity, and writes the canonical snapshot to the reservation ledger.
- Timed messages for check-in and check-out are scheduled against the booking's own arrival and departure clocks, resolving Uplisting-backed automation variables at send time.
Guest asks for the door code in-thread
- The AI matches the chat to the booking already on the ledger.
- At send time, MessageMind reads the booking fresh (one GET /bookings/:id) and extracts attributes.lock_code.
- The code is placed inline in the reply; it is never persisted into the ledger snapshot, chat state or logs.
Limitations
- Reviews are not acted on. The OAuth grant holds no reviews:read, so the AI does not read or react to Uplisting reviews.
- Uplisting has no inquiry resource, no 'request received' event, no readable account balance and no no-show state. The AI does not report any of these.
- The calendar needs calendar:read or an API key. A connection with neither reports availability and pricing as unavailable; the OAuth calendar is never asked without the scope.
- An API-key-only Uplisting channel can receive guest messages but cannot be read by the property catalog, the reservation ledger or the rental tools; a reconnect through the OAuth sign in is required.
- Reservation lookup by booking code or internal id scans the roster property by property (no guest filter on the bookings list). A scan that hits the request ceiling returns 'unavailable' rather than 'not found'.
- A booking's own money is read only for direct bookings and bookings on Airbnb or Booking.com. Vrbo, Expedia, Agoda, Google and any other channel return no money because their guest-side figures are not reliable in Uplisting's payload.
- Only one PMS is permitted per MessageMind account. The Uplisting OAuth start refuses if another PMS is already connected.
- Contact sync is one-way: Uplisting guests become MessageMind contacts; MessageMind contact edits are not written back to Uplisting.
Troubleshooting
The integration says there is nothing to paste.
That is by design. The 'Connect Uplisting' modal reads 'MessageMind reads your properties through your connected Uplisting channel, so there is nothing to paste. Connecting imports nothing unless Sync Properties is on in its settings (it starts off).' The credentials live on the Uplisting channel; connect that first on the channels page.
The property import fails with a message saying the channel is not connected.
The catalog reads through the Uplisting channel's token. Reconnect Uplisting on the channels page through the OAuth sign in, then turn Sync Properties on (or fire Sync Properties Now) in the integration settings.
The property import fails with a scope error.
The connected Uplisting grant does not include properties:read. Reconnect Uplisting on the channels page and approve property access, then run Sync Properties Now.
The AI reports availability and pricing as unavailable.
The connection has neither calendar:read on the OAuth grant nor an Uplisting account API key on the channel. Reconnect with calendar access or paste your Uplisting account API key on the channel.
Property changes do not reflect in MessageMind.
Property webhooks are registered using the legacy account API key. An Uplisting account connected through OAuth alone receives no property events; the daily poll keeps the catalog current, but to get real-time updates, add the account API key to the channel and reconnect webhooks.
The OAuth start says a PMS is already connected.
Only one PMS integration is allowed per MessageMind account. Disconnect the existing PMS before starting the Uplisting OAuth sign in.
A reservation lookup by code returns 'unavailable'.
Uplisting has no guest filter on the bookings list, so MessageMind scans the roster. The scan stopped at its request ceiling before matching. Narrow the lookup by thread or contact where possible, or retry when the account is less busy.
Disconnect and reconnect
- In the MessageMind dashboard, open the channels area and disconnect Uplisting. The stored OAuth tokens, the API key and every webhook signing secret are cleared from the channel document.
- Timed stay messages parked for Uplisting bookings on this account are cancelled on disconnect.
- To reconnect, run the Uplisting OAuth sign in again. Existing bookings and threads on Uplisting are untouched by disconnecting; only the credentials and the webhook subscriptions on MessageMind's side are removed.