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

# Google Calendar as a data source

> Bring data from Google Calendar to Nekt.

Google Calendar is Google's time management and scheduling application that helps users organize events, meetings, and appointments. It provides features for calendar sharing, event reminders, and integration with other Google services for seamless scheduling and time management.

<img width="200" src="https://mintcdn.com/nekt/0tn1_nwKYqAHn7jo/assets/logo/logo-google-calendar.png?fit=max&auto=format&n=0tn1_nwKYqAHn7jo&q=85&s=c612b3625bf61d4bfe580fe8d79d1707" data-path="assets/logo/logo-google-calendar.png" />

## Configuring Google Calendar as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the Google Calendar option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

You'll need to authorize Nekt to access your Google Calendar data. Click on the `Google Authorization` button and log in with your Google account.

The following configurations are available:

* **Start Date**: The earliest date from which event records will be synced.
* **Calendar IDs Filter**: (Optional) A list of specific calendar IDs to extract. If empty, all calendars available to the authenticated account are included.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync. Google Calendar streams are generated dynamically, one per calendar, with names following the pattern `events_<calendar_name_slug>`.

> Tip: The stream can be found more easily by typing its name.

Select the streams and click **Next**.

### 3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data), and the type of sync.

* **Layer**: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
* **Folder**: a folder can be created inside the selected layer to group all tables being created from this new data source.
* **Table name**: we suggest a name, but feel free to customize it. You have the option to add a **prefix** to all tables at once and make this process faster.
* **Sync Type**: you can choose between INCREMENTAL and FULL\_TABLE.
  * Incremental: every time the extraction happens, we'll get only the new data, which is useful when you want to keep historical records.
  * Full table: every time the extraction happens, we'll get the current state of the data, which is useful when you do not want deleted records in your catalog.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/runs/scheduling-and-triggers), consider how frequency you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).

Optionally, you can define some additional settings:

* Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource [here](https://docs.nekt.com/get-started/core-concepts/resource-control).
* Determine when to execute an **Additional [Full Sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#additional-full-sync)**. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

<Warning>For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.</Warning>

# Streams and Fields

Below you'll find the available data streams from Google Calendar and their corresponding fields:

<AccordionGroup>
  <Accordion title="Calendars">
    Stream for retrieving details about the calendars available to the authenticated user.

    | Field                   | Type    | Description                                            |
    | :---------------------- | :------ | :----------------------------------------------------- |
    | `kind`                  | String  | Type classification of the record.                     |
    | `etag`                  | String  | ETag of the calendar resource.                         |
    | `id`                    | String  | Unique identifier of the record.                       |
    | `description`           | String  | Description of the calendar.                           |
    | `summary`               | String  | Display title of the calendar.                         |
    | `time_zone`             | String  | Time zone configured for the calendar.                 |
    | `color_id`              | String  | Identifier of the calendar color.                      |
    | `background_color`      | String  | Background color of the calendar in hex format.        |
    | `foreground_color`      | String  | Foreground color of the calendar in hex format.        |
    | `selected`              | Boolean | Indicates whether the calendar is selected in the UI.  |
    | `access_role`           | String  | Access role granted to the authenticated user.         |
    | `default_reminders`     | Array   | Default reminders applied to events in the calendar.   |
    | `notification_settings` | Object  | Settings that control calendar notifications.          |
    | `primary`               | Boolean | Indicates whether this is the user's primary calendar. |
    | `conference_properties` | Object  | Conference settings available for the calendar.        |
  </Accordion>

  <Accordion title="Events (dynamic streams)">
    Stream for retrieving calendar events from each accessible Google Calendar.

    **Stream naming:**

    * `events_<calendar_name_slug>` - One stream is created per calendar (for example, `events_marketing_team`)

    **Selection behavior:**

    * If `calendar_ids_filter` is empty, streams are created for all calendars the authenticated user can access
    * If `calendar_ids_filter` is provided, only matching calendar IDs are used

    **Sync behavior:**

    * Primary key: `id`
    * Replication key: `updated` (incremental sync supported)
    * Deleted events are included in extraction (`showDeleted=true`)

    **Key Fields:**

    | Field                         | Type     | Description                                                        |
    | :---------------------------- | :------- | :----------------------------------------------------------------- |
    | `anyone_can_add_self`         | Boolean  | Indicates whether any attendee can invite themselves.              |
    | `attendees_omitted`           | Boolean  | Indicates whether attendee details were omitted from the response. |
    | `kind`                        | String   | Type classification of the record.                                 |
    | `location`                    | String   | Geographic location of the event.                                  |
    | `etag`                        | String   | ETag of the event resource.                                        |
    | `id`                          | String   | Unique identifier of the record.                                   |
    | `description`                 | String   | Description of the event.                                          |
    | `color_id`                    | String   | Identifier of the event color.                                     |
    | `status`                      | String   | Current status of the record.                                      |
    | `html_link`                   | String   | URL to view the event in Google Calendar.                          |
    | `created`                     | Datetime | Timestamp when the event was created.                              |
    | `updated`                     | Datetime | Timestamp when the record was last updated.                        |
    | `summary`                     | String   | Title of the event.                                                |
    | `start`                       | Object   | Start date and time information for the event.                     |
    | `end`                         | Object   | End date and time information for the event.                       |
    | `creator`                     | Object   | Information about the user who created the event.                  |
    | `organizer`                   | Object   | Information about the event organizer.                             |
    | `original_start_time`         | Object   | Original start information for a recurring event instance.         |
    | `i_cal_uid`                   | String   | iCalendar UID of the event.                                        |
    | `sequence`                    | Integer  | Revision sequence number of the event.                             |
    | `attendees`                   | Array    | List of attendees invited to the event.                            |
    | `attachments`                 | Array    | Files attached to the event.                                       |
    | `hangout_link`                | String   | URL to join the Google Meet associated with the event.             |
    | `conference_data`             | Object   | Conference metadata attached to the event.                         |
    | `reminders`                   | Object   | Reminder settings for the event.                                   |
    | `event_type`                  | String   | Type classification of the record.                                 |
    | `end_time_unspecified`        | Boolean  | Indicates whether the event has an unspecified end time.           |
    | `guests_can_invite_others`    | Boolean  | Indicates whether guests can invite other attendees.               |
    | `guests_can_modify`           | Boolean  | Indicates whether guests can modify the event.                     |
    | `guests_can_see_other_guests` | Boolean  | Indicates whether guests can view other attendees.                 |
    | `recurring_event_id`          | String   | Identifier of the associated recurring event.                      |
    | `transparency`                | String   | Transparency setting that determines event availability behavior.  |
    | `visibility`                  | String   | Visibility level of the event.                                     |
    | `source`                      | Object   | Original source information for the event.                         |
    | `working_location_properties` | Object   | Working location metadata for the event.                           |
  </Accordion>
</AccordionGroup>

## Implementation Notes

### Data behavior considerations

* Stream names are dynamic and depend on calendar names. Renaming a calendar can change the discovered stream name.
* The connector uses Google Calendar list data internally to discover calendars before creating event streams.
* Event payloads can vary by event type (single event, recurring instance, working location), so nested fields may be sparse depending on your account usage.

### API limits & performance

* If your account has many calendars, selecting all streams can increase extraction times.
* Use `calendar_ids_filter` to reduce the number of discovered streams and improve run performance.

## Skills for agents

<Snippet file="agent-skills-intro.mdx" />

<Card title="Download Google Calendar skills file" icon="wand-magic-sparkles" href="/sources/google-calendar.md">
  Google Calendar connector documentation as plain markdown, for use in AI agent contexts.
</Card>
