# Calendar and appointments

> Read the Calendar, book on a customer's behalf, complete, move or cancel appointments, set booking rules, and let an agent take bookings over voice, WhatsApp and web chat.

Source: https://docs.amomic.in/console/appointments

---

**Calendar** shows every appointment your agents and your team have booked. Behind it sit one or more **booking calendars**: sets of rules that decide which times can be booked at all. Your agents and your team book against the same rules, so the console and an agent can never offer different times.

Who can do what:

| You are | You can |
|---|---|
| **Member** | Read the calendar, book with **New appointment**, mark appointments complete or no-show, reschedule and cancel. |
| **Admin** or **Owner** | Everything a member can, plus open **Booking rules**, create and edit booking calendars, connect Google Calendar, and switch on booking for an agent. |

The Calendar is available on every plan.

The examples on this page come from Veloria Home, an appliance brand that books technician visits for AC service, washing-machine repairs and RO purifier installations.

![The Calendar in Week view: technician visits from Monday to Saturday, coloured by agent, with a lunch break shaded, a Google busy block on Thursday and Sunday marked Closed](https://docs.amomic.in/screens/calendar/week.light.webp)

*Week view. Each colour is one agent. Shaded bands are hours the calendar is closed.*

## Set up in five steps

::: steps
::: step Create a booking calendar
An admin opens **Calendar → Booking rules → New calendar**, sets the opening hours, booking length and limits, and selects **Create calendar**. See [Booking rules](#booking-rules).
:::
::: step Switch on booking for an agent
In **Agents → your agent → Tools**, turn on **Book appointments**. See [Let an agent book](#let-an-agent-book).
:::
::: step Test it
In the agent's **Test** tab, ask the agent for a visit, pick a time, and finish the booking.
:::
::: step Check the Calendar
The booking appears with the customer, the channel and the agent.
:::
::: step Connect Google Calendar (optional)
If your team keeps its real diary in Google, [connect it](/console/google-calendar) so Google events block times.
:::
:::

## Read the calendar

### Views and navigation

Use **‹ Today ›** to move one period back or forward, or jump back to today. Pick a view on the right:

| View | Shows |
|---|---|
| **Week** | Monday to Sunday on a time grid. Each day header reads **{N} booked**, **Free**, **Closed** or **Holiday**. The count covers only bookings that still hold time, so a past day whose visits were all marked complete reads **Free**. |
| **Day** | One day on a time grid. Phones open in this view. |
| **Month** | Six weeks of day cells, up to three bookings per cell plus **+N more**. Select **+N more**, or double-click a day, to open it in Day view. |
| **Agenda** | A list of the next 14 days from the date you're on. If nothing is booked: *Nothing booked in this stretch.* |

Two filters sit beside the views:

- **All agents** narrows the calendar to one agent's bookings.
- **All calendars** narrows it to one booking calendar. It only appears when you have more than one.

Everything you choose is kept in the page address, so you can bookmark or share a view. For example, `/calendar?view=week&date=2026-10-12&calendar=<id>` opens that week for one calendar, and `?appt=<id>` opens one appointment.

![Month view of October 2026 with three bookings per day, +N more links, Sundays marked Closed and 20 October marked Holiday](https://docs.amomic.in/screens/calendar/month.light.webp)

### What the colours and markers mean

- **Colour** is the agent that took the booking. Bookings your team added without crediting an agent have a plain border.
- A **hatched strip** under a booking is the gap after it, when nobody can book.
- **Shaded hours** are outside the calendar's opening hours. Month cells show **Closed** for a day with no hours and **Holiday** for a date in **Days you're closed**.
- **Cancelled** and **Moved** bookings stay on the grid as faint, dashed history, so you can see what changed.
- A **Busy (Google)** block is an event from a connected Google calendar. It holds the time but isn't a customer.
- When a time holds more than one booking, the block shows how many seats are taken, for example **2/3**.

The shading and the **Closed** and **Holiday** markers follow the calendar picked in **All calendars**. With all calendars shown, they follow your default calendar.

Click an empty time in Week or Day view to start a booking for that day. You can't drag to create or move bookings.

### Time zones on the calendar

A booking calendar keeps its hours in its own time zone. The grid is drawn in that zone, so 9:00 am on screen is 9:00 am for the business.

If your device is set to a different time zone, a chip appears in the toolbar: **Showing Kolkata · GMT+5:30** with **Switch to your time**. Switching redraws the same bookings in your own clock; the chip then reads **Showing your time** with **Switch to Kolkata**. It never changes the calendar's hours or any booking. Your choice is remembered in this browser.

![The Calendar toolbar with the chip Showing Kolkata · GMT+5:30 and a Switch to your time link](https://docs.amomic.in/screens/calendar/timezone-lens.light.webp)

Every other time in the console uses your workspace time zone. The appointment window's **Added** time is the exception: it uses your device's clock.

## Open an appointment

Select a booking to open it. The window's title is the booking's reference, such as **AP-6E887048**, which is also what the customer is quoted.

![An upcoming appointment for Meera Krishnan: Wednesday 14 October 2026, 12:00 pm to 1:00 pm, booked via WhatsApp, with Reschedule and Cancel appointment buttons](https://docs.amomic.in/screens/calendar/appointment-upcoming.light.webp)

At the top you see the date, the time with the calendar's zone, and **Your time** when your device is in a different zone. The status badge is one of:

| Status | Meaning |
|---|---|
| **Booked** | Holds the time. The normal state of a new booking. |
| **Confirmed** | Holds the time, like **Booked**. The console doesn't set this status. |
| **Completed** | The visit happened. |
| **No-show** | The customer didn't turn up. |
| **Cancelled** | Freed. The record stays as history. |
| **Moved** | Replaced by a booking at a new time. The new booking says *Moved from an earlier booking.* |
| **Busy (Google)** | Imported from Google Calendar. Change it in Google. |

The fields:

| Field | What it shows |
|---|---|
| **Who** | The customer's name, or their phone or email if no name was given. |
| **Phone**, **Email** | Shown when known. Select them to call or write. |
| **Calendar** | The booking calendar it was booked into. |
| **Booked via** | **WhatsApp**, **Phone**, **Web chat**, or **Added by your team** followed by the team member's name. A Google busy block shows **Google Calendar**. |
| **What for** | The service booked. Only shown when the booking carries a service; calendars set up in the console don't have services. |
| **Added** | When the booking was made, in your device's time. |
| **Agent** | **View agent** opens the agent's **Tools** tab. Shown when an agent took or was credited with the booking. |
| **Contact** | **Open in Contacts** finds the customer's contact record. |
| **Notes** | What the customer or your team noted, such as an address detail or the fault. |
| **Reason** | Why it was cancelled, for cancelled bookings. |

The appointment window doesn't list a change history. The customer's [contact record](/console/contact-memory) lists their appointments alongside calls, conversations and tickets.

## Complete, no-show, reschedule or cancel

Which buttons you get depends on whether the booking's **end time** has passed:

| The booking | Buttons |
|---|---|
| Hasn't ended yet (including one in progress) | **Reschedule**, **Cancel appointment** |
| Has ended | **Mark complete**, **No-show** |
| Is cancelled, moved, completed or a no-show | None |
| Is a **Busy (Google)** block | None |

So you can't mark a visit complete before it is due to finish, and you can't move or cancel one after it has ended.

![A 9:00 am appointment for Vikram Reddy that has ended, still Booked, with Mark complete and No-show buttons](https://docs.amomic.in/screens/calendar/appointment-past.light.webp)

**Mark complete** and **No-show** act straight away, with no confirmation. Once set, the buttons disappear: the console has no way to switch a completed visit to a no-show or back, so check before you select.

### Reschedule

::: steps
::: step Select Reschedule
The window shows the current time struck through: *Currently ~~Wednesday 14 October, 12:00 pm~~*.
:::
::: step Pick a new date and time
**New date** starts on the booking's own day. **New time** lists only times the calendar has open, without the current one.
:::
::: step Select Move appointment
You see *Moved to {time}.* The old booking becomes **Moved** and a new booking holds the new time.
:::
:::

![The Reschedule form: Currently Wednesday 14 October, 12:00 pm struck through, a New date field, the 5:00 pm slot selected, and a Move appointment button](https://docs.amomic.in/screens/calendar/reschedule.light.webp)

The new time is reserved before the old one is released. If someone else takes the new time first, you get *That time is not available — the original appointment is unchanged.* Pick another time.

A rescheduled booking keeps its customer, notes, channel and agent.

### Cancel

Select **Cancel appointment**. The form says *This frees the slot immediately. The booking stays in your history.*

Pick a **Reason**: **Customer cancelled**, **Customer didn't turn up**, **We had to cancel**, **Duplicate booking** or **Other**. **Other** asks **What happened** (up to 500 characters). Then select **Cancel appointment**.

![The cancel form with Reason set to Customer cancelled and a Cancel appointment button](https://docs.amomic.in/screens/calendar/cancel.light.webp)

::: warning The customer sees the reason
When the customer gave an email address, the cancellation email includes the reason you picked, or what you typed under **What happened**. Write it as you would to the customer.
:::

### Telling the customer

The reschedule and cancel forms each have an unlabelled switch under the time or reason, on by default. On the reschedule form its help text says it *Sends a short message on the channel they booked from.*

What you can rely on today: **moving or cancelling a booking always notifies the customer by email when the booking has an email address, whichever way the switch is set.** If you don't want the customer told, don't use these buttons; contact them yourself first. See [Confirmations and reminders](#confirmations-and-reminders).

## Book on a customer's behalf

Use **New appointment** for a customer who phoned the store, walked in or wrote to you. Any member can book.

::: steps
::: step Open the form
Select **New appointment**, or click an empty time on the grid. The button is greyed out until a booking calendar exists.
:::
::: step Pick the calendar, date and time
**Calendar** appears when you have more than one. **Time** lists only open times, with *Only times this calendar has open are shown.* When several people can share a time, it shows how many places are left, for example **9:00 am (2 left)**.
:::
::: step Add the customer
Fill in at least one of **Name**, **Phone** or **Email**: *At least one of name, phone or email is needed.* Give an email if you want the customer to get a confirmation and reminders.
:::
::: step Credit an agent, add notes
**Credit to an agent** is optional; leave it on **Your team** for a booking your team took. **Notes** takes up to 500 characters for the technician.
:::
::: step Select Book appointment
You see *Booked {time}.* The booking shows **Booked via Added by your team** with your name.
:::
:::

![The New appointment form for Thursday 15 October with 12:00 pm selected, Rahul Verma's name and phone filled in, Credit to an agent set to Your team, and a note about a washer error](https://docs.amomic.in/screens/calendar/new-appointment.light.webp)

If a day has nothing open, the picker says *Nothing open on this day.* and either *The next free day is {date}.* or *Try another date, or check this calendar's opening hours.*

The console books under the same rules as your agents: the earliest-booking limit, the booking horizon, capacity and closed days all apply. If the time was taken while the form was open, you see *That time has just been taken.*

## Booking rules

**Booking rules** (admins) lists your booking calendars. Each row shows the name, a **Default** badge, the opening hours, the booking length, the time zone, and a sentence describing the overlap rule. Select a row to edit it, or **New calendar** to add one.

![Booking rules listing two calendars: Veloria Home service visits (Default, Mon–Sat in two stretches, 60-minute bookings) and RO purifier installations (Mon–Fri, 90-minute bookings)](https://docs.amomic.in/screens/calendar/booking-rules.light.webp)

Use one calendar per set of rules. Veloria keeps technician visits (three technicians, travel time after each visit) separate from RO installations (one installer, longer jobs), because they have different hours, lengths and capacity.

The editor is titled **New booking calendar** or the calendar's name: *These rules decide every time your agents can offer.*

### What this calendar is for

| Field | What it does |
|---|---|
| **Name** | Required. A new calendar starts as *Appointments*. The form says *Only your team sees this name*, but confirmation and reminder emails use it as the business name: "Your appointment with **Veloria Home service visits** is confirmed". Pick a name your customers will recognise. |
| **Time zone** | Required. Defaults to your workspace zone. *Every time on this calendar is in this zone.* Opening hours, offered times and email times all use it. |
| Default switch (under **Name**, help text *New agents book into this one unless you pick another.*) | New calendars start with it on. Keep it on for one calendar only. |

![The booking-calendar editor for Veloria Home service visits: name, Asia/Kolkata time zone, the default switch, and opening hours of 9:00 am to 1:00 pm and 2:00 pm to 6:00 pm for each weekday](https://docs.amomic.in/screens/calendar/rules-hours.light.webp)

### When you're open

*Bookings can only land inside these hours. Your agents will say you're closed outside them.*

- Use the switch beside each day to open or close it. A day you open starts at 9:00 am to 6:00 pm. New calendars open Monday to Friday, 9:00 am to 6:00 pm.
- Times are in 15-minute steps. The closing time must allow at least one full booking.
- Select **+** (*Add a second stretch of hours*) for a lunch break. A day can have up to four stretches; **×** (*Remove these hours*) deletes one.
- **Copy** → **Copy to weekdays** or **Copy to all days** repeats one day's hours.
- *Your week at a glance* previews the week.

Hours can't run past midnight. For a late shift, split it: 8:00 pm to 11:45 pm on one day, then 12:00 am onward on the next.

### How long each booking is

| Field | Options | Default |
|---|---|---|
| **Booking length** | 15, 20, 30, 45, 60, 90 or 120 minutes | 30 minutes |
| **Gap after each booking** | None, 5, 10, 15 or 30 minutes | None |

**Booking length** also sets how often a time can start: times begin at opening and step by one booking length. A 60-minute calendar open from 9:00 am offers 9:00, 10:00, 11:00 and so on. You can't set a separate start interval in the console.

The **gap** is held after each booking and nobody can book into it. With 60 minutes plus a 30-minute gap, a 9:00 am visit holds the technician until 10:30 am, so with one technician the 10:00 am time is gone and 11:00 am is the next. Customers aren't told about the gap; the booking itself stays 60 minutes.

### Can two people book the same time?

*This is the rule your agents follow when a slot is already taken.*

| Choice | What happens |
|---|---|
| **One at a time** (recommended, default) | *A 3:00 pm booking closes that time. Nobody else can take it.* |
| **A few at once** | Pick **Up to 2 people** to **Up to 20 people**. Use it when several technicians can each take a visit at the same time. When the last place is taken, the time closes. |
| **No limit** | *Anyone can book any open time, however many turn up.* Nothing ever shows as full. Use it only when headcount truly doesn't matter. |

The sentence under the choices restates your rule with a 3:00 pm example. For **One at a time** it also spells out the gap.

![Booking length 60 minutes, Gap after each booking 30 minutes, and A few at once selected with Up to 3 people](https://docs.amomic.in/screens/calendar/rules-length.light.webp)

### Limits

| Field | Options | Default |
|---|---|---|
| **Earliest someone can book** | Right away, 1 hour ahead, 2 hours ahead, 4 hours ahead, 1 day ahead, 2 days ahead | 2 hours ahead |
| **How far ahead** | 7, 14, 30, 60 or 90 days | 60 days |
| **Days you're closed** | Any dates. Pick one under **Add a day**, then **Add**. Remove one with its **×**. | None |

**Days you're closed** overrides the weekly hours for holidays, stock-taking days or a team off-site. Those dates show as **Holiday** on the calendar.

![Limits set to 4 hours ahead and 30 days, closed days 2026-10-20 and 2026-11-09, and the Google Calendar card connected to service.desk@veloriahome.in](https://docs.amomic.in/screens/calendar/rules-limits.light.webp)

### Saving

The bar at the bottom tells you where you are: *Fix the highlighted fields to continue.*, *Unsaved changes*, *All changes saved*, or for a new calendar *Check the settings above, then create it.* Select **Create calendar** or **Save booking rules**; **Discard** undoes your edits. If you leave with unsaved edits, the console asks **Leave without saving?**

New rules apply to the next availability check straight away. Existing bookings are never moved or cancelled by a rule change.

The form stops you with:

- *Give this calendar a name.*
- *Pick a time zone.*
- *{Day} must close after it opens.*
- *{Day} is shorter than one {N}-minute booking.*
- *{Day} has overlapping hours.*
- *Open on at least one day, or nobody can book.*

The **Google Calendar** card appears below **Limits** once the calendar is saved. See [Connect Google Calendar](/console/google-calendar).

You can't archive or delete a booking calendar from the console. Bookings always keep a link to the calendar they were made in.

## Let an agent book

In **Agents → your agent → Tools**, turn on **Book appointments** (admins). It is off by default because a booking takes a real slot in your diary. The switch is greyed out until a booking calendar exists; the card links to **Set up a calendar**.

When you turn it on, the agent is bound to your default calendar. With more than one calendar, a **Calendar** list lets you pick another. The card then summarises the bound calendar's hours, length and overlap rule, with **Change these** linking to its booking rules.

::: warning Changes on the Tools tab are live immediately
Each switch saves as soon as you flip it, and the agent uses it on its next reply on every channel. There is no separate publish step for tool settings. Try the booking flow in the agent's **Test** tab before you switch it on for a busy line, and use the agent's [version history](/build/versions#read-the-version-history) if you need to see or roll back a change.
:::

### What the agent does

With **Book appointments** on, the agent:

1. checks live availability before it offers any time, using the same rules as the console;
2. offers at most three times in the customer's words (on calls, it looks no more than three days ahead and offers no more than three times);
3. books only the exact time the customer picks, and never says "booked" unless the booking succeeded;
4. if someone else takes that time first, apologises and offers the next open times.

It takes the customer's details from the channel:

| Channel | What the agent needs |
|---|---|
| **WhatsApp** | The number comes from WhatsApp. It asks for a first name if it doesn't have one. |
| **Phone** | The caller's number comes from the call. It asks for a first name; it never asks a caller to spell an email address. |
| **Web chat** | It asks for a first name and an email address, one at a time. |

Agent bookings link to the customer's contact record, creating one if needed, and appear on the Calendar under **Booked via** with the agent.

### Moving and cancelling through the agent

| Setting | The agent can |
|---|---|
| **Book appointments** on, **Let it move or cancel a booking** off | Book, and **move** the customer's own upcoming booking. It can't cancel. If asked, it says it can't cancel and offers to pass the request on. |
| **Let it move or cancel a booking** on | Book, move and cancel the customer's own upcoming booking. |

Despite its label, the second switch only controls cancelling: rescheduling is always available while booking is on. Plan for an agent that can move bookings. If you don't want customers moving bookings through the agent, keep **Book appointments** off and take bookings through your team.

Either way, the agent only finds bookings that match the phone number or email address the channel supplied, so it can't change someone else's booking. If the customer has several upcoming bookings, it reads them back and asks which one.

## Confirmations and reminders

Amomic-AI emails the customer at four moments, **only when the booking has an email address**:

| Event | Subject line |
|---|---|
| Booked (by an agent or by your team) | *Your appointment with {calendar name} is confirmed* |
| Moved | *Your appointment with {calendar name} has moved* |
| Cancelled | *Your appointment with {calendar name} is cancelled* (includes the reason) |
| Reminder | *Reminder: {calendar name}, {date and time}* |

The emails are sent from Amomic-AI, name your booking calendar as the business, and carry the date and time in the calendar's zone and the booking reference. They ask the customer to reply to you to change anything.

Reminders go out **24 hours** and **2 hours** before the start. A reminder whose moment has already passed when the booking is made is skipped, so a visit booked three hours ahead gets only the 2-hour reminder. Reminders are checked every few minutes, so one can arrive a few minutes late. Cancelled and moved bookings get no further reminders; the new booking after a move gets its own.

What you can't change in the console:

- the reminder times;
- turning these emails off;
- sending them by WhatsApp instead of email.

Customers who gave only a phone number, which includes most phone and WhatsApp bookings, get no confirmation or reminder from Amomic-AI. The agent confirms the day and time in the conversation itself. On web chat the agent always collects an email, so web bookings get emails.

A failed email never undoes a booking. The appointment on the Calendar is the record.

While the workspace is suspended for an unpaid plan invoice, none of these emails is sent. A confirmation, move or cancellation email due in that time is not sent later. A due reminder is held instead, and goes out once the invoice is paid, as long as the appointment hasn't started yet. See [When a payment fails](/operate/plan-changes#when-a-payment-fails).

## Google Calendar

Connect a Google calendar from a saved booking calendar's rules page. Bookings then appear in Google, and timed Busy events already in Google block those times for agents and your team. All-day and Free events don't block anything; use **Days you're closed** for a whole day. Follow [Connect Google Calendar](/console/google-calendar) for the full walkthrough.

## Avoiding double bookings

Every booking, whether from an agent or your team, is checked against the rules at the moment it is made, not when times were listed. If two customers pick the last place at once, one gets it and the other is offered the next open times.

- Set **Can two people book the same time?** to match how many people can really serve a time.
- Use **Gap after each booking** for travel or clean-up, rather than a longer booking length.
- A Google event only blocks time after it has synced; check **Last synced** on the Google Calendar card if a new event isn't blocking yet.
- **No limit** removes the capacity check entirely.

## Troubleshooting

::: details The agent says it can't book
Check that **Book appointments** is on in the agent's **Tools** tab and that a booking calendar exists. Then ask for a booking in the agent's **Test** tab and read its reply.
:::

::: details No times are offered on a day that should be open
Check, in order: the calendar's **Time zone**; that day's hours under **When you're open**; **Days you're closed**; **Earliest someone can book** (with 4 hours ahead, nothing before 3:20 pm is offered at 11:20 am); **How far ahead**; and existing bookings, gaps and Google busy time. A stretch of hours shorter than one booking offers nothing.
:::

::: details The agent books into the wrong calendar
Open the agent's **Tools** tab and pick the calendar in the **Calendar** list. **Use this calendar by default** only decides which calendar an agent gets when you first switch booking on.
:::

::: details A customer got no confirmation
The booking needs an email address. Open it and check **Email**. Phone and WhatsApp bookings usually have only a number, and no message is sent to it. Check the customer's spam folder too.
:::

::: details I moved or cancelled a booking and the customer was emailed anyway
Moving and cancelling always email a customer who has an email address. The switch in those forms doesn't stop it.
:::

::: details The customer received two emails when I moved their booking
A move can send both a confirmation for the new time and a "has moved" email. Both carry the same new time and reference.
:::

::: details Mark complete and No-show are missing
They appear only after the booking's end time. Before that you get **Reschedule** and **Cancel appointment**.
:::

::: details Reschedule says the time is not available
Someone took it after the list loaded. The original booking is unchanged. Pick another time.
:::

::: details The times look shifted
Check the **Showing** chip in the toolbar. **Switch to {city}** puts the grid back in the calendar's own zone. If the calendar's hours themselves are wrong, fix its **Time zone** in the booking rules.
:::

## Go-live checklist

- Each booking calendar's time zone and opening hours match the business.
- Booking length, gap and **Can two people book the same time?** match how many people can serve each visit.
- Holidays are in **Days you're closed**.
- The calendar's name reads well in "Your appointment with {name} is confirmed".
- An agent test booking appears on the Calendar with the right customer, channel and agent.
- A second attempt at a full time is refused.
- You've decided whether the agent may cancel, and you know it can move bookings either way.
- A test booking with your own email received the confirmation.
- Google Calendar, if used, passed both checks in its [guide](/console/google-calendar#step-5-verify-google-to-amomic-ai-sync).
- Someone on the team marks visits complete or no-show each day.

## Related

- [Connect Google Calendar](/console/google-calendar)
- [Tools and actions](/build/tools#appointment-tools)
- [Contacts and memory](/console/contact-memory)
