Skip to main content

Exely Integration Guide

What the AI can do

The Newo AI Agent integrates with Exely (hotel PMS / channel manager) so your AI can act as a hotel reservation assistant for your property.

Once connected, the AI agent can:

  • check room availability for requested stay dates and guest counts
  • present room options with pricing and meal plans
  • hand off bookings to guests via a prefilled web booking link (email + SMS + chat) — default mode
  • create hotel reservations directly via REST (after Exely opens the Reservation API in June 2026)
  • hand off cancellations to the hotel phone and email contacts (default mode)
  • look up existing reservations by confirmation number via the Read Reservation API
  • auto-add default hotel booking scenarios to Canvas

In plain terms: the AI can talk to guests about room availability and bookings while Exely acts as the hotel reservation backend.

Important — current Exely API limitations. The public Exely offering exposes Content, Search, and Read-Reservation APIs. The Reservation write API (verify / create / cancel / modify) is scheduled to be released in June 2026, per Exely support. Until that release:

  • Booking: the agent sends the guest a prefilled bookingFormLink from Exely's booking widget via email + SMS + chat; the guest completes the booking in the browser.
  • Cancellation / Modification: the agent directs the guest to the hotel contacts (phone + email auto-populated from the Content API).

Both modes are controlled by the Online Booking via API / Online Cancellation via API toggles (disabled by default). When Exely opens the write API, flip the toggles — no code changes needed.

Manager Quick View

QuestionShort answer
What business problem does this solve?Lets the AI handle hotel availability, booking, cancellation, modification, and booking lookup without a human agent doing those actions manually.
Who is this for?Hotels and hospitality businesses using Exely (formerly Bnovo) as their property management system.
What is needed before setup?Exely API credentials (Client ID + Client Secret) and the Property ID.
How long does setup usually take?5-10 minutes if API connections are already enabled in the Exely extranet.
How do we know it worked?Publish All completes successfully and exely_access_token is populated.
What should we test first?Availability, then booking, then booking lookup.

Best Fit / Not a Fit

Best fit:

  • hotel reservation operations via Exely
  • AI-led guest conversations about room availability and bookings
  • teams that want one Newo project per hotel/property

Not a fit:

  • CRM-heavy workflows or lead pipeline automation
  • guest recognition based only on phone number
  • multi-property routing inside one Exely setup
  • payment processing (not yet supported)

Before You Start

Make sure you have:

  • access to the Newo project builder for your project
  • permission to edit project settings and publish
  • API connections section enabled in the Exely extranet (may need to request from Exely support)
  • Exely API credentials (Client ID and Client Secret)
  • the exact Property ID for your hotel

Who Usually Provides What

RoleUsually provides
Hotel / client teamExely account access, Property ID, operational testing help
Exely supportAPI connections enablement, Client ID, Client Secret
Newo implementer / PMNewo setup, feature toggles, publish, test plan, go-live validation

You will need these values before setup:

  • Client ID (OAuth2)
  • Client Secret (OAuth2)
  • Property ID
  • Base URL (default: https://connect.hopenapi.com)
  • Language Code (default: en)

Note: The API connections section is not enabled by default in the Exely extranet. You must contact Exely support (welcome@exely.com) to enable it before you can generate API credentials.

Setup

Create the Newo project

If this project already exists in Newo Builder, skip this subsection and continue with the integration-specific settings below.

  1. In Newo Builder, open the projects list and click Create Project (or Create New Project from the top-right menu).

Create New Project menu in Newo Builder

  1. Fill IDN and Title. The exact names do not matter; use any clear names your team will recognize.
  2. In Registry, choose the release channel:
    • staging — the newest module fixes appear here first. Use it when you need the latest fix, but expect possible unfinished changes.
    • production — the final stable version for live projects.
  3. In Module, select the module for this integration.

Create Project form showing IDN, Title, Registry, and Module fields 5. Leave Module version on Latest version unless support tells you to pin a specific version, then click Create.

3.1 Enable API Access in Exely

  1. Contact your Exely account manager or email welcome@exely.com
  2. Request to enable the "API connections" section in your extranet
  3. Wait for confirmation (typically 1-2 business days)

3.2 Create an API Connection

Based on Exely's official guide: How to create an API connection.

  1. Log in to the Exely extranet at https://secure.exely.com/app/.

  2. Navigate to Property Settings → API Connections and click Create a connection.

    Property Settings — API Connections menu

    Figure 1. API Connections screen in Property Settings.

  3. On the creation page, enter a connection name (e.g. Newo AI Integration) in the API connection section.

  4. In the Available APIs section, tick the checkboxes for the APIs Newo needs:

    • Content API — required (property description, meal plans, cancellation rules)
    • Search API — required (room availability, pricing)
    • Read Reservation API — required (booking lookup)
    • Reservation API — tick if/when Exely has enabled the write endpoint for your account (see the June 2026 note in §1). Safe to tick in advance — nothing breaks if the server-side role isn't granted yet.
    • PMS Universal API v2 — optional; Newo doesn't call it today.

    Click Save at the top of the page.

    Create API Connection — name and API selection

    Figure 2. Enter a connection name and select the required APIs.

  5. In the confirmation popup, choose Save and enable access to activate the connection immediately. Save only leaves it disabled; you can enable it later from the actions menu (Figure 6 / Figure 8).

    Save API Connection popup

    Figure 3. "Save and enable access" activates the connection immediately.

  6. ⚠️ Copy the generated client_id and client_secret now. Exely fills them in automatically right after save; these values are what Newo uses to authenticate and they must be stored somewhere safe before you leave the page.

    Client ID and Client Secret after saving

    Figure 4. Copy the Client ID and Client Secret — you will need them in the Newo platform setup.

  7. Your created connections appear in the list on the main API Connections page. Each row shows the connection name, status, and an actions menu.

    API Connections list

    Figure 5. List of created API connections.

  8. Use the row's action menu to edit, open settings, enable / disable, or delete a connection.

    Connection actions menu

    Figure 6. Per-connection actions menu.

  9. Settings re-opens the full editor (name + API checkboxes). Use this to grant an additional API later — e.g. to add Reservation API once Exely enables write access for your client.

    Connection settings page

    Figure 7. Connection settings editor.

  10. The Enable access / Disable access toggle in the actions menu controls whether requests authenticated with that client_id reach the Exely APIs.

    Enable / disable access toggle

    Figure 8. Enable / disable access toggle.

Tip. Your Property ID can be found in the extranet URL: https://secure.exely.com/app/Property/{PROPERTY_ID}/... — or ask Exely support for it.

Warning. If you disable or delete the connection, every Newo call (availability, lookup, booking handoff) will fail with 401 until you either re-enable access or issue a new client_id / client_secret pair and update Newo's attributes 04 and 05.

3.3 Configure Exely in Newo

  1. Open your project in Newo.
  2. Go to Builder → Attributes.
  3. Find the 12. Exely Settings section.
  4. Fill in:
    • 01. Base URLhttps://connect.hopenapi.com (production) or https://connect.test.hopenapi.com (testing)
    • 02. Property ID — your hotel's property identifier
    • 03. Language Code — language for room descriptions (en, ru, de, etc.)
    • 04. Client ID — OAuth2 Client ID from step 3.2
    • 05. Client Secret — OAuth2 Client Secret from step 3.2
  5. Review the feature toggles:
    • 07. Enable Availability Check — on
    • 08. Enable Booking — on
    • 09. Enable Cancellation — on
    • 10. Enable Reschedule — on
    • 11. Enable Booking Lookup — on
    • 12. Enable Guest Identification — on (phone-based guest lookup + active stays listing — lets the agent find an existing reservation without a confirmation number)
    • 13. Online Booking via APIoff (flip to True only when Exely's Reservation write API is available to your client)
    • 14. Online Cancellation via APIoff (flip to True only when Exely's Reservation write API is available)
  6. Optional: override 15. Hotel Contact Phone and 16. Hotel Contact Email if the values auto-imported from Exely's Content API are wrong. Both are used in offline booking / cancellation handoffs, so they must point at a real front-desk contact.
  7. Click Save.
  8. Click Publish All.

3.4 What Happens After Publish

When you publish:

  • Newo validates the integration registry ID
  • creates or updates connections:
    • exely_connector (main API)
    • exely_token_connector (OAuth2 authentication)
  • creates or refreshes the setup persona and actor
  • requests an OAuth2 access token from Exely (valid 15 minutes, auto-refreshed)
  • stores the token in exely_access_token
  • registers all 7 Exely custom tools (availability, booking, cancellation, modification, lookup, guest identification, active stays listing)
  • on the first availability check after setup, loads property metadata from the Content API and auto-populates exely_hotel_contact_phone / exely_hotel_contact_email (only if they are still empty — your manual overrides are preserved)
  • auto-adds default hotel scenarios and intent types to Canvas

3.5 What "Successful Setup" Looks Like

After setup is complete, you should expect all of the following:

  • exely_access_token has a non-empty value
  • the project can run an availability check without authentication errors
  • the Exely settings stay saved after refresh
  • the booking-related tools are available to the agent
  • hotel-specific scenarios and intent types appear in Canvas

3.6 Making a New Room Available Online

The AI only offers rooms that Exely returns from /api/search/v1/.../room-stays — which means the room must exist in the PMS, have a rate plan, and have non-zero "Available online" quantity. Below is the end-to-end path based on Exely's own guide (How to create room inventory in Exely PMS).

Part 1 — Add a Room Type

  1. In the Exely extranet, navigate to Room management → Room types and click Add room type.

    Room types — Add room type

    Figure 9.1. Room types list with "Add room type" action.

  2. In the Main setting section, provide the room name and room code.

    Main setting — name and code

    Figure 9.2. Main setting — name and code.

  3. In Occupancy, choose the accommodation offer type and room area. Fill in:

    • Guests with main occupancy — guest count + applicable accommodation types.
    • Extra beds in the room — if applicable.
    • Child accommodation without bed — if applicable.

    Occupancy — guests and accommodations

    Figure 9.3. Occupancy configuration.

  4. Click Save. Repeat for every room type you want bookable.

Part 2 — Create the Room Inventory

  1. Go to Property management → Room Inventory. If the property has several buildings or floors, add them on the Buildings and floors tab first.

    Room Inventory — Buildings and floors

    Figure 9.4. Buildings and floors tab.

  2. Open the Rooms tab → click Add room. Pick the building, floor, room type, and bed type (for display), enter the room number, and click Add room No. to add every physical unit of that type. Click Save.

    Add room dialog

    Figure 9.5. Add room dialog.

  3. Verify the rooms show up correctly in Property management → Front desk.

Part 3 — Enable Online Availability

  1. Go to Room management → Availability and set the default availability for the new room type on the calendar (the "Available online" number must be > 0 for the dates the AI will offer).

    Availability — set default

    Figure 9.6. Set default availability.

  2. Go to Room management → Rate plans, open an existing plan or create a new one, and indicate prices for the new room type. Without a priced rate plan, the room will not be returned by the Search API even if availability is non-zero.

    Rate plan — indicate prices

    Figure 9.7. Rate plan — room prices.

Checklist — if the AI still doesn't see the room

  • Room type was saved in Room management → Room types.
  • At least one physical room of that type exists in Room Inventory → Rooms.
  • Availability on the requested dates is non-zero (check the calendar for the exact stay window).
  • A Rate plan with prices exists for the new room type.
  • Channel distribution includes Exely's online booking engine (the source behind connect.hopenapi.com). A room restricted to OTA-only distribution will not appear.

Quick self-check — does /room-stays return the new room?

curl "https://connect.hopenapi.com/api/search/v1/properties/<PROPERTY_ID>/room-stays\
?arrivalDate=2026-05-01&departureDate=2026-05-03&adults=1&includeExtraStays=false&includeExtraServices=false" \
-H "Authorization: Bearer <TOKEN>" \
-H "Accept: application/json"
  • If the new room is missing from roomStays[], re-check the checklist above — this is an Exely-side setup issue; the AI has no way to see a room that doesn't come back from Search.
  • If the new room is present, the AI will offer it automatically. No redeployment needed — exely_room_type_map is refreshed on every availability cycle.

Note. If an existing room type's human-readable name changes in Exely, trigger one availability check to refresh exely_room_type_map. The attribute is updated from the live Content API response each time static data is fetched.

See also. Exely's own articles: Create room type, Create buildings and floors, Create apartment inventory.

All settings reference

You can find all settings in Builder → Attributes → 12. Exely Settings.

4.1 Connection Settings

SettingWhat it doesRequired
01. Base URLRoot URL for the Exely Connect APIYes (default provided)
02. Property IDThe hotel property the AI will query and updateYes
03. Language CodeLanguage for room type names and descriptionsYes (default: en)
04. Client IDOAuth2 credential for API authenticationYes
05. Client SecretOAuth2 credential for API authenticationYes
06. Access TokenTemporary OAuth2 token stored after setupAuto-filled

4.2 Feature Toggles

SettingDefaultWhat it controls
07. Enable Availability CheckOnAllows the agent to check room availability
08. Enable BookingOnAllows the agent to create reservations (direct REST or link handoff, depending on 12)
09. Enable CancellationOnAllows the agent to cancel reservations (direct REST or hotel handoff, depending on 13)
10. Enable RescheduleOnAllows the agent to modify/reschedule reservations
11. Enable Booking LookupOnAllows the agent to look up reservation details by confirmation number (uses Read Reservation API)
12. Enable Guest IdentificationOnWhen True, the agent can identify a returning guest by phone against the Exely PMS guest database and list their currently active stays — letting the AI surface a reservation even when the guest does not have the confirmation number. Disable if you do not want the AI calling the PMS guests/search / find-occupied-room-stays endpoints.
13. Online Booking via APIOffWhen True, creates bookings through Exely's Reservation write API (verifycreate). When False (default), the agent hands the guest a prefilled booking link via email + SMS + chat. Flip to True only after Exely enables the Reservation write API for your client (expected June 2026).
14. Online Cancellation via APIOffWhen True, cancellations go through Exely's Reservation write API (calculate-penaltycancel). When False (default), the agent directs the guest to the hotel contacts. Flip to True at the same time as toggle 13.

4.3 Hotel Contact Settings (offline handoffs)

These are surfaced to guests when Online Booking via API / Online Cancellation via API are off. They are what the guest is given to complete a booking outside the AI chat (confirmation email link from Exely + hotel front desk) or to cancel an existing reservation.

SettingDefaultWhat it does
15. Hotel Contact PhoneAuto-filled from Content APIShown in the cancellation handoff message. Override if the auto-imported value is a fax / legacy number.
16. Hotel Contact EmailAuto-filled from Content APISame purpose as 15, for email.

Tip. The auto-import runs the first time the integration fetches property metadata (usually the first availability check after setup). If both fields were already set manually before that, the auto-import does not overwrite them.

4.4 Technical / Advanced Settings

SettingDefaultWhat it does
Setup Persona IDAutoPersona used during setup and tool registration

What the AI can do

5.1 Check Availability

The AI checks Exely availability for:

  • check-in date (arrival)
  • check-out date (departure)
  • number of adult guests

The integration calls:

  • the lookup request
  • the lookup request

What the agent receives:

  • available room types with names
  • rate plans with names
  • meal plan information (Room Only, Bed & Breakfast, etc.)
  • total pricing per room type
  • checksums for booking verification

5.2 Create a Reservation

The AI can create a reservation after it has:

  • stay dates (arrival + departure)
  • adult count
  • guest first name and last name
  • guest phone number
  • (optional) guest email

Behaviour depends on toggle 13. Online Booking via API:

Default — offline link handoff (toggle off). The agent pulls the prefilled bookingFormLink from the availability response (it carries hotel + room + rate + dates + currency) and:

  • emits email_worker_send_email to the guest with subject "Complete your hotel booking" and the link in the body
  • emits sms_worker_send_sms to the guest's phone with the link
  • shows the link in chat and explains the guest finishes the booking in the browser

No REST booking call is made. The confirmation number is not known to the AI in this mode; the guest receives it from Exely after they complete the form.

Online (toggle on, after June 2026). Two-step REST flow:

  1. the create/update request — validates the booking and returns a createBookingToken
  2. the create/update request — creates the confirmed reservation using the token

On success in online mode, the agent:

  • stores booking metadata in the persona bookings attribute (NAF standard)
  • communicates the confirmation number, total price, and dates to the guest

Note: The createBookingToken is single-use and valid for 24 hours.

5.3 Cancel a Reservation

The AI can cancel a reservation when the guest provides their confirmation number.

Behaviour depends on toggle 14. Online Cancellation via API:

Default — hotel handoff (toggle off). The agent replies with a message like:

"To cancel booking <number>, please use the 'Manage booking' link in the confirmation email you received from Exely, or contact the hotel directly by phone at <Hotel Contact Phone> or by email at <Hotel Contact Email>."

No REST cancel call is made. The hotel contact values come from attributes 15 and 16.

Online (toggle on, after June 2026). Three-step REST flow:

  1. the lookup request — retrieves booking details (via Read Reservation API)
  2. the lookup request — calculates the penalty
  3. the create/update request — cancels with the expected penalty amount

In online mode, the agent communicates any penalty to the guest before proceeding.

5.4 Modify / Reschedule a Reservation

The AI can update an existing reservation by changing stay dates or room type.

The integration follows a three-step process:

  1. the lookup request — retrieves current booking (including version for optimistic locking)
  2. the create/update request — verifies the modification is possible
  3. the create/update request — applies the changes

Note: Modification requires the booking version field for optimistic locking. If a 409 conflict occurs, the booking is re-fetched and the modification retried.

5.5 Look Up an Existing Reservation (by confirmation number)

The AI can retrieve a single booking's details when the guest provides their confirmation number.

The integration calls the public Read Reservation API:

  • the lookup request

The agent reads back: status, dates, room type, guest name, and total price. This endpoint is available in the current Exely offering (does not depend on the write-API release in June 2026).

5.6 Find a Reservation by Phone (no confirmation number)

When the guest does not have the confirmation number, the agent identifies the guest in the Exely PMS by phone, then lists their currently active stays. This path requires toggle 12. Enable Guest Identification to be on (it is on by default).

The integration uses two PMS endpoints:

  • the lookup request — finds the guest profile
  • the lookup request — lists active stays for that guest

If multiple guest profiles share the same phone, the agent collects first / last name (and optionally citizenship) to disambiguate. If no profile matches, the agent offers the confirmation-number path or hands off to the hotel staff.

5.7 Auto-Setup Canvas Scenarios

If Canvas auto-setup is enabled, Exely inserts:

  • 7 hotel-specific scenarios: Room Booking, Cancellation, Modification, Booking Lookup, Room Availability, Guest Identification, Active Stays Listing
  • 7 corresponding intent types that trigger the scenarios
  • removes conflicting default appointment/reservation scenarios

This happens through:

  • Canvas setup
  • Canvas setup and library publishing

Features at a glance

FeatureSupportedNotes
Check availabilityYesRoom types, pricing, meal plans
Create reservation — link handoff (default)YesAgent sends Exely's bookingFormLink via email + SMS + chat
Create reservation — direct RESTGatedShips when Exely opens the Reservation write API (June 2026). Two-step verify → create flow already wired in code.
Cancel reservation — hotel handoff (default)YesAgent surfaces hotel phone + email from Content API contacts
Cancel reservation — direct RESTGatedShips together with direct booking (June 2026).
Modify reservationGatedSame API surface as cancellation (June 2026).
Look up reservationYesBy confirmation number, via public Read Reservation API
Recognize returning guests by phoneYesPhone-based PMS guest lookup with duplicate-profile disambiguation by name / citizenship (toggle 12).
List a returning guest's active staysYesAfter phone-based identification, the AI fetches all currently occupied / upcoming stays for the guest (toggle 12).
Payment processingNoPlanned for Phase 2
Guest check-inNoPlanned for Phase 2
Outbound remindersNoPlanned for Phase 2
Canvas auto-setupYes5 scenarios + 5 intent types
Multi-property in one projectNoOne exely_property_id per project
Webhooks from ExelyNoExely does not support webhooks

How to test that everything works

Before going live, run through this checklist.

  1. Availability — proves authentication and property targeting work
  2. Booking — proves write access and two-step flow work
  3. Booking Lookup — proves existing reservation retrieval works
  4. Cancellation — proves post-booking lifecycle works
  5. Modification — proves date/room change flow works

8.1 After Setup

After clicking Publish All, confirm:

  • exely_access_token is populated (non-empty)
  • no publish errors appear
  • exely_setup_persona_id exists
  • feature toggles have the intended values
  • hotel scenarios appear in Canvas

8.2 Test Availability

  1. Start a test conversation.
  2. Ask: "Do you have any rooms available for May 1st to May 3rd for 2 guests?"
  3. Confirm the agent says "Let me check available rooms for you" and returns room options with prices.

8.3 Test Booking

  1. Continue from availability or start a new conversation.
  2. Select a room type from the options.
  3. Provide guest details when asked (name, phone, email).
  4. Confirm the agent says "I'm booking your room now" and returns a confirmation number.

8.4 Test Booking Lookup

  1. Start a new conversation.
  2. Ask: "Can you check my reservation? My booking number is [number]."
  3. Confirm the agent returns status, dates, room type, and total price.

8.5 Test Cancellation

  1. Start a new conversation.
  2. Say: "I need to cancel my reservation. My booking number is [number], check-in [date]."
  3. Confirm the agent asks for confirmation, then cancels.

8.6 Test Modification

  1. Start a new conversation.
  2. Say: "I need to change my booking [number] to new dates [dates]."
  3. Confirm the agent checks availability for new dates and offers to update.

FAQ and Troubleshooting

Why does exely_access_token stay empty after publish?

Check:

  • Client ID and Client Secret are correctly filled in
  • Base URL is correct (https://connect.hopenapi.com for production)
  • API connection is enabled and active in the Exely extranet

Why is availability working but booking fails?

Check:

  • 08. Enable Booking is turned on
  • required guest fields are present in the conversation (name, phone)
  • if you have 13. Online Booking via API turned on, the Exely API credentials must have write permissions — if they don't, the REST call returns 403 "You cannot consume this service". Turn toggle 13 off to fall back to the link-handoff flow that works without write permissions.

Why don't I see a confirmation number after a booking?

In the default offline mode (toggle 13 off), the confirmation number is generated by Exely after the guest completes the form in the browser — the AI never sees it, so it can't read it back to the guest. Confirmation arrives at the guest's email from Exely directly.

If you need the AI to confirm the reservation by number, flip toggle 13 on (requires Reservation write API access).

Why is the AI directing guests to call the hotel to cancel?

This is the default when 14. Online Cancellation via API is off. The AI cannot call the REST cancel endpoint, so it hands the guest over to the hotel contacts defined in 15. Hotel Contact Phone / 16. Hotel Contact Email. Flip toggle 14 to True once Exely enables the write API for your client.

The hotel contact phone/email shown is wrong. How do I fix it?

Override attributes 15 and 16 manually in Builder → Attributes → 12. Exely Settings, then Publish All. Your manual values will not be overwritten by the next Content API fetch — the auto-import only runs while both fields are empty.

Why can't the agent find my reservation?

Most commonly:

  • the confirmation number format is wrong
  • the booking was made in a different property
  • 11. Enable Booking Lookup is turned off

Do I need to reconnect if credentials change?

Yes. Any time you change Exely credentials:

  1. Update the attributes in Newo
  2. Click Save
  3. Click Publish All
  4. Run at least one live test

Does this integration support multiple properties?

Not in the current implementation. One project uses one exely_property_id. For multiple properties, create separate Newo projects.

What currency are prices displayed in?

Prices are returned in the property's configured currency in Exely (e.g., GEL for Georgia, EUR for Europe, USD for international properties).

Does Exely send webhooks for booking changes?

No. Exely does not support webhooks. Booking status is checked on-demand during conversations.

10. Manager Rollout Summary

This integration is a good fit if you want the AI to handle:

  • room availability inquiries
  • hotel reservation creation
  • reservation changes and cancellations
  • booking lookup by confirmation number

This integration is not currently positioned as:

  • a CRM replacement
  • a payment processing system
  • a guest recognition system based only on caller ID

Recommended rollout order:

  1. Enable API connections in Exely extranet
  2. Generate API credentials
  3. Configure in Newo and publish
  4. Test availability
  5. Test booking
  6. Test lookup, cancellation, modification
  7. Review Canvas scenarios
  8. Go live on one hotel first

Go-Live Recommendation

For the cleanest launch:

  • start with one property only
  • keep all core features enabled unless there is a clear business reason not to
  • run at least one real booking and one real lookup before launch day
  • have a fallback human process ready for the first live shift
⬇ Download as PDF