Appearance
Calendar β
The Calendar page at app.mychatbot.app/calendar is MyChatBot's native booking calendar: your AI agent books, reschedules and cancels events on it during conversations, and your team sees and manages every booking in a day/week grid β staff columns, drag-to-reschedule, client links back to the chat.
It is powered by the Calendar integration ("Native booking & scheduling for your AI agent"). This is not the Google Calendar integration β that one syncs an external Google account. See Native Calendar vs Google Calendar below.
At a glance β
| Step | Where in the app | Result |
|---|---|---|
| Enable booking | Integrations β pick your agent β Calendar (under Productivity & Scheduling) β Connect | Agent can book, reschedule and cancel events |
| Add Staff Members and Services | Same Calendar integration card, after connecting | Required β without both, booking doesn't work |
| Steer the agent | Booking Instructions on the integration card | Routing rules injected into the agent's instructions |
| See bookings | Calendar in the sidebar β app.mychatbot.app/calendar | Day/week grid of all events |
| Jump from settings | View Calendar button on the integration card | Opens the Calendar page for that agent's calendar |
Setup incomplete
The integration card warns: "Add at least one staff member and one service for the calendar to work. Without them, your agent won't be able to book events." The Calendar page enforces the same rule β trying to create an event first shows "Please add at least one staff member and one service in Calendar settings before creating events."
Set up the Calendar integration β
Open Integrations, select the agent, and find Calendar in the Productivity & Scheduling category. The settings panel is titled "Native booking & scheduling β <agent> can book, reschedule and cancel events".
Core settings β
| Setting | Default | What it does |
|---|---|---|
| Timezone | UTC | The business clock β the agent quotes and books all times in this zone (pick from common zones: Europe/Kyiv, Europe/London, America/New_York, Asia/Dubai, β¦) |
| Default Duration (min) | 60 | Event length when no service duration applies (5β480 min) |
| Business Hours Start | 09:00 | Start of the bookable window; also the top of the Calendar page grid |
| Business Hours End | 18:00 | End of the bookable window; also the bottom of the Calendar page grid |
Click Connect to enable. After connecting, a Save Config button appears whenever you change these settings.
Change the UTC default before going live
Timezone starts as UTC. Until you set it to your business's zone, a customer asking for "tomorrow at 15:00" gets booked at 15:00 UTC β hours off from what they meant. Set it first, then add staff and services.
How times and timezones work β
- The Timezone setting is the calendar's clock. The agent interprets customer requests and quotes available slots in this timezone: "15:00" means 15:00 business time, regardless of where the customer is writing from. Business Hours and each staff member's Schedule are anchored to it too.
- The Calendar page grid, the New Event form and the event detail panel display times in your computer's timezone (the browser clock). If your computer is set to the same zone as the integration, everything lines up 1:1; a teammate viewing from another timezone sees the same events shifted to their local time.
- If your customers sit in a different timezone than the business, spell that out in Booking Instructions (e.g. "Customers are in New York; the calendar runs on Europe/Kyiv time β always confirm which timezone the customer means"). The agent has no automatic per-customer timezone detection.
Staff Members β
Click + Add Staff and fill:
| Field | Notes |
|---|---|
| Name | Shown on events, in filters, and as a day-view column header |
| Role | Optional label (e.g. "Stylist") β also injected into the agent's instructions |
| Color | Pick from 10 colors; event blocks and column headers use it |
Each staff row shows its #number β use these numbers when writing Booking Instructions. Per staff member you can also:
- Edit β rename or change the role.
- Schedule β set a per-day working schedule. By default it "Uses business hours (MonβFri)"; tick individual days (MonβSun) and set a startβend time for each, then Save Schedule.
- Γ β delete the staff member.
Services β
Click + Add Service and fill:
| Field | Notes |
|---|---|
| Name | What the agent and the New Event form offer |
| Duration (min) | Auto-fills the event length when this service is selected |
| Price | Optional ($); shown next to the service and given to the agent |
Services also get a #number for use in Booking Instructions.
Booking Instructions β
Once you have at least one staff member or service, a Booking Instructions section appears:
- A read-only preview labeled "Auto-injected into agent's instructions:" lists your staff and services with their numbers, names, roles, durations and prices β this is what the agent knows automatically.
- A free-text box for your own rules, e.g. "Staff #1 (Anna) handles only Service #2 (Haircut) and #3 (Coloring). Always require phone number. Minimum 24h advance booking."
Click Save Config to apply.
Write rules by number
Reference staff and services by the #numbers shown in the lists ("Staff #1", "Service #2"). That's the unambiguous way to route bookings β names can repeat or change.
Remove the integration β
Remove opens a confirmation ("Remove Calendar Integration"): "This will delete the integration configuration. Your existing events will not be deleted." Events stay in place; only the agent's booking ability and the configuration are removed. There is no event-delete anywhere β see Event details for what Cancelled does instead.
The Calendar page β
Open Calendar in the sidebar (app.mychatbot.app/calendar). If no agent has the Calendar integration connected, the page shows "Calendar integration not connected".
Toolbar β
| Control | What it does |
|---|---|
| Today | Jump back to the current day/week |
| βΉ / βΊ | Previous / next day (Day view) or week (Week view) |
| + New Event | Open the manual booking form |
| Cancelled | Toggle pill β show cancelled events (hidden by default) |
| Agent picker | Appears when the account has calendars for several agents; each calendar is named after its agent |
| Staff filter | All staff or a single staff member β filters events and day-view columns |
| Day / Week | Switch views; your choice is remembered for next time |
The grid β
- Day view shows one column per staff member, each headed by the staff name and color dot. Filtering to one staff member shows only that column.
- Week view shows the whole week (Monday-start) in a single grid.
- On mobile the page always uses Day view.
- The grid spans your Business Hours (default 09:00β18:00) in 15-minute slots.
- If nothing is booked in the visible range, the grid reports "No events found".
Each event block is tinted with the staff member's color and shows a status dot, the client name, the service and the staff member:
| Status | Dot color | Notes |
|---|---|---|
| Confirmed | Blue | Default for every new booking (agent or manual) |
| Completed | Green | Locks the event β details become read-only |
| Cancelled | Gray | Hidden unless the Cancelled toggle is on; locks the event |
| No Show | Indigo | Customer didn't come; event stays editable |
Reschedule by drag β
Drag an event to a new time (or another staff column in Day view), or drag its edge to change the duration. The change saves immediately β "Event updated" on success, "Failed to update event" otherwise. There is no conflict check on drag: the move saves even if it lands on an occupied slot (see Availability & conflicts), and the customer is not told about the new time (see Customer notifications).
Availability & conflicts β
Whether a slot is protected from double-booking depends on who is booking:
| Action | Conflict check |
|---|---|
| Agent offers slots | Only free slots: inside business hours (or the staff member's Schedule), in the future, and not overlapping any existing event for that staff member |
| Agent books or reschedules | Blocked β the booking is refused with a conflict message naming the occupying event, and the agent asks the customer to pick a different time |
| + New Event form | No check β the event saves ("Event created") even if the staff member is already booked; both events sit side by side in the column |
| Drag / resize on the grid | No check β the move saves ("Event updated") even onto an occupied slot |
How conflicts are decided:
- Conflicts are per staff member: two customers can both hold 15:00 with different staff, but the agent will never give two customers the same 15:00 with Anna.
- Cancelled events free their slot immediately. Confirmed, Completed and No Show events keep blocking it.
- The agent's conflict check applies to any overlap, not just identical start times β a 60-minute service starting at 14:30 blocks the 15:00 slot too.
- Rules the calendar can't express β minimum advance notice, buffer time between bookings β go in Booking Instructions (e.g. "Minimum 24h advance booking").
Manual bookings can double-book
Only the agent is stopped from overlapping bookings. + New Event and drag-reschedule trust your team completely β the app shows no warning when you create or drop an event onto an occupied slot. Check the staff column before you save.
Create an event manually β
Click + New Event, or click/drag an empty slot in the grid (the slot's time β and in Day view, its staff column β is pre-filled). The New Event form:
| Field | Required | Behavior |
|---|---|---|
| Date | yes | β |
| Start Time | yes | Changing it recalculates End Time from the service duration |
| End Time | yes | Auto-filled; edit freely. An end before the start is treated as crossing midnight (next day) |
| Staff Member | yes | "Select staff..." dropdown |
| Service | yes | "Select service..." β picking one sets the duration; hint shows "Duration: N min (based on selected service)" |
| Client Name | yes | Type 2+ characters to search your existing clients |
| Phone | one of Phone/Email | International format, validated ("Invalid phone number") |
| one of Phone/Email | Validated ("Invalid email"); missing both shows "Phone or Email is required" | |
| Notes | no | Free text, visible in the event details |
Typing in Client Name or Phone searches your client base; picking a match fills name, phone and email and marks the field Linked β the event is tied to that client's card. A live Duration line updates as you adjust times.
Create Event saves the booking with status Confirmed ("Event created"). Incomplete forms show "Please check the required fields."
Before you save
The form does not check the slot is free β an event on top of an existing booking saves without warning (see Availability & conflicts). And there is no way to delete an event afterwards: a test or mistaken event can only be hidden by setting its Status to Cancelled β which then locks it for good (see Event details).
Event details β
Click any event to open its side panel (header shows the booking Ref):
- Status badge and start date/time at the top.
- Time Info β Start Time, End Time, Duration, Channel (which channel the customer booked through, when the agent made the booking), Created, and Updated if it changed since.
- Client β View Client Card and Chat β View Chat links appear when the event is tied to a client/conversation β they jump straight to the client's card and the exact chat where the booking happened.
- Edit Details β change Status (Confirmed / Completed / Cancelled / No Show), Staff, Service, Client Name, Phone, Email and Notes, then Save Changes ("Event updated").
Times are changed on the grid
Start and end times are read-only in the panel β drag the event on the calendar to reschedule or resize it.
Completed and Cancelled are final β no undo, no delete
Once an event is Completed or Cancelled, the panel switches to read-only β no further edits, including status. The app offers no way to revert a locked status and no way to delete an event (removing the whole integration doesn't delete events either). If you mis-click Completed on the wrong event, it stays that way β double-check the Ref and client before Save Changes. No Show does not lock the event. To get rid of a test or garbage event, set it to Cancelled: it disappears from the grid (unless the Cancelled toggle is on) but remains in the calendar's history.
How agent bookings appear β
When a customer books through any connected channel (WhatsApp, Instagram, website widget, voice, β¦):
- The agent uses the staff, services, business hours and Booking Instructions you configured to offer and confirm a slot.
- The event lands on the Calendar page as Confirmed, colored by the assigned staff member.
- The detail panel shows the Channel it came from, plus View Client Card and View Chat links back to the conversation.
The agent can also reschedule and cancel existing bookings when the customer asks β cancelled events disappear from the grid until you switch on the Cancelled toggle.
Customer notifications β
Changes made from the staff side are silent. Creating an event with + New Event, dragging it to a new time, or switching its Status to Cancelled in Edit Details sends the customer nothing β no chat message, no confirmation, no email. There are also no automatic reminders before an event.
| Change | Does the customer hear about it? |
|---|---|
| Agent books / reschedules / cancels in the conversation | Yes β as part of the chat itself: the agent confirms in its reply |
| Staff creates via + New Event | No |
| Staff drags to reschedule | No |
| Staff cancels or edits via Edit Details | No |
| Upcoming-event reminder | No β doesn't exist |
To tell the customer yourself, open the event and follow View Chat to their conversation, then message them there. For automated re-engagement (reminders before the visit, win-back after a cancellation or No Show), set up Follow-ups β the calendar itself won't do it.
Dragging doesn't tell anyone
When you drag a booking to a new time, the customer still expects the original time β the app saves the change and stops there. Make messaging the client part of your reschedule routine.
Native Calendar vs Google Calendar β
| Calendar (native) | Google Calendar | |
|---|---|---|
| Where events live | Inside MyChatBot β viewable at /calendar | In your Google account's calendars |
| Staff & services | Built in: staff members with schedules and colors, services with duration and price | None β you steer via agent instructions |
| Manage bookings in the app | Full grid: drag to reschedule, statuses, manual events, client/chat links | No in-app view |
| Statuses & no-show tracking | Confirmed / Completed / Cancelled / No Show | Not tracked |
| Best for | Service businesses running bookings inside MyChatBot (salons, clinics, studios) | Teams that already live in Google Calendar and want invites there |
You can connect both to the same agent, but pick one as the source of truth for bookings β they don't sync with each other.
Use cases β
- Salon / clinic / studio front desk β the agent books clients into the right specialist's column 24/7; staff check their day at a glance.
- Service routing β Booking Instructions like "Staff #1 (Anna) handles only Service #2 (Haircut)" keep every booking with the right person.
- Manual + AI bookings in one place β receptionists add walk-ins and phone bookings via + New Event, linked to existing client cards, next to agent-made bookings.
- No-show follow-up β mark missed events No Show, then jump to the chat via View Chat to re-engage the client.
Test it β
- On a test agent, open Integrations β Calendar β Connect, then add one staff member (+ Add Staff) and one service (+ Add Service).
- In your agent's chat (any connected channel or the test chat), ask to book the service β e.g. "Book me a haircut tomorrow at 15:00." Confirm a slot.
- Open app.mychatbot.app/calendar β the event should appear as Confirmed in the staff member's column at the agreed time.
- Click the event: check Channel, and follow View Chat back to the conversation.
- Conflict check: from a second test conversation, ask to book the same staff member at the same time β the agent should refuse the occupied slot and offer a different time. Then try the same overlap with + New Event: it saves without warning β that guard exists only on the agent side.
- Timezone check: with Timezone set to your business zone (not UTC), confirm the "15:00" the agent agreed to in chat is where the event sits on the grid β if it's shifted, compare your computer's timezone with the integration's Timezone setting.
- Drag the event to a new slot β expect "Event updated". Note that the customer's chat shows nothing about the change. Then ask the agent (in the same chat) to cancel the booking, switch on the Cancelled toggle, and confirm the event shows with a gray status dot.
- Create one booking manually with + New Event, typing an existing client's name β confirm the Linked badge appears and the event lands on the grid.
See also β
- Google Calendar integration β connect an external Google account instead (or alongside).
- Integrations overview β everything else your agent can connect to.
- Follow-ups β re-engage clients who cancelled or didn't show.