---
title: Google Calendar
description: Manage Google Calendar events
---

import { BlockInfoCard } from "@/components/ui/block-info-card"

<BlockInfoCard 
  type="google_calendar_v2"
  color="#FFFFFF"
/>

{/* MANUAL-CONTENT-START:intro */}
[Google Calendar](https://calendar.google.com) is Google's widely used online calendar and scheduling service, making it easy to organize meetings, events, reminders, and appointments individually or collaboratively. As a key part of Google Workspace, Google Calendar offers robust tools for managing your schedule, sending invitations, setting event reminders, and sharing calendars with others.

Google Calendar supports feature-rich integrations and automation, allowing users and teams to streamline event management and keep their workflows synchronized. Its API enables programmatic creation, modification, and listing of calendar events, empowering agents and automated workflows to interact with your schedule in real time.

Key features of Google Calendar include:

- **Event Scheduling**: Create one-time or recurring events with rich details like time, location, and guests.
- **Reminders & Notifications**: Automated email and push reminders to ensure you never miss an important event.
- **Sharing & Collaboration**: Share calendars with individuals or groups, manage permissions, and coordinate meetings seamlessly.
- **Integration**: Connect with Gmail, Meet, Docs, and external tools for a unified productivity experience.
- **Time Zone Support**: Schedule meetings across regions with full time zone awareness.
- **Mobile & Multi-Device Access**: Access your calendar from web, mobile, and desktop.

In Sim, the Google Calendar integration allows your agents to read, create, update, and list calendar events as part of automated workflows. This enables powerful scenarios such as syncing meeting information, generating reminders, tracking event changes, coordinating team schedules, and much more. By connecting Sim with Google Calendar, your agents can handle scheduling tasks, manage events intelligently, and keep your whole organization on track without manual intervention.
{/* MANUAL-CONTENT-END */}


## Usage Instructions

Integrate Google Calendar into the workflow. Can create, read, update, and list calendar events.



## Actions

### `google_calendar_create`

Create a new event in Google Calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Google Calendar ID \(e.g., primary or calendar@group.calendar.google.com\) |
| `summary` | string | Yes | Event title/summary |
| `description` | string | No | Event description |
| `location` | string | No | Event location |
| `startDateTime` | string | Yes | Start time. Use a datetime with timezone offset \(2025-06-03T10:00:00-08:00\) or a date \(2025-06-03\) for an all-day event |
| `endDateTime` | string | Yes | End time. Use a datetime with timezone offset \(2025-06-03T11:00:00-08:00\) or a date \(2025-06-04\) for an all-day event |
| `timeZone` | string | No | IANA time zone \(e.g., America/Los_Angeles\). Used as-is when provided. For recurring events a time zone is required to expand the recurrence correctly; for one-off events it is only needed when the datetime omits a UTC offset \(a naive datetime defaults to America/Los_Angeles\). |
| `attendees` | array | No | Array of attendee email addresses |
| `recurrence` | string | No | Recurrence rule\(s\) in RFC 5545 format \(e.g., RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR\). Separate multiple rules with newlines. |
| `addGoogleMeet` | boolean | No | Attach a Google Meet video conference link to the event |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `hangoutLink` | string | Google Meet link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `recurrence` | json | Recurrence rules |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |

### `google_calendar_list`

List events from Google Calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Google Calendar ID \(e.g., primary or calendar@group.calendar.google.com\) |
| `timeMin` | string | No | Lower bound for events \(RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z\) |
| `timeMax` | string | No | Upper bound for events \(RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z\) |
| `q` | string | No | Free-text search across event summary, description, location, attendees, and organizer |
| `maxResults` | number | No | Maximum number of events to return \(max 2500\) |
| `pageToken` | string | No | Token for retrieving the next page of results |
| `orderBy` | string | No | Order of events: startTime \(chronological, the default\) or updated \(last-modified\). startTime is always valid here because singleEvents is set. |
| `showDeleted` | boolean | No | Include deleted events |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `nextPageToken` | string | Next page token |
| `timeZone` | string | Calendar time zone |
| `events` | json | List of events |

### `google_calendar_get`

Get a specific event from Google Calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Google Calendar ID \(e.g., primary or calendar@group.calendar.google.com\) |
| `eventId` | string | Yes | Google Calendar event ID to retrieve |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |

### `google_calendar_update`

Update an existing event in Google Calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Google Calendar ID \(e.g., primary or calendar@group.calendar.google.com\) |
| `eventId` | string | Yes | Google Calendar event ID to update |
| `summary` | string | No | New event title/summary |
| `description` | string | No | New event description |
| `location` | string | No | New event location |
| `startDateTime` | string | No | New start time. Use a datetime with timezone offset \(2025-06-03T10:00:00-08:00\) or a date \(2025-06-03\) for an all-day event |
| `endDateTime` | string | No | New end time. Use a datetime with timezone offset \(2025-06-03T11:00:00-08:00\) or a date \(2025-06-04\) for an all-day event |
| `timeZone` | string | No | IANA time zone \(e.g., America/Los_Angeles\) applied to the start/end times provided in this update. Provide a new start and/or end time to change the time zone; a time zone on its own is not applied. Required for recurring events to expand the recurrence correctly. |
| `attendees` | array | No | Array of attendee email addresses. When one or more emails are provided, they replace the existing attendee list. Leaving this empty keeps the current attendees unchanged \(it does not clear them\). |
| `recurrence` | string | No | Recurrence rule\(s\) in RFC 5545 format \(e.g., RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR\). Separate multiple rules with newlines. When provided, replaces the event's recurrence; leaving it empty keeps the existing recurrence unchanged. Requires a timeZone for timed events. |
| `addGoogleMeet` | boolean | No | Attach a Google Meet video conference link to the event |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `hangoutLink` | string | Google Meet link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `recurrence` | json | Recurrence rules |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |

### `google_calendar_delete`

Delete an event from Google Calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Google Calendar ID \(e.g., primary or calendar@group.calendar.google.com\) |
| `eventId` | string | Yes | Google Calendar event ID to delete |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `eventId` | string | Deleted event ID |
| `deleted` | boolean | Whether deletion was successful |

### `google_calendar_move`

Move an event to a different calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Source Google Calendar ID \(e.g., primary or calendar@group.calendar.google.com\) |
| `eventId` | string | Yes | Google Calendar event ID to move |
| `destinationCalendarId` | string | Yes | Destination Google Calendar ID |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |

### `google_calendar_instances`

Get instances of a recurring event from Google Calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Google Calendar ID \(e.g., primary or calendar@group.calendar.google.com\) |
| `eventId` | string | Yes | Recurring event ID to get instances of |
| `timeMin` | string | No | Lower bound for instances \(RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z\) |
| `timeMax` | string | No | Upper bound for instances \(RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z\) |
| `maxResults` | number | No | Maximum number of instances to return \(default 250, max 2500\) |
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
| `showDeleted` | boolean | No | Include deleted instances |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `nextPageToken` | string | Next page token |
| `timeZone` | string | Calendar time zone |
| `instances` | json | List of recurring event instances |

### `google_calendar_list_calendars`

List all calendars in the user's calendar list. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `minAccessRole` | string | No | Minimum access role for returned calendars: freeBusyReader, reader, writer, or owner |
| `maxResults` | number | No | Maximum number of calendars to return \(default 100, max 250\) |
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
| `showDeleted` | boolean | No | Include deleted calendars |
| `showHidden` | boolean | No | Include hidden calendars |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `nextPageToken` | string | Next page token |
| `calendars` | array | List of calendars |
|   ↳ `id` | string | Calendar ID |
|   ↳ `summary` | string | Calendar title |
|   ↳ `description` | string | Calendar description |
|   ↳ `location` | string | Calendar location |
|   ↳ `timeZone` | string | Calendar time zone |
|   ↳ `accessRole` | string | Access role for the calendar |
|   ↳ `backgroundColor` | string | Calendar background color |
|   ↳ `foregroundColor` | string | Calendar foreground color |
|   ↳ `primary` | boolean | Whether this is the primary calendar |
|   ↳ `hidden` | boolean | Whether the calendar is hidden |
|   ↳ `selected` | boolean | Whether the calendar is selected |

### `google_calendar_quick_add`

Create events from natural language text. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Google Calendar ID \(e.g., primary or calendar@group.calendar.google.com\) |
| `text` | string | Yes | Natural language text describing the event \(e.g., "Meeting with John tomorrow at 3pm"\) |
| `attendees` | array | No | Array of attendee email addresses \(comma-separated string also accepted\) |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |

### `google_calendar_invite`

Invite attendees to an existing Google Calendar event. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Google Calendar ID \(e.g., primary or calendar@group.calendar.google.com\) |
| `eventId` | string | Yes | Google Calendar event ID to invite attendees to |
| `attendees` | array | Yes | Array of attendee email addresses to invite |
| `sendUpdates` | string | No | How to send updates to attendees: all, externalOnly, or none \(defaults to all\) |
| `replaceExisting` | boolean | No | Whether to replace existing attendees or add to them \(defaults to false\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Event ID |
| `htmlLink` | string | Event link |
| `status` | string | Event status |
| `summary` | string | Event title |
| `description` | string | Event description |
| `location` | string | Event location |
| `start` | json | Event start |
| `end` | json | Event end |
| `attendees` | json | Event attendees |
| `creator` | json | Event creator |
| `organizer` | json | Event organizer |

### `google_calendar_freebusy`

Query free/busy information for one or more Google Calendars. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarIds` | string | Yes | Comma-separated calendar IDs to query \(e.g., "primary,other@example.com"\) |
| `timeMin` | string | Yes | Start of the time range \(RFC3339 timestamp, e.g., 2025-06-03T00:00:00Z\) |
| `timeMax` | string | Yes | End of the time range \(RFC3339 timestamp, e.g., 2025-06-04T00:00:00Z\) |
| `timeZone` | string | No | IANA time zone \(e.g., "UTC", "America/New_York"\). Defaults to UTC. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `timeMin` | string | Start of the queried time range |
| `timeMax` | string | End of the queried time range |
| `calendars` | json | Per-calendar free/busy data with busy periods and any errors |

### `google_calendar_create_calendar`

Create a new secondary calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `summary` | string | Yes | Title of the new calendar |
| `description` | string | No | Description of the new calendar |
| `location` | string | No | Geographic location of the calendar as free-form text |
| `timeZone` | string | No | Time zone of the calendar as an IANA name \(e.g., America/Los_Angeles\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Calendar ID |
| `summary` | string | Calendar title |
| `description` | string | Calendar description |
| `location` | string | Calendar location |
| `timeZone` | string | Calendar time zone |

### `google_calendar_share_calendar`

Grant a user, group, or domain access to a calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Calendar ID to share \(e.g., primary or calendar@group.calendar.google.com\) |
| `role` | string | Yes | Access role to grant: freeBusyReader, reader, writer, or owner |
| `scopeType` | string | Yes | Type of grantee: user, group, domain, or default \(public\) |
| `scopeValue` | string | No | Email \(user/group\), domain name \(domain\), or empty for default. Required unless scope type is default. |
| `sendNotifications` | boolean | No | Whether to send a notification email about the change. Defaults to true. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | ACL rule ID |
| `role` | string | Granted access role |
| `scope` | json | Grantee scope \(type and value\) |

### `google_calendar_list_acl`

List the access control rules (sharing) for a calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Calendar ID to inspect \(e.g., primary or calendar@group.calendar.google.com\) |
| `maxResults` | number | No | Maximum number of ACL rules to return |
| `pageToken` | string | No | Token for retrieving subsequent pages of results |
| `showDeleted` | boolean | No | Include deleted ACL rules \(with role "none"\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `nextPageToken` | string | Next page token |
| `rules` | array | List of ACL rules |
|   ↳ `id` | string | ACL rule ID |
|   ↳ `role` | string | Access role |
|   ↳ `scope` | json | Grantee scope \(type and value\) |

### `google_calendar_unshare_calendar`

Revoke an access control rule (sharing) from a calendar. Returns API-aligned fields only.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `calendarId` | string | No | Calendar ID to modify \(e.g., primary or calendar@group.calendar.google.com\) |
| `ruleId` | string | Yes | ACL rule ID to remove \(e.g., user:person@example.com\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ruleId` | string | Removed ACL rule ID |
| `deleted` | boolean | Whether removal was successful |



## Triggers

A **Trigger** is a block that starts a workflow when an event happens in this service.

These run on a schedule \(**polling-based**\) — they check for new data rather than receiving push notifications.

### Google Calendar Event Trigger

Triggers when events are created, updated, or cancelled in Google Calendar

#### Configuration

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `triggerCredentials` | string | Yes | Connect your Google account to access Google Calendar. |
| `calendarId` | file-selector | No | The calendar to monitor for event changes. |
| `manualCalendarId` | string | No | The calendar to monitor for event changes. |
| `eventTypeFilter` | string | No | Only trigger for specific event types. Defaults to all events. |
| `searchTerm` | string | No | Optional: Filter events by text match across title, description, location, and attendees. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `event` | object | event output from the tool |
|   ↳ `id` | string | Calendar event ID |
|   ↳ `status` | string | Event status \(confirmed, tentative, cancelled\) |
|   ↳ `eventType` | string | Change type: "created", "updated", or "cancelled" |
|   ↳ `summary` | string | Event title |
|   ↳ `eventDescription` | string | Event description |
|   ↳ `location` | string | Event location |
|   ↳ `htmlLink` | string | Link to event in Google Calendar |
|   ↳ `start` | json | Event start time |
|   ↳ `end` | json | Event end time |
|   ↳ `created` | string | Event creation time |
|   ↳ `updated` | string | Event last updated time |
|   ↳ `attendees` | json | Event attendees |
|   ↳ `creator` | json | Event creator |
|   ↳ `organizer` | json | Event organizer |
| `calendarId` | string | Calendar ID |
| `timestamp` | string | Event processing timestamp in ISO format |

