What Booking covers
Booking is the diary and the front desk for any business that sells its time: appointments by the minute, stays by the night, online sessions, or all three. One menu, one set of rules, one diary, and four ways in that all obey the same rules: your public page, your AI agent in the chat, Claude, and the app itself.
- Services. Name, length, price, category, a "what to bring" note, and a held-online flag with one meeting link. Or a stay: check-in and check-out times, shortest and longest stay, identical units, instant or by request.
- Hours and rules. A week with breaks, a slot grid, a gap after each appointment, minimum notice, how far ahead, and how many can run at once.
- The diary. Week, day, month and list views; add a walk-in with a click, drag an appointment to move it, mark it visited or no-show, and a "Needs you" list of what is waiting.
- The booking page. Your own address, with a look you choose, where customers pick a service and a time.
- The agent and Claude. The agent books, finds, moves and cancels inside the conversation on WhatsApp, Instagram, Messenger and your website chat; Claude runs the whole setup and the diary in plain words.
- WhatsApp messages. An invitation, a confirmation, a reminder and a cancellation, each its own template, with timing and wording you can change per service.
- Google Calendar, both ways. Appointments appear there; whatever else is in that calendar blocks the diary. For stays, calendar links from Airbnb or Booking.com block nights too, and each stay gives you a calendar link to paste back.
- Fewer no-shows, fuller days. Customers confirm, move or cancel from the link in their confirmation; a deposit can be asked on the appointments that need one; and a waitlist offers a freed slot to the next person.
- Staff. Appointments are assigned to a person, customers can ask for the same one again, and each person's day shows on its own.
- Your CRM and your other apps. Every booking is filed on the customer's contact (booked, moved, cancelled, visited, no-show) so your agent and CRM know who they are. With Sales connected you can book a lead in from the lead page or a journey step, and a booking marks the lead as booked so its journey stops chasing.
The rest of this guide takes them in the order that works. Skip what does not apply: a salon has no use for stays, a villa has no use for a lunch break.
What you need first
About an afternoon, and four things in place. Then you have a diary that customers can book into on their own: from a link, from the chat, or by you in the app, with Claude able to run the whole thing.
- Access to Booking. Sign in at booking.assistantlabs.io with your AssistantLabs account. If Booking is not switched on for your workspace you land on a request-access page; send the request there.
- Your hours and your menu, on paper. The services you sell with a length and a price each, and the days and hours you work. Ten minutes of writing saves an hour of clicking.
- An agent, for the chat and the messages. The booking page and the diary work without one. The agent that books in the conversation, and the WhatsApp confirmations, need an AssistantLabs agent with a WhatsApp number. Build it in the Agents app and connect its WhatsApp.
- The AssistantLabs plugin in Claude, if you want the Claude route. Every "With Claude" block below works through the Booking tools that come with the AssistantLabs plugin. Install it once: Claude or ChatGPT.
Setting this up for a client? Booking is one of the modules you switch on per client. Do every step below inside the client's own workspace, so the diary, the page and the agent belong to them.
Want the bigger picture first, what each part does and how Booking works with the other apps? Read Booking: what it does.
Add your services
A service is one thing a customer can book: a name, how long it takes, what it costs, a category that colours the diary, a note on what to bring, and, if it is a video session, one meeting link that goes into every confirmation. The length decides how much room it takes in the diary, so be honest about it. For nights instead of minutes, see the stays section.
What Claude does: reads the menu with list_services, then adds each service with add_service (name, durationMin, price, category, and the note in preparation). A service goes live the moment it is created.
What to check Ask "show me the menu" and compare every length and price to your paper list. Then open Services in the app: each service shows up there, grouped by category.
No menu written yet? Say "Load the hair-salon example menu". Claude calls seed_hair_salon_example, which adds an example menu (haircuts, colour, treatments) in the workspace language and skips names that already exist. Edit or delete anything afterwards.
Customers who read another language: add "and give each service an English name too". Claude fills nameByLocale, so the English-speaking customer is sent "Haircut" while your diary keeps your own name.
Open Services. On an empty menu there are two buttons: load the hair-salon example, or add a service of your own.
- Leave What it books on An appointment. (A stay is for whole nights: a villa, a cabin, a room.)
- Type the Name and pick or type a category under Where it sits on the menu. Categories colour the diary.
- Click a Duration. The page tells you how much diary the service blocks, gap included.
- Enter the Price, or leave it empty so the page asks the customer to get in touch for a price.
- Add What to bring ("Come with dry hair"). It is sent with the confirmation, and your agent says it in the chat.
- Click Create service. Repeat for each service.
What to check Back on Services, every service is listed under its category. A service you are not ready to sell can be hidden from the page with its "Show on the public page" switch; you and your agent can still book it.
Sell nights, not just appointments
A villa, a cabin or a guest room is booked by the night, not by the minute. A stay ignores opening hours, is priced per night, and can be confirmed on the spot or held until you approve. Skip this section if you only sell appointments.
What Claude does: calls add_service with kind "stay" and a stay block (checkInTime, checkOutTime, minNights, maxNights, units, maxGuests, approval "request" or "instant", icalImportUrls); the price is per night. Later, get_free_nights shows which nights are free, and a request is answered with update_appointment: confirmed approves it (pass price to quote the total), cancelled declines it.
What to check Ask "which nights are free in the next month in the Hillside cabin?" and compare with your Airbnb calendar: nights booked there should be gone.
- Click Services, then Add service. Under What it books choose A stay (“Whole nights: a villa, a cabin, a guest room”).
- Fill Check-in from, Check-out by, Shortest stay (nights), Longest stay (nights), How many identical units and Most guests per booking, and the price per night.
- Under How a booking is confirmed pick Booked instantly, or You approve each request: the dates are held while you decide, and you can set the price when you approve.
- Click Create service. Then, under Calendar sync, paste each Airbnb or Booking.com calendar link under Calendars to import, and paste Your calendar link into those sites so they see nights booked here.
What to check Use "Test" next to an imported calendar link: it reports how many bookings it found. A request waiting for you shows in the Diary under "Needs you".
Set opening hours and rules
Every time a customer is offered is worked out from two things: the week you work, and four rules that turn it into slots. A new workspace starts with a sensible week (Sunday to Thursday 9:00 to 19:00, Friday 9:00 to 14:00), so change what is not yours.
What Claude does: reads the current setup with get_booking_setup, then calls update_booking_setup once with the whole week in hours (weekday 0 is Sunday; a day with two windows has a break; an empty day is closed), plus bufferMin 15, minNoticeMin 120, maxAdvanceDays 30 and capacity 2.
What to check Ask "what are my opening hours now?" and read every day back, Saturday included. Hours replace the whole week at once, so a day Claude forgot to repeat would be a day that closes. Then ask "show me free slots for a women's haircut this week" (get_free_slots): the first and last times should match your hours.
Two pages under Settings, both in the "Business" group.
- Click Settings, then Opening hours.
- For a day with different hours, change the Open times. For a break, click Add a window and fill the second one. A day can have up to three windows.
- Remove a window with its ×. A day with no window is Closed.
- Check the Timezone is yours, then Save changes.
- Click Booking rules. Slot grid is how often a free time starts (30 minutes is typical).
- Gap after each appointment is your tidy-up time. It is never offered as bookable time.
- Minimum notice and Book up to (days ahead) keep last-minute and far-off bookings out.
- Chairs / people working at once is how many appointments can overlap. Then Save changes.
What to check Open the Diary and look at tomorrow: closed time is shaded, so a lunch break and a closed day are visible.
Publish your booking page
Your booking page is the link you put in your bio, your ads and your WhatsApp profile. A customer picks a service, then a time. No app to download, no account to open.
What Claude does: reads get_booking_setup for the current address, then calls update_booking_setup with slug and publicBookingEnabled. If the address is taken it says so and you pick another.
What to check Open booking.assistantlabs.io/book/studio-noa in a private window, the way a customer would, and pick a service.
What Claude does: sets the accent, header, corners, layout, prices, duration, WhatsApp button and welcome line on the page, then shows you the link to check.
- Click Settings, then Business. Type a Page address (lowercase letters, digits and dashes) and Save changes. Choose it once: changing it later breaks the old link.
- Click Settings, then Public page. Check Customers can book from the public page is on. Off pauses online booking; the link keeps working and shows your phone number.
- Under How the page looks pick an Accent, a Header, Corners and a Service layout. Decide whether to show prices and how long each service takes, whether to offer WhatsApp as well, and write a Welcome line.
- Click Save changes, then Copy link.
What to check Click "Open the page" and book a test appointment as a customer. It appears in your Diary at once, marked as booked online.
Let your agent book
Connect your AssistantLabs agent and a customer on WhatsApp, Instagram, Messenger or your website chat can ask for a time and get it, inside the conversation. Booking installs the tools on the agent for you; you do not edit the agent.
What Claude does: lists your agents with list_connectable_agents (the connected one is marked), then calls connect_agent with the id. That installs the booking tools on the agent. Running it again re-installs them.
What Claude does: switches the agent's scheduling mode (book, send the page, or both) and re-installs its tools to match.
- Click Settings, then Your agent.
- Under Choose an agent… pick your agent and click Connect. The page says it is connected and that the tools are installed.
- Under How the agent schedules choose one of three. Leave Book, or send the page unless you have a reason: the agent books when the customer is ready and sends the page when they would rather look first.
What the agent does in the conversation
- It checks the real diary: whether you are open on a day (
check_free_busy), and which times fit a service (get_available_slots). A time that does not fit is refused, and the refusal carries nearby free times to offer. - It books (
book_appointment), finds a customer's appointments (find_appointments) and cancels (cancel_appointment). A reschedule is a cancel plus a new booking, under the same rules. - It never asks a customer for the number they are already writing from. On a website chat it asks for a number only when booking needs one.
- Every booking is filed on the customer's contact, so your CRM and the agent both see it.
What to check Open the agent's test chat in the Agents app and write "Can I come Thursday afternoon for a men's haircut?" Then look in your Diary for the booking. Booked on WhatsApp it reads "Booked by the agent".
Confirmations and reminders
Four WhatsApp messages: an invitation to book, a confirmation the moment a booking is made, a reminder before the appointment, and a cancellation. They go out from your agent's WhatsApp number, which is why the agent comes first.
What Claude does: calls setup_booking_messages, which submits the four templates and binds each to its moment in one step (safe to run twice: one that already exists is left alone). It sets the reminder lead time with update_booking_setup (reminderMinutesBefore, in minutes) and checks the state with list_booking_messages. It needs a connected agent with its WhatsApp number.
What to check Ask again tomorrow: "which booking messages are approved?" When they are, make a test booking with your own phone number and see the confirmation arrive. Do not test with a customer's number; the message really goes out.
To ask one person to book, say “Invite 050-123-4567 to book a women's haircut”: invite_to_book sends the invitation with the next free times in it, and their reply goes to your agent, which finishes the booking.
- Click Settings, then WhatsApp messages. With no agent connected the page only asks you to connect one: do the previous section first.
- Under Set it up in one step click Create the messages. Four messages are written in your language, sent to WhatsApp for approval and switched on.
- Under Reminder before the appointment choose Send it this long before (from half an hour to a week; a day is the default). Click Save.
- Open a service and fill What to bring: it is added to the confirmation. A service can also have its own messages or its own reminder time.
What to check Come back in a day. Each message shows "Waiting for WhatsApp" until approved, then "Approved by WhatsApp". Only then make a test booking with your own number.
Connect Google Calendar
Optional, and worth the five minutes if you already live in Google Calendar. Appointments appear there as events, and anything else in that calendar (a holiday, a dentist) takes those hours off what customers can book. You can switch each direction on or off.
What Claude does: connects the calendar, switches both directions on, and tells you what you need to share with the calendar if it cannot reach it yet. Then ask for free slots on a day you have something in the calendar and check that time is gone.
- Click Settings, then Google Calendar. Under Share a calendar with us (no sign-in, no Google review) the page shows the address to share with.
- In Google Calendar hover the calendar under “My calendars”, click its three dots and choose “Settings and sharing”.
- Under “Shared with” click “Add people and groups”, paste that address, set the permission to Make changes (see private events as free/busy) and click “Send”. Nobody gets an email.
- In the same side menu click “Integrate calendar” and copy the Calendar ID. For your own calendar it is your Gmail address.
- Back in Booking paste it under Calendar ID and click Connect this calendar. Then switch Appointments appear in Google and Google events block the diary on or off as you like.
Prefer to sign in? The same page has "Or sign in with Google". Sharing is the simpler path because it needs no Google consent screen.
What to check Make a test booking: it shows up in Google Calendar as an event. Then add a private errand to that calendar and look at the Diary: the time appears as a hatched "Busy" band with its title, which only you see.
Run the diary day to day
Whoever booked, from the page, the agent, Claude or you, it lands in one diary. This is the daily loop: see the day, add a walk-in, move what changes, close what happened.
What Claude does: reads the day with list_appointments (filter by dates, status or phone), finds the time with get_free_slots, books with book_appointment and closes the other with update_appointment (completed or no_show). To move an appointment, ask it to cancel and book at the new time. From the app and Claude the business is not held to the customer's notice rules, but still to hours and capacity.
- Pick Week, Day, Month or List. Closed time is shaded; events from your Google calendar show as hatched Busy bands.
- For a walk-in or a phone booking, click an empty slot (or New appointment), choose the service, day and time, type the name and phone, and click Book appointment.
- To move an appointment, drag its block to the new time; the rules are checked again. Click a block to see who, what, when, notes and its history.
- When an appointment is over, click Mark as visited or No-show. A cancelled appointment frees its slot.
- Check Needs you: appointments that passed and were never closed, a customer with no phone number, an empty menu, a page switched off, and stay requests waiting for an answer.
Where it goes next: each booking, move, cancellation, visit and no-show is written on the customer's contact in your CRM, with who booked it, so the agent and your team see the history before replying.
Your first week
You do not need to do everything on day one. This order keeps the risky bits (messages going to customers) for when the rest has been seen working.
- Day 1. Services and opening hours. Book one test appointment yourself from the app and see it on the grid.
- Day 2. The rules and the page. Open the link on your phone, as a customer, and book through it.
- Day 3. Connect the agent and create the WhatsApp messages. They wait for WhatsApp, so do it early.
- Day 4. Connect Google Calendar, then put the link in your bio and your WhatsApp profile.
- Day 5. Approved messages: make a test booking with your own number and read the confirmation as a customer would.
- End of the week. Open the Diary. "Needs you" lists what is waiting: appointments that happened and were never closed, a customer with no phone number, an empty menu, a page switched off. Mark each past appointment "Mark as visited" or "No-show". On Services, see how often each service was booked this month.
Common mistakes
- Changing the page address after you shared it. The old link stops working. Choose it once, before it is in your bio and your ads.
- Expecting messages before WhatsApp approves them. Created is not approved. Until WhatsApp approves a template, that message is not sent. Check the state on the WhatsApp messages page.
- A customer booked with no phone number. No confirmation and no reminder can be sent to them. The Diary lists it under "Needs you".
- Testing messages on a real customer's number. They are real WhatsApp messages. Test with your own number.
- Forgetting that hours replace the whole week. In the app the editor sends the full week. With Claude, ask it to read the setup first and tell you the week back before it saves.
- Switching the page off and wondering why nobody books. The link keeps working but shows your phone number instead of times. The Diary says "Your booking page is closed" under "Needs you".
- Sharing a calendar with the wrong permission. Use exactly the one the page asks for, "Make changes (see private events as free/busy)": a read-only share cannot receive your appointments.