> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chatnorris.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Calendar

> How to connect Google Calendar to a ChatNorris agent so it checks your real availability, offers times, and creates the appointment in your calendar with an invitation to the visitor, and how to set up hours, services, holidays, and the event.

# Google Calendar

With the Google Calendar integration, your ChatNorris agent books appointments in your calendar without leaving the chat. Unlike Cal.com and Calendly, there is no external booking page here: ChatNorris calculates the free times with the rules you define and creates the event directly in your calendar. The agent:

* checks the real availability of your primary calendar;
* offers the visitor free times, always with the time zone;
* asks for their name and email (and, if you want, their phone) and waits for an **explicit yes**;
* creates the appointment in your calendar, and Google sends the invitation to the visitor, with a Google Meet link if you turn it on.

It works in the web widget, WhatsApp, Instagram, Messenger, Telegram, and Email.

## Requirements

* A ChatNorris account on the **Standard** or **Premium** plan (it's not in Free). You can see the plans at [chatnorris.ai/pricing](https://chatnorris.ai/pricing).
* At least one agent created in ChatNorris. If you don't have one yet, follow [Create an agent](https://docs.chatnorris.ai/en/guias/crear-agente-wizard.md).
* A Google account with the calendar where you want to receive appointments. Its **primary calendar** is used.
* **Owner** or **Admin** role in your ChatNorris organization.

## Connect Google Calendar

Each agent connects to one Google account.

**1. Open the agent's Integrations hub**

In ChatNorris, go to `My agents → [your agent] → Integrations` and choose **Google Calendar**.

**2. Click Connect with Google**

Google opens. Sign in with your Google account.

**3. Accept both permissions**

Google asks you for two Calendar permissions: see your busy times and create events. Leave both checked: if you uncheck either one, the connection isn't saved.

**4. Go back to ChatNorris**

The integration's page shows the connected account and the calendar's time zone. With **Test connection** you can check access whenever you want. Continue with [Configure the Action](#configure-the-action).

> [!NOTE]
>
> ChatNorris only sees the busy times of your primary calendar, without titles or details, and only creates the appointments the visitor confirms.

## Configure the Action

Connecting the account doesn't turn anything on yet. There can only be one Google Calendar Action per agent.

**1. Create the Action and define when to use it**

Go to `My agents → [your agent] → Actions`, click **New action**, and choose **Google Calendar**. In **When to use**, describe when the agent should offer times (for example, "when they want to book an assessment"). The safety rules (don't make up times, don't confirm on its own) always apply, even if you edit the text; you can go back to the original text with **Restore default text**.

**2. Set up the hours**

In the **Availability** section, you define when appointments can be booked. ChatNorris crosses these hours with what's already busy in your calendar.

**3. Check the preview and enable the action**

In **Preview**, click **Show upcoming times** to see the times the agent would offer right now with the current settings (even if you haven't saved them yet). To enable the action, you need the account connected and at least one day with hours.

> [!WARNING]
>
> **We recommend Claude Sonnet or higher** as the agent's main model (`Settings → AI`). The agent must offer only the real times the system provides; smaller models sometimes make up times or treat an appointment as booked when the visitor only seems to agree.

### Hours options

| Option | What it does |
| - | - |
| **Time zone** | By default, **the connected calendar's**. You can choose another one. |
| **Hours per day** (Monday to Sunday) | For each day, **from** and **to**, or **No appointments**. Default: Monday to Friday from 09:00 to 18:00. |
| **Appointment length** | How long each appointment lasts (30 min by default). Hidden if you add services. |
| **Buffer between appointments** | Free time before and after each appointment and your other events (0 to 60 min). |
| **Minimum notice** | How far in advance an appointment can be booked (from **No notice** up to 48 h; 2 h by default). |
| **Days ahead** | Up to how many days from today an appointment can be booked (1 to 60; 14 by default). |
| **Start times every** | How often a possible time starts: 15, 30, or 60 min (09:00, 09:30…). |
| **Times offered** | How many times the agent shows at once (3 to 8), spread across days. |
| **Ask for phone** | Besides the name and email (which are always requested, because that's where the invitation goes), the agent asks for a contact phone. It's in the **Visitor details** section. |

### Services with different lengths

The **Services** section is optional. If you offer appointments of different lengths (for example, a 30-minute massage and a 60-minute one), add each service with its length (up to 20 services):

* **No services**: all appointments last what's set in **Appointment length**.
* **With a single service**: all appointments use its length and the agent doesn't ask which one they want.
* **With two or more services**: the agent asks the visitor which service they want and looks for times of that length.

### Holidays and closed days

* **Do not offer times on holidays** (on by default): public holidays of the **Country** are skipped; by default, the country is inferred from the time zone. You can choose another country and a **Region** (or **Whole country**). The section shows the **Upcoming holidays**.
* **Closed days**: specific days when you're closed (vacations, inventory, or a new holiday that doesn't appear in the list yet). Up to 100 days.

If the visitor asks for a closed day or a holiday, the agent tells them you're closed that day and offers the closest options.

### The event in your calendar

In the **Event** section, you define how the appointment is created:

* **Event title**: by default, "Meeting with \{\{name}}". Variables: `{{name}}` (visitor), `{{email}}`, `{{service}}` (chosen service), and `{{agent}}` (agent name).
* **Add a Google Meet link**: the invitation includes a Meet video call.
* **Confirmation message (optional)**: the agent adds it when the appointment is booked; for example, how to get there or what to bring.

The appointment is created in the connected account's primary calendar, **only after the visitor confirms**, and Google sends the invitation to their email.

### How the visitor books

1. When the conversation matches **When to use**, the agent checks your real availability and offers free times (always stating the time zone).
2. The agent asks for the name and email (and the phone, if you turned it on), shows a summary, and waits for an **explicit yes** from the visitor. See which replies count as confirmation in [Visitor confirmations](https://docs.chatnorris.ai/en/guias/acciones.md#visitor-confirmations).
3. Before creating the appointment, ChatNorris checks again that the time is still free. If someone took it in the meantime, the agent offers new times.

In the **web widget**, instead of a text list, the visitor sees a **day and time picker**: they choose a day and a time, fill in their details (prefilled if they already left them in the conversation), and click **Book appointment**; that button is the confirmation. In **WhatsApp, Instagram, Telegram, Messenger, and Email**, the agent offers the times as a text list and the visitor confirms in writing.

> [!NOTE]
>
> In the **Playground** you can test the whole flow, but **a real appointment is never created** in your calendar.

### Appointments in Leads

The details the visitor enters in the widget picker are saved as their contact: the **lead** is created or updated, as with a Lead Form. Appointments booked by the agent appear in [Leads](https://docs.chatnorris.ai/en/guias/leads.md), in the **Appointment** column and in the **Appointments** section of the lead's details, and you can filter leads **Upcoming appointment**. If you delete the event in Google Calendar, the appointment shows as canceled when you open the lead.

If the agent also has the [Pipedrive](https://docs.chatnorris.ai/en/guias/pipedrive.md) Action with **Log booked meetings**, each appointment is also logged on the Pipedrive Lead as a **Meeting** activity.

### Several scheduling actions on the same agent

Google Calendar shares the scheduling classifier with [Cal.com](https://docs.chatnorris.ai/en/guias/cal-com.md) and [Calendly](https://docs.chatnorris.ai/en/guias/calendly.md): if an agent has more than one scheduling action, **only one is offered per reply**, the one that best matches what the visitor asked for. Make their **When to use** clearly different so it gets it right; the form warns you if the agent has several.

With a scheduling action ready, asking for a meeting or a call isn't a handoff, even if the visitor names an account executive or advisor: the agent offers them times. See [Human Handoff](https://docs.chatnorris.ai/en/guias/acciones.md#human-handoff).

## Disconnect

In `My agents → [your agent] → Integrations → Google Calendar`, click **Disconnect**. Disconnecting revokes access in Google and turns off the Action, without deleting its configuration.

If Google revokes access or you disconnect the account, the agent stops offering times and tells the visitor that scheduling isn't available. Reconnect the account in Integrations to resume it.

## Frequently asked questions

> [accordion] When connecting, "Missing permissions" appears
>
> On the Google screen, you left one of the two Calendar permissions unchecked. Connect again and leave both checked.

> [accordion] When connecting, "Google did not grant lasting access" appears
>
> Remove ChatNorris at [myaccount.google.com/permissions](https://myaccount.google.com/permissions) and connect again.

> [accordion] Does ChatNorris see the titles and details of my events?
>
> No. It only sees the busy times of your primary calendar, without titles or details, and only creates the appointments the visitor confirms.

> [accordion] Can I have two Google Calendar Actions on the same agent?
>
> No. There can only be one per agent. If you need different calendars, use separate agents or combine Google Calendar with [Cal.com](https://docs.chatnorris.ai/en/guias/cal-com.md) or [Calendly](https://docs.chatnorris.ai/en/guias/calendly.md), with a different **When to use** for each one.

> [accordion] Are real appointments created when I test in the Playground?
>
> No. In the Playground you can test the whole flow, but a real appointment is never created in your calendar.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.