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

# Google Calendar

> A Google Workspace admin authorizes once and ClosedLoop AI syncs your team's Google Calendar meetings, read-only, to know who met which customer.

Connect Google Calendar and ClosedLoop AI reads the Google Workspace calendars of your staff, so it knows which of your people met which customer, and when. Calendar events are context: they are never turned into product insights on their own.

## What Gets Synced

ClosedLoop AI has **read-only** access. It never creates, changes, or deletes an event, and it does not read email.

| Data | Description |
| - | - |
| Event times | Start and end time, and whether the event lasts all day |
| Title | The event's title |
| Organizer and attendees | Email addresses and names, with each attendee's response; meeting rooms and other resources are left out |
| Video meeting | The conference (Google Meet, or an add-on such as Zoom or Microsoft Teams) and its join link, stored without passcodes or other link parameters |
| Status | Confirmed, tentative, or cancelled; a cancelled event keeps its record and is marked cancelled |
| Staff directory | The name and email address of each active user in your Google Workspace, so ClosedLoop AI knows whose calendars to read |

**Private events** (events marked private or confidential in Google Calendar) are stored as busy time only: the start and end time, without the title, organizer, attendees, or join link.

**History:** ClosedLoop AI imports each calendar's full history, then keeps it up to date. Large workspaces can take a while to import; the integration shows that the history import is still running.

## What a Google Workspace Administrator Authorizes

One authorization covers your whole Google Workspace. Users do not connect one by one.

A Google Workspace **super admin** authorizes the ClosedLoop AI client ID in Google Admin (domain-wide delegation) for two read-only scopes, and nothing else:

| Scope | Why ClosedLoop AI needs it |
| - | - |
| `https://www.googleapis.com/auth/calendar.events.readonly` | Read events in your staff's calendars |
| `https://www.googleapis.com/auth/admin.directory.user.readonly` | List your staff directory, to know whose calendars to read |

ClosedLoop AI stores the administrator's email address and no passwords or Google tokens.

<Warning>Google Calendar and [Google Meet](/docs/integrations/google-meet) use the **same ClosedLoop AI client ID**. Google Admin keeps one scope list per client ID and replaces the whole list when you save, so the entry must always keep the scopes of both products. When Google Meet is already connected workspace-wide, the setup screen gives you one combined line with every scope both products need: paste it as it is, or Google Meet stops syncing.</Warning>

## Setup Guide

The same person must do the whole setup: a Google Workspace super admin who is also signed in to ClosedLoop AI, with permission to manage integrations and the same email address.

1. In ClosedLoop AI, open **Integrations** and select **Google Calendar**
2. The setup screen shows the **OAuth client ID** and the **Delegated scopes** line to paste
3. In [Google Admin](https://admin.google.com), go to **Security** → **Access and data control** → **API controls** → **Manage Domain Wide Delegation**
4. If the ClosedLoop AI client ID is not listed yet, click **Add new**, paste the client ID and the scope line, and click **Authorize**. If it is already listed (for example because Google Meet is connected), open it, click **Edit**, and add any scope from the line that is missing, separated by commas. Keep the scopes already there, then save
5. Back in ClosedLoop AI, check that the **Google Workspace admin email** is the super admin who authorized, and click **Verify calendar access**

Google can take a few minutes to apply a change. If verifying fails right after you save in Google Admin, wait a minute and try again. The setup screen marks each scope that is already authorized, and a refusal names the scope still missing.

Once connected, the integration page shows how many staff calendars are synced, how many events are stored, and when the last sync ran.

## How Sync Works

* **Ongoing sync:** ClosedLoop AI syncs calendars regularly (hourly by default), covering the past and the coming week, so new, moved, and cancelled meetings are picked up.
* **Directory:** the staff list is refreshed every few hours. New staff are added automatically; suspended accounts stop syncing.
* **Errors:** if a calendar cannot be read, ClosedLoop AI skips it without failing the connection and checks again a day later. If the authorization is removed in Google Admin, the integration shows **Action required** until an administrator authorizes ClosedLoop AI again.

## Disconnect and Revoke Access

Both steps are required to fully revoke access. Disconnecting in ClosedLoop AI alone stops the sync but leaves the authorization in place in Google Admin.

1. In ClosedLoop AI, open **Integrations** → **Google Calendar** and click **Disconnect**. ClosedLoop AI stops syncing. Events already synced are kept.
2. In Google Admin, go to **Security** → **Access and data control** → **API controls** → **Manage Domain Wide Delegation** and open the ClosedLoop AI client ID. If Google Meet is still connected, click **Edit** and remove only `https://www.googleapis.com/auth/calendar.events.readonly`, keeping the other scopes. Otherwise, delete the client ID's entry.

<Card title="Connect Google Calendar" icon="plug" href="https://app.closedloop.sh/integrations">
  Set up your Google Calendar integration in the ClosedLoop AI dashboard
</Card>


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