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

# Google Calendar

> Integrate your application with the Google Calendar API

## 🚀 Quickstart

Connect to Google Calendar with Nango and see data flow in 2 minutes.

<Steps>
  <Step title="Create an integration">
    In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> *Configure New Integration* -> *Google Calendar*.

    <Note>
      Nango has credentials you can use for testing. Activate them in the dashboard.
    </Note>
  </Step>

  <Step title="Authorize Google Calendar">
    Go to [Connections](https://app.nango.dev/dev/connections) -> *Add Test Connection* -> *Authorize*, then log in to Google Calendar. Later, you'll let your users do the same directly from your app.
  </Step>

  <Step title="Call the Google Calendar API">
    Let's make your first request to the Google Calendar API (fetch a list of calendars). Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):

    <Tabs>
      <Tab title="cURL">
        ```bash theme={null}
        curl "https://api.nango.dev/proxy/calendar/v3/users/me/calendarList?maxResults=10" \
          -H "Authorization: Bearer <NANGO-SECRET-KEY>" \
          -H "Provider-Config-Key: <INTEGRATION-ID>" \
          -H "Connection-Id: <CONNECTION-ID>"
        ```
      </Tab>

      <Tab title="Node">
        Install Nango's backend SDK with `npm i @nangohq/node`. Then run:

        ```typescript theme={null}
        import { Nango } from '@nangohq/node';

        const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' });

        const res = await nango.get({
            endpoint: '/calendar/v3/users/me/calendarList',
            params: { maxResults: 10 },
            providerConfigKey: '<INTEGRATION-ID>',
            connectionId: '<CONNECTION-ID>'
        });

        console.log(res.data);
        ```
      </Tab>
    </Tabs>

    Or fetch credentials dynamically via the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get).

    ✅ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.
  </Step>

  <Step title="Implement Nango in your app">
    Follow our [Auth implementation guide](/guides/primitives/auth) to integrate Nango in your app.

    To obtain your own production credentials, follow the setup guide linked below.
  </Step>
</Steps>

## 📚 Google Calendar Integration Guides

Nango maintained guides for common use cases.

* [How to register your own Google Calendar OAuth app](/api-integrations/google-calendar/how-to-register-your-own-google-calendar-api-oauth-app)\
  Register an OAuth app with Google Calendar and obtain credentials to connect it to Nango

* [How to setup webhooks with Google Calendar on Nango](/api-integrations/google-calendar/webhooks)
  Set up Google Calendar push notifications using notification channels to receive real-time calendar and event updates

* [Google App & Security Review](/api-integrations/google-shared/google-security-review)
  Pass Google's OAuth app verification to go to production

Official docs: [Google Calendar API documentation](https://developers.google.com/workspace/calendar/api/v3/reference)

## 🧩 Pre-built syncs & actions for Google Calendar

Enable them in your dashboard. Extend and customize to fit your needs.

### ACL

| Function name     | Description                                           | Type                                         | Source code                                                                                                                     |
| ----------------- | ----------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `delete-acl-rule` | Delete an access control rule from a calendar         | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/delete-acl-rule.ts) |
| `get-acl-rule`    | Get an access control rule by ID                      | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/get-acl-rule.ts)    |
| `list-acl-rules`  | List ACL rules for a calendar with pagination support | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/list-acl-rules.ts)  |
| `update-acl-rule` | Update an access control rule                         | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/update-acl-rule.ts) |

### Calendar

| Function name     | Description                                                     | Type                                         | Source code                                                                                                                     |
| ----------------- | --------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `create-acl-rule` | Create an access control rule                                   | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/create-acl-rule.ts) |
| `find-free-slots` | Query free/busy data and return gaps meeting a minimum duration | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/find-free-slots.ts) |
| `get-colors`      | Return available calendar and event color definitions           | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/get-colors.ts)      |

### Calendar List

| Function name             | Description                                                               | Type                                         | Source code                                                                                                                             |
| ------------------------- | ------------------------------------------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `insert-calendar-to-list` | Add an existing calendar to the user's calendar list with optional colors | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/insert-calendar-to-list.ts) |

### CalendarList

| Function name         | Description                               | Type                                         | Source code                                                                                                                         |
| --------------------- | ----------------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `watch-calendar-list` | Subscribe to changes in the calendar list | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/watch-calendar-list.ts) |

### Calendars

| Function name                | Description                                                       | Type                                         | Source code                                                                                                                                |
| ---------------------------- | ----------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `clear-calendar`             | Clear a calendar by deleting all events                           | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/clear-calendar.ts)             |
| `create-calendar`            | Create a new secondary Google Calendar with the specified title.  | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/create-calendar.ts)            |
| `delete-calendar`            | Delete a secondary calendar                                       | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/delete-calendar.ts)            |
| `get-calendar-list-entry`    | Retrieve a calendar list entry with access role and colors        | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/get-calendar-list-entry.ts)    |
| `get-calendar`               | Get a calendar by ID                                              | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/get-calendar.ts)               |
| `list-calendars`             | List calendars in the user's calendar list                        | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/list-calendars.ts)             |
| `query-free-busy`            | Return free/busy blocks for one or more calendars in a time range | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/query-free-busy.ts)            |
| `remove-calendar-from-list`  | Remove a calendar from the user's calendar list                   | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/remove-calendar-from-list.ts)  |
| `update-calendar-list-entry` | Update a calendar list entry's settings                           | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/update-calendar-list-entry.ts) |
| `update-calendar`            | Update a calendar's metadata                                      | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/update-calendar.ts)            |

### Channels

| Function name  | Description                           | Type                                         | Source code                                                                                                                  |
| -------------- | ------------------------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `stop-channel` | Stop push notifications for a channel | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/stop-channel.ts) |

### Events

| Function name              | Description                                                                     | Type                                         | Source code                                                                                                                              |
| -------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `add-attendee`             | Add an attendee to an existing calendar event                                   | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/add-attendee.ts)             |
| `create-all-day-event`     | Create an all-day calendar event using start and end dates                      | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/create-all-day-event.ts)     |
| `create-event`             | Create a calendar event                                                         | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/create-event.ts)             |
| `create-recurring-event`   | Create a recurring event with supplied start, end, and RRULE values             | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/create-recurring-event.ts)   |
| `delete-event`             | Delete a calendar event                                                         | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/delete-event.ts)             |
| `get-event`                | Get an event by ID from Google Calendar                                         | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/get-event.ts)                |
| `import-event`             | Import an event as a private copy using an iCalendar UID                        | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/import-event.ts)             |
| `get-event-instances`      | List instances of a recurring event                                             | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/get-event-instances.ts)      |
| `list-events`              | List events on a calendar                                                       | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/list-events.ts)              |
| `list-upcoming-events`     | List upcoming events from now, ordered by start time                            | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/list-upcoming-events.ts)     |
| `move-event`               | Move an event to another calendar, changing its organizer                       | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/move-event.ts)               |
| `patch-event`              | Partially update only provided event fields like time, location, or description | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/patch-event.ts)              |
| `quick-add-event`          | Create an event from a text string                                              | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/quick-add-event.ts)          |
| `remove-attendee`          | Fetch an event, remove an attendee by email, and patch attendees                | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/remove-attendee.ts)          |
| `search-events`            | Search a calendar's events by text query and optional time bounds               | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/search-events.ts)            |
| `update-attendee-response` | Fetch an event and update one attendee response status                          | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/update-attendee-response.ts) |
| `update-event`             | Update a calendar event                                                         | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/update-event.ts)             |
| `watch-events`             | Subscribe to event changes on a calendar                                        | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/watch-events.ts)             |

### Settings

| Function name    | Description                                               | Type                                         | Source code                                                                                                                    |
| ---------------- | --------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `get-setting`    | Retrieve a single Google Calendar user setting by ID      | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/get-setting.ts)    |
| `list-settings`  | List calendar settings                                    | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/list-settings.ts)  |
| `settings`       | Fetch all user settings across pages from Google Calendar | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/settings.ts)       |
| `watch-settings` | Subscribe to changes in calendar settings                 | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/watch-settings.ts) |

### Users

| Function name | Description                                           | Type                                         | Source code                                                                                                            |
| ------------- | ----------------------------------------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `whoami`      | Return the current user's Google account ID and email | [Action](/guides/functions/action-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/actions/whoami.ts) |

### Others

| Function name | Description                                                                                                                  | Type                                           | Source code                                                                                                             |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `events`      | Incrementally sync full Google Calendar event objects, defaulting to the primary calendar with an initial one-month lookback | [Sync](/guides/functions/syncs/sync-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/syncs/events.ts)    |
| `calendars`   | Full sync of the user's calendar list, including access role, colors, primary/selected flags, and deleted status.            | [Sync](/guides/functions/syncs/sync-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/syncs/calendars.ts) |
| `settings`    | Sync calendar settings                                                                                                       | [Sync](/guides/functions/syncs/sync-functions) | [🔗 Github](https://github.com/NangoHQ/integration-templates/blob/main/integrations/google-calendar/syncs/settings.ts)  |

***
