Google Calendar
Solves https://github.com/airbytehq/airbyte/issues/45995
Configuration
| Input | Type | Description | Default Value |
|---|---|---|---|
client_id | string | Client ID of the Google Cloud OAuth 2.0 application. | |
client_secret | string | Client secret of the OAuth 2.0 application. | |
client_refresh_token_2 | string | Refresh token for the OAuth application with the Calendar API scope. | |
calendarid | string | Calendar Id. For the primary calendar this is the account's email address; the alias primary also works but is stored verbatim in events.calendar_id. | |
start_date | string | Only sync events last modified on or after this date. Applies to every Full Refresh sync, to the first Incremental sync, and to any full re-read; when unset, all events are read. See Events sync behavior. | |
num_workers | integer | Number of concurrent workers. | 3 |
Streams
| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental |
|---|---|---|---|---|
| colors | calendar.event | No pagination | ✅ | ❌ |
| settings | id | DefaultPaginator | ✅ | ❌ |
| calendarlist | id | DefaultPaginator | ✅ | ❌ |
| calendars | id | DefaultPaginator | ✅ | ❌ |
| events | id | DefaultPaginator | ✅ | ✅ |
Events sync behavior
The events stream is incremental on the event's last modification time (updated), using the Google Calendar updatedMin filter.
- Cancelled events are included (
showDeleted=true) withstatus: cancelled, so deletions reach the destination. Google returns them as stubs without a modification time, so the connector sets theirupdateditself (the saved cursor, or one hour before the sync, whichever is later) so that the cancelled row replaces the live one under Append + Deduped. Filterstatus != 'cancelled'downstream if you only want live events. calendar_idholds the configured Calendar Id exactly as entered. With the aliasprimaryit is a label, not the calendar's ID, and will not join tocalendarlist.id/calendars.id; enter the real ID (the account's email address for the primary calendar) if you need that join.- Recurring series are returned as a single record (
singleEvents=false); individual occurrences are not expanded. The record'supdatedis the last time the series was edited. start_datelimits every Full Refresh sync, the first Incremental sync, and any full re-read (after a reset, or when the saved cursor is older than 21 days) to events last modified on or after that date. Google applies the filter server-side only within the last 29 days; for an older date the connector downloads the calendar and drops older records itself. Because a recurring series counts as one event, a start date also drops series that have not been edited since that date, even if they still have upcoming occurrences. Leave it unset to read everything.- 29-day window. Google rejects
updatedMinolder than 29 days (measured; the limit is undocumented and has been tighter in the past). The connector keeps the newestupdatedit has seen as its cursor; if that cursor is older than 21 days when a sync starts (for example, a calendar with no edits for three weeks, or a connection paused for three weeks) the connector clears the cursor and re-reads the whole calendar (or everything sincestart_date), then continues incrementally. A calendar whose only changes are deletions still advances its cursor (see cancelled events above); one with no changes at all re-reads on every sync until something changes. - Recommended sync mode: Incremental | Append + Deduped with
idas the primary key. With plain Append, each re-read described above adds another copy of every event.
IP allow list
If you use Airbyte Cloud and your organization restricts access to specific IPs, add the Airbyte Cloud IP addresses to your allow list.
Reference
Config fields reference
Field
Type
Property name
string
calendarid
string
client_id
string
client_refresh_token_2
string
client_secret
integer
num_workers
string
start_date
Changelog
Expand to review
| Version | Date | Pull Request | Subject |
|---|---|---|---|
| 0.1.1 | 2026-10-13 | 88641 | Update dependencies |
| 0.1.0 | 2026-10-06 | 86468 | Add error handling, API budget, concurrency, incremental events (now includes cancelled events via showDeleted=true) with a calendar_id column and an optional start_date, and enable acceptance tests |
| 0.0.55 | 2026-10-06 | 87901 | Update dependencies |
| 0.0.54 | 2026-09-29 | 87194 | Update dependencies |
| 0.0.53 | 2026-09-22 | 86679 | Update dependencies |
| 0.0.52 | 2026-09-15 | 86070 | Update dependencies |
| 0.0.51 | 2026-09-08 | 85541 | Update dependencies |
| 0.0.50 | 2026-08-18 | 84636 | Update dependencies |
| 0.0.49 | 2026-08-11 | 83962 | Update dependencies |
| 0.0.48 | 2026-08-04 | 83499 | Update dependencies |
| 0.0.47 | 2026-07-28 | 82972 | Update dependencies |
| 0.0.46 | 2026-07-21 | 82435 | Update dependencies |
| 0.0.45 | 2026-07-14 | 81849 | Update dependencies |
| 0.0.44 | 2026-06-30 | 81038 | Update dependencies |
| 0.0.43 | 2026-06-23 | 80483 | Update dependencies |
| 0.0.42 | 2026-06-16 | 79880 | Update dependencies |
| 0.0.41 | 2026-06-09 | 79339 | Update dependencies |
| 0.0.40 | 2026-06-02 | 78738 | Update dependencies |
| 0.0.39 | 2026-04-28 | 77268 | Update dependencies |
| 0.0.38 | 2026-04-21 | 76584 | Update dependencies |
| 0.0.37 | 2026-03-31 | 75671 | Update dependencies |
| 0.0.36 | 2026-03-17 | 74985 | Update dependencies |
| 0.0.35 | 2026-02-24 | 73746 | Update dependencies |
| 0.0.34 | 2026-02-17 | 73085 | Update dependencies |
| 0.0.33 | 2026-01-20 | 71931 | Update dependencies |
| 0.0.32 | 2026-01-14 | 71428 | Update dependencies |
| 0.0.31 | 2025-12-18 | 70696 | Update dependencies |
| 0.0.30 | 2025-11-25 | 69889 | Update dependencies |
| 0.0.29 | 2025-11-18 | 69373 | Update dependencies |
| 0.0.28 | 2025-10-29 | 69049 | Update dependencies |
| 0.0.27 | 2025-10-21 | 68310 | Update dependencies |
| 0.0.26 | 2025-10-14 | 68007 | Update dependencies |
| 0.0.25 | 2025-10-07 | 67257 | Update dependencies |
| 0.0.24 | 2025-09-30 | 66309 | Update dependencies |
| 0.0.23 | 2025-09-09 | 66046 | Update dependencies |
| 0.0.22 | 2025-08-23 | 65366 | Update dependencies |
| 0.0.21 | 2025-08-09 | 64614 | Update dependencies |
| 0.0.20 | 2025-08-02 | 64218 | Update dependencies |
| 0.0.19 | 2025-07-26 | 63813 | Update dependencies |
| 0.0.18 | 2025-07-19 | 63491 | Update dependencies |
| 0.0.17 | 2025-07-12 | 63149 | Update dependencies |
| 0.0.16 | 2025-07-05 | 62653 | Update dependencies |
| 0.0.15 | 2025-06-28 | 62156 | Update dependencies |
| 0.0.14 | 2025-06-21 | 61833 | Update dependencies |
| 0.0.13 | 2025-06-14 | 61121 | Update dependencies |
| 0.0.12 | 2025-05-24 | 60587 | Update dependencies |
| 0.0.11 | 2025-05-10 | 59250 | Update dependencies |
| 0.0.10 | 2025-04-26 | 58812 | Update dependencies |
| 0.0.9 | 2025-04-19 | 58175 | Update dependencies |
| 0.0.8 | 2025-04-12 | 57066 | Update dependencies |
| 0.0.7 | 2025-03-29 | 56487 | Update dependencies |
| 0.0.6 | 2025-03-22 | 55939 | Update dependencies |
| 0.0.5 | 2025-03-08 | 55325 | Update dependencies |
| 0.0.4 | 2025-03-01 | 54992 | Update dependencies |
| 0.0.3 | 2025-02-22 | 54395 | Update dependencies |
| 0.0.2 | 2025-02-15 | 47915 | Update dependencies |
| 0.0.1 | 2024-10-06 | Initial release by @bala-ceg via Connector Builder |