
Configuring Google Calendar as a Source
In the 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 theGoogle 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.
2. Select streams
Choose which data streams you want to sync. Google Calendar streams are generated dynamically, one per calendar, with names following the patternevents_<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.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, 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.
- Determine when to execute an 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.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.Streams and Fields
Below you’ll find the available data streams from Google Calendar and their corresponding fields:Calendars
Calendars
Stream for retrieving details about the calendars available to the authenticated user.
Events (dynamic streams)
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)
- If
calendar_ids_filteris empty, streams are created for all calendars the authenticated user can access - If
calendar_ids_filteris provided, only matching calendar IDs are used
- Primary key:
id - Replication key:
updated(incremental sync supported) - Deleted events are included in extraction (
showDeleted=true)
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.
Incremental sync limitations & fallbacks
- Automatic Full Sync for Holiday Calendars: Google’s Holiday calendars (e.g., calendars ending in
#holiday@group.v.calendar.google.com) are read-only and load events in bulk with a singleupdatedtimestamp. Because their bookmark quickly falls outside of Google’s incremental sync window limit (updatedMin), incremental sync is not meaningful for them. The connector automatically identifies these calendars and will always perform a full sync, overriding the incremental configuration. - Expired Incremental Window (
updatedMinTooLongAgo): The Google Calendar API enforces a limit on how far in the past an incremental sync request (updatedMin) can be made. If a calendar hasn’t been synced in a long time and the API returns a410 Goneerror with the reasonupdatedMinTooLongAgo, the connector will seamlessly detect this rejection and automatically fall back to a full sync for that particular run. This built-in resiliency prevents pipeline failures and guarantees your catalog’s data integrity.
API limits & performance
- If your account has many calendars, selecting all streams can increase extraction times.
- Use
calendar_ids_filterto reduce the number of discovered streams and improve run performance.
Skills for agents
Download Google Calendar skills file
Google Calendar connector documentation as plain markdown, for use in AI agent contexts.