Google Calendar
Interact with Google Calendar events
This node signs in with a credential: Google Oauth2. See Connect a credential.
Triggers
Events from this node that can start a flow. Add one from Choose a trigger.
Calendar Event Trigger
The calendar event trigger
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Webhook Configuration › Hook URL | Text | Yes | The URL for the hook |
| Webhook Configuration › Hook API Key | Secret text | Yes | The API key for the hook |
| Calendar | Choice (loaded from your account) | Yes | Select the calendar to watch for events |
| Event Types | Multiple choice | Filter by event change type (leave empty to trigger on all changes) Options: New Events, Updated Events, Deleted Events | |
| Filter by Attendees | Text | Comma-separated email addresses (triggers only if event includes these attendees) | |
| Keyword Filter | Text | Comma-separated keywords to match in event title or description |
Output
Later steps use this data through Current Trigger in the $ picker. For example, calendarId is $trigger.output.calendarId.
{
"calendarId": "string",
"error": "string",
"eventCount": 0,
"events": [
{
"id": "string",
"summary": "string",
"description": "string",
"start": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"end": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"location": "string",
"status": "confirmed",
"creator": {
"displayName": "string",
"email": "string"
},
"attendees": [
{}
],
"reminders": {
"overrides": [],
"useDefault": false
}
}
],
"message": "string",
"newSyncToken": "string",
"nextPageToken": "string",
"nextSyncToken": "string",
"resourceState": "string",
"timestamp": 0,
"triggerType": "string"
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
calendarId | Text | ID of the watched calendar |
error | Text | Set instead of the other fields when the trigger could not read the calendar |
eventCount | Number | Number of events in events |
events[] | List | Changed events that passed the trigger filters. With calendar_event, the events Google listed, unfiltered |
events[].id | Text | The unique identifier for the event |
events[].summary | Text | The event title |
events[].description | Text | The event description |
events[].start | Object | The start time of the event |
events[].start.date | Text | |
events[].start.dateTime | Text | |
events[].end | Object | The end time of the event |
events[].end.date | Text | |
events[].end.dateTime | Text | |
events[].location | Text | The event location |
events[].status | Text | The event status |
events[].creator | Object | The event creator |
events[].creator.displayName | Text | |
events[].creator.email | Text | |
events[].attendees[] | List | The event attendees |
events[].attendees[].displayName | Text | |
events[].attendees[].email | Text | |
events[].attendees[].responseStatus | Text | |
events[].reminders | Object | Event reminders |
events[].reminders.overrides[] | List | |
events[].reminders.overrides[].method | Text | |
events[].reminders.overrides[].minutes | Number | |
events[].reminders.useDefault | Yes / No | |
message | Text | Set on the initial sync confirmation |
newSyncToken | Text | Sync token for the next change notification |
nextPageToken | Text | calendar_event only: set when Google has more events than events holds |
nextSyncToken | Text | calendar_event only: Google's sync token for the listed events |
resourceState | Text | Set on the initial sync confirmation |
timestamp | Number | When the trigger ran, in Unix milliseconds |
triggerType | Text | gcal_push for event changes, gcal_sync for the initial sync confirmation, calendar_event on the older path that lists the calendar's events |
Actions
Steps this node can perform. Add one from Add a step, then pick the action.
Create Event
Create a new calendar event
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Calendar | Choice (loaded from your account) | Yes | Select the calendar |
| Summary | Text | Yes | The event title |
| Description | Text | Yes | The event description |
| Start Time | Date and time | Yes | The event start time. Format: YYYY-MM-DDTHH:MM:SS±HH:MM |
| End Time | Date and time | Yes | The event end time. Format: YYYY-MM-DDTHH:MM:SS±HH:MM |
| Location | Text | The event location | |
| Attendees | List | Yes | The event attendees |
Output
Later steps use this data by picking this step in the $ picker. For example, id is $.<step ID>.output.id.
{
"id": "string",
"summary": "string",
"description": "string",
"start": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"end": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"location": "string",
"status": "confirmed",
"creator": {
"displayName": "string",
"email": "string"
},
"attendees": [
{
"displayName": "string",
"email": "string",
"responseStatus": "needsAction"
}
],
"reminders": {
"overrides": [
{
"method": "email",
"minutes": 0
}
],
"useDefault": false
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
id | Text | The unique identifier for the event |
summary | Text | The event title |
description | Text | The event description |
start | Object | The start time of the event |
start.date | Text | |
start.dateTime | Text | |
end | Object | The end time of the event |
end.date | Text | |
end.dateTime | Text | |
location | Text | The event location |
status | Text | The event status |
creator | Object | The event creator |
creator.displayName | Text | |
creator.email | Text | |
attendees[] | List | The event attendees |
attendees[].displayName | Text | |
attendees[].email | Text | |
attendees[].responseStatus | Text | |
reminders | Object | Event reminders |
reminders.overrides[] | List | |
reminders.overrides[].method | Text | |
reminders.overrides[].minutes | Number | |
reminders.useDefault | Yes / No |
Update Event
Update an existing calendar event
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Calendar | Choice (loaded from your account) | Yes | Select the calendar |
| Event ID | Text | Yes | The event identifier |
| Summary | Text | The event title | |
| Description | Text | The event description | |
| Start Time | Date and time | The event start time. Format: YYYY-MM-DDTHH:MM:SS±HH:MM | |
| End Time | Date and time | The event end time. Format: YYYY-MM-DDTHH:MM:SS±HH:MM | |
| Location | Text | The event location | |
| Send Updates | Choice | Guests who should receive notifications about the event update (for example, title changes, etc.) Options: All, External Only, None |
Output
Later steps use this data by picking this step in the $ picker. For example, id is $.<step ID>.output.id.
{
"id": "string",
"summary": "string",
"description": "string",
"start": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"end": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"location": "string",
"status": "confirmed",
"creator": {
"displayName": "string",
"email": "string"
},
"attendees": [
{
"displayName": "string",
"email": "string",
"responseStatus": "needsAction"
}
],
"reminders": {
"overrides": [
{
"method": "email",
"minutes": 0
}
],
"useDefault": false
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
id | Text | The unique identifier for the event |
summary | Text | The event title |
description | Text | The event description |
start | Object | The start time of the event |
start.date | Text | |
start.dateTime | Text | |
end | Object | The end time of the event |
end.date | Text | |
end.dateTime | Text | |
location | Text | The event location |
status | Text | The event status |
creator | Object | The event creator |
creator.displayName | Text | |
creator.email | Text | |
attendees[] | List | The event attendees |
attendees[].displayName | Text | |
attendees[].email | Text | |
attendees[].responseStatus | Text | |
reminders | Object | Event reminders |
reminders.overrides[] | List | |
reminders.overrides[].method | Text | |
reminders.overrides[].minutes | Number | |
reminders.useDefault | Yes / No |
Delete Event
Delete a calendar event
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Calendar | Choice (loaded from your account) | Yes | Select the calendar |
| Event ID | Text | Yes | The event identifier |
| Send Updates | Choice | Guests who should receive notifications about the deletion Options: All, External Only, None |
Output
Later steps use this data by picking this step in the $ picker. For example, success is $.<step ID>.output.success.
{
"success": false,
"message": "string"
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
success | Yes / No | Whether the event was deleted successfully |
message | Text | Status message for the delete operation |
List Events
List calendar events
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Calendar | Choice (loaded from your account) | Yes | Select the calendar |
| Event Types | List | The event types to list. If not specified, all event types will be listed. | |
| Page Token | Text | The token for the next page of results |
Output
Later steps use this data by picking this step in the $ picker. For example, id is $.<step ID>.output.id.
{
"id": "string",
"summary": "string",
"description": "string",
"start": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"end": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"location": "string",
"status": "confirmed",
"creator": {
"displayName": "string",
"email": "string"
},
"attendees": [
{
"displayName": "string",
"email": "string",
"responseStatus": "needsAction"
}
],
"reminders": {
"overrides": [
{
"method": "email",
"minutes": 0
}
],
"useDefault": false
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
id | Text | The unique identifier for the event |
summary | Text | The event title |
description | Text | The event description |
start | Object | The start time of the event |
start.date | Text | |
start.dateTime | Text | |
end | Object | The end time of the event |
end.date | Text | |
end.dateTime | Text | |
location | Text | The event location |
status | Text | The event status |
creator | Object | The event creator |
creator.displayName | Text | |
creator.email | Text | |
attendees[] | List | The event attendees |
attendees[].displayName | Text | |
attendees[].email | Text | |
attendees[].responseStatus | Text | |
reminders | Object | Event reminders |
reminders.overrides[] | List | |
reminders.overrides[].method | Text | |
reminders.overrides[].minutes | Number | |
reminders.useDefault | Yes / No |
Move Event
Move a calendar event to a different calendar
Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Calendar | Choice (loaded from your account) | Yes | Select the source calendar |
| Event ID | Text | Yes | The event identifier |
| Destination Calendar | Choice (loaded from your account) | Yes | Select the destination calendar |
| Send Updates | Choice | Guests who should receive notifications about the move Options: All, External Only, NoneDefault: all |
Output
Later steps use this data by picking this step in the $ picker. For example, id is $.<step ID>.output.id.
{
"id": "string",
"summary": "string",
"description": "string",
"start": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"end": {
"date": "string",
"dateTime": "2026-01-01T09:00:00Z"
},
"location": "string",
"status": "confirmed",
"creator": {
"displayName": "string",
"email": "string"
},
"attendees": [
{
"displayName": "string",
"email": "string",
"responseStatus": "needsAction"
}
],
"reminders": {
"overrides": [
{
"method": "email",
"minutes": 0
}
],
"useDefault": false
}
}Example values show the shape of the data, not real values. See Using data from earlier steps.
Field descriptions
| Field | Type | Description |
|---|---|---|
id | Text | The unique identifier for the event |
summary | Text | The event title |
description | Text | The event description |
start | Object | The start time of the event |
start.date | Text | |
start.dateTime | Text | |
end | Object | The end time of the event |
end.date | Text | |
end.dateTime | Text | |
location | Text | The event location |
status | Text | The event status |
creator | Object | The event creator |
creator.displayName | Text | |
creator.email | Text | |
attendees[] | List | The event attendees |
attendees[].displayName | Text | |
attendees[].email | Text | |
attendees[].responseStatus | Text | |
reminders | Object | Event reminders |
reminders.overrides[] | List | |
reminders.overrides[].method | Text | |
reminders.overrides[].minutes | Number | |
reminders.useDefault | Yes / No |