> ## Documentation Index
> Fetch the complete documentation index at: https://nango-wari-migrated-bigcommerce-docs.mintlify.site/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.

### Others

| 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)               |
| `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-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)            |
| `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-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)            |
| `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-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)            |
| `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)            |
| `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)               |
| `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-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)               |
| `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)               |
| `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)                 |
| `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)                  |
| `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)                |
| `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)               |
| `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)    |
| `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)             |
| `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)             |
| `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-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)              |
| `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)                |
| `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)            |
| `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)            |
| `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)  |
| `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)              |
| `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)                   |
| `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)               |
| `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)            |
| `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-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)            |
| `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-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)        |
| `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)               |
| `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)             |
| `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)                     |
| `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)                     |

***
