# Google Calendar Integration

This documentation provides step-by-step instructions for setting up the Google Calendar to allow for setting up meetings through the agent. For now, the only support calendar provider is Google Calendar.

### Connecting Google Calendar

Under the Calendar sidebar, you can connect to your google account calendar as shown below. And then click on Connect Calendar button on the top right

<figure><img src="https://1583580785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVRUgVLmtuyNEZUgZ8LYH%2Fuploads%2FdyoDBnLGlR92v4xeuOeh%2FScreenshot%202025-08-16%20at%2012.06.33%E2%80%AFPM.png?alt=media&#x26;token=95401b5c-b0d1-4498-b4d7-dba537537ed7" alt=""><figcaption></figcaption></figure>

After clicking there, a new tab to allow you for connecting to your google account calendar and authorize Voicehub to access it. You will be redirected to the same above page after that with ur google account selected calendar shown in the table

### Configuring Agent

#### Schedule Event Node

To configure your agent to schedule events or meetings on calendars, you can use the newly added Calendar Event Node in agent configuration page. It needs to be connected in the agent with an edge indicating that the `use want to schedule a meeting or an evant` See attached screenshot on how to do this.

<figure><img src="https://1583580785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVRUgVLmtuyNEZUgZ8LYH%2Fuploads%2Ft7FaLSFbm8Ntec5apcA9%2FScreenshot%202025-08-16%20at%201.55.20%E2%80%AFPM.png?alt=media&#x26;token=0ee3ff30-0a5a-45b7-af9e-05de21aaf22a" alt=""><figcaption></figcaption></figure>

When configuring the node, make sure to select which calendar you would like the agent to schedule events through. This is shown in the next screenshot. You need to make sure the following extracted variables are configured (they are preconfigured for you). For `startDate` , it can be something like tomorrow or in two days or those words. Timezone of the connected calendar is used by default for scheduling the events.

```
Name	        Type	    Description
startDate	string	    When the appointment will take place
duration	string	    duration of the event
title	        string	    [Mandatory] Event title, e.g., 'Hair Cut with Stylist Anna'
attendees	string	    [Optional] Comma separated email(s) for user and stylist. 
```

<figure><img src="https://1583580785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVRUgVLmtuyNEZUgZ8LYH%2Fuploads%2FembrnEM6sGBmCcRbHWAj%2FScreenshot%202025-08-16%20at%201.57.00%E2%80%AFPM.png?alt=media&#x26;token=f491751d-0928-4053-87b3-8ce3a6c59f57" alt=""><figcaption></figcaption></figure>

This node will check the given user availability on the slot provided and either confirm the event creation if available or return back to the user with a message stating it is not available suggesting other available time slots on the date specified. Note that calendars of attendees need to be accessible by (shared with) the calendar provider email.

#### Check Availability Node

This node allows for checking the availability of the attendees emails on the given time slot. It is similar to that of the schedule event node but it does not do the scheduling part. Note that calendars of attendees need to be accessible by (shared with) the calendar provider email.\
It requires the following extracted variables to be defined, they are already preconfigured. For the `startDate` , it can be something like tomorrow or in two days or those words. Timezone of the connected calendar is used by default for checking the events.

```
Name	        Type	    Description
startDate	string	    [Required] Appointment start date and time.
duration	string	    [Required] Duration of the event in minutes, default 60.
attendees	string	    [Optional] Comma separated email(s) for user and stylist.
```

#### Reschedule Event Node

This node allows for rescheduling the event on a specific date and time to a new date. It validates that the user is available on the provided new date/time. If yes, it allows for rescheduling the event to the new date/time. If not, it informs the user of unavailability for the new date and time and gets back to them with suggestions. It asks for the following variables to be extracted

```
Name	        Type	    Description
oldStartDate	string	    [Required] Old time slot of the event to be changed.
newStartDate	string	    [Required] Old time slot of the event.
duratoin	number	    [Optional] Duration of the event in minutes, default 60.
```
