Google Calendar (OAuth)
Google Calendar (OAuth) node reference - all 34 operations, the credential it needs, and a worked example.
Google Calendar with a connected Google account. Events (create, read, update, replace, delete, move, import, quick-add, expand a recurring series, manage guests and RSVPs), calendars, your subscription list, sharing rules, free/busy, colours and settings.
Credential: Google account - see Credentials.
Scopes
Each operation below lists the scope it needs. Scopes are ticked as a scope preset when you connect the Google account, then consented to on Google's screen — one preset covers all 34 operations, because Google's broad calendar scope is a superset of its seven narrower ones (calendar.events, calendar.calendars, calendar.calendarlist, calendar.acls, calendar.settings.readonly, calendar.freebusy and their readonly variants). If a run fails with a permission error, the node names the missing scope in the error - grant it and re-run; you do not need to rebuild the workflow.
Operations (34)
Events — read
| Operation | What it does | Scope |
|---|---|---|
listEvents | List events (one page) | Google Calendar — calendar |
listAllEvents | List all events (follow pagination) | Google Calendar — calendar |
getEvent | Get event | Google Calendar — calendar |
listEventInstances | List instances of a recurring event | Google Calendar — calendar |
Events — write
| Operation | What it does | Scope |
|---|---|---|
createEvent | Create event | Google Calendar — calendar |
quickAdd | Create event from text (quick add) | Google Calendar — calendar |
updateEvent | Update event (keep other fields) | Google Calendar — calendar |
replaceEvent | Replace event (clear other fields) | Google Calendar — calendar |
deleteEvent | Delete event | Google Calendar — calendar |
moveEvent | Move event to another calendar | Google Calendar — calendar |
importEvent | Import event (private copy) | Google Calendar — calendar |
addAttendees | Add attendees (keep existing) | Google Calendar — calendar |
respondToEvent | Set my RSVP on an event | Google Calendar — calendar |
Calendars
| Operation | What it does | Scope |
|---|---|---|
getCalendar | Get calendar | Google Calendar — calendar |
createCalendar | Create calendar | Google Calendar — calendar |
updateCalendar | Update calendar (keep other fields) | Google Calendar — calendar |
replaceCalendar | Replace calendar (clear other fields) | Google Calendar — calendar |
deleteCalendar | Delete calendar | Google Calendar — calendar |
My calendar list
| Operation | What it does | Scope |
|---|---|---|
listCalendars | List my calendars | Google Calendar — calendar |
getCalendarListEntry | Get calendar list entry | Google Calendar — calendar |
subscribeCalendar | Subscribe to a calendar | Google Calendar — calendar |
updateCalendarListEntry | Update list entry (keep other fields) | Google Calendar — calendar |
replaceCalendarListEntry | Replace list entry (clear other fields) | Google Calendar — calendar |
unsubscribeCalendar | Unsubscribe from a calendar | Google Calendar — calendar |
Sharing (access rules)
| Operation | What it does | Scope |
|---|---|---|
listAclRules | List sharing rules | Google Calendar — calendar |
getAclRule | Get sharing rule | Google Calendar — calendar |
createAclRule | Share calendar with someone | Google Calendar — calendar |
updateAclRule | Update sharing rule (keep other fields) | Google Calendar — calendar |
replaceAclRule | Replace sharing rule | Google Calendar — calendar |
deleteAclRule | Revoke sharing rule | Google Calendar — calendar |
Availability & metadata
| Operation | What it does | Scope |
|---|---|---|
freebusy | Query free/busy | Google Calendar — calendar |
getColors | Get colour definitions | Google Calendar — calendar |
listSettings | List my calendar settings | Google Calendar — calendar |
getSetting | Get one calendar setting | Google Calendar — calendar |
Example
Book a kickoff call with a Meet link when a deal closes
A CRM trigger fires on a won deal and the workflow puts the kickoff in the calendar: the customer and the account manager are invited, Google generates the Meet link, both sides are emailed, and the deal id is stashed on the event so a later workflow can find it again without storing anything of its own.
Set Operation to createEvent, then fill in:
| Field | Value | Notes |
|---|---|---|
calendarId | primary | Defaults to primary when left blank |
summary | Kickoff — {{trigger.deal.name}} | The event title |
startDateTime | {{trigger.deal.kickoffAt}} | RFC3339. Leave blank and set startDate instead for an all-day event |
endDateTime | {{trigger.deal.kickoffEndAt}} | RFC3339 |
timeZone | Europe/London | Required when the times carry no UTC offset |
attendees | {{trigger.deal.contactEmail}}, optional:{{trigger.deal.ownerEmail}} | Comma-separated; an optional: prefix marks a guest optional |
createMeetLink | true | Asks Google for a Meet link and sends conferenceDataVersion=1 so it is not silently dropped |
reminderOverrides | popup:10, email:60 | method:minutes pairs; setting any override turns the calendar defaults off |
sendUpdates | all | The API emails nobody by default — set this or the guests never hear about it |
extendedPropertiesPrivate | {"dealId": "{{trigger.deal.id}}"} | Your own metadata; find the event later with privateExtendedProperty=dealId=123 on List events |
Sets {{kickoff.eventId}}, {{kickoff.htmlLink}} (the open-in-Calendar URL), {{kickoff.hangoutLink}} (the Meet link, once Google has provisioned it), {{kickoff.start}}, {{kickoff.end}}, {{kickoff.attendees}} (an array of email addresses) and {{kickoff.event}} (the untouched Calendar resource). A following Slack node can post {{kickoff.hangoutLink}}.