- Home
- Resources
- Integrations
- Google Calendar
Google Calendar n8n integrationAutomate Google Calendar with n8n.
Two nodes turn a shared calendar into a workflow engine. The Google Calendar n8n integration exposes 6 operations across 2 resources, plus a trigger, the node that starts a workflow on its own, watching 5 event types on the calendar you pick. Built for teams who book, move and report meetings all day.
Verified Trustpilot reviews · AI, automation & growth agency
What does the Google Calendar n8n integration actually cover?
Two nodes, two jobs. The Google Calendar node reads and writes in a calendar your account can access, with 6 operations spread over 2 resources, Calendar and Event. The Google Calendar Trigger sits at the start of a workflow and reacts to 5 events from a single family: an event created, updated, cancelled, started or ended. Nothing to install, both ship with n8n.
Start with the booking loop, because that is the one that breaks first. A form, a chatbot or a voice agent proposes a slot, calendar.availability confirms the window is still open, event.create writes the meeting with the client address in Attendees, and the confirmation leaves through Gmail in the same run. Nobody reopens a calendar to retype a date.
Second pattern, the calendar that reports itself. On a schedule, event.getAll reads the week between After and Before, and every event becomes a line in Google Sheets: time spent per client, an invoice draft, a plain activity log. Third pattern, the reschedule nobody has to chase: eventUpdated fires, event.get pulls the new times, and the people concerned know before someone shows up for nothing.
Where the node stops is easy to state. It exposes 6 operations, and the Calendar resource holds exactly one of them, availability. Everything else in the Google Calendar API is reached with the HTTP Request node, which calls any endpoint while reusing the same credential, the connection you save once in n8n and pick from a dropdown afterwards. Same reasoning on the booking side: if the scheduling rules live in Calendly, leave them there and keep n8n for what happens next.
Two limits deserve a mention before you build. The trigger works by polling, which means n8n asks the Google Calendar API at the interval you set, so an event surfaces after that interval rather than at the second it changes. And every operation wants a calendar, chosen from the list or entered by ID; a required field left empty stops the node instead of guessing. For the platform itself, the n8n review and the n8n training cover the rest.
How do you connect Google Calendar to n8n?
- 01
Create the Google Calendar credential
In n8n, open the Credentials menu and create a Google Calendar OAuth2 credential, the saved connection you set up once and reuse in every workflow. On n8n Cloud, Managed OAuth2 does the work: click Sign in with Google, accept the consent screen, and nothing else is needed on the Google side. Self-hosted instances do not get that shortcut and take the custom route below.
- 02
Prepare the Google Cloud project
In the Google Cloud Console, create a project or reuse yours, enable the APIs you need, then open APIs & Services and the OAuth consent screen. Fill in App name and User support email, pick the Audience (Internal for your own Google Workspace, External for any Google account), then under Branding add an authorized domain:
n8n.cloudon n8n Cloud, your instance domain when you self-host. - 03
Generate the OAuth client and paste the keys
Still in the console, go to Credentials, select Create credentials then OAuth client ID, and choose Web application as the application type. Copy the OAuth Redirect URL shown in your n8n credential into Authorized redirect URIs, create the client, then paste Client ID and Client Secret back into n8n. Locally, that redirect looks like
http://localhost:5678/rest/oauth2-credential/callback.
What can start a workflow from Google Calendar ?
Google Calendar Trigger is the node that starts a workflow when something happens in Google Calendar. It listens to 5 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Google Calendar account.
What you see in n8n
Every event, by family
One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.
event.*5Configuration notes
01Google Calendar Trigger setup
The trigger asks for three things: which calendar to watch, which event to listen for, and how often to look. It runs on polling, so n8n queries the Google Calendar API at the interval you set and emits one item per new match. There is no webhook, the URL an app would otherwise call on every event, to register on the Google side.
Key parameters
- Calendar: the calendar to operate on, from the dropdown or by ID. Required, and the trigger stays silent without it.
- Trigger On: the event the workflow reacts to, chosen among the 5 available. No wildcard value exists, so the choice is always explicit.
- Poll Times: the interval, down to every minute. The delay before a workflow starts equals that interval.
- Match Term: free text search under Options, keeping only events that match the term in any field, except extended properties.
02Event Created, Event Updated, Event Cancelled
Three of the 5 events follow the life of a booking rather than the clock. They fire when someone adds a meeting, changes it or drops it. Most calendar automations start right there.
Key parameters
- Event Created (
eventCreated): a new event lands on the watched calendar, whoever put it there, a colleague, a client through a booking form, or another workflow of yours. - Event Updated (
eventUpdated): something changed, times or content. Read the event again before acting on it. - Event Cancelled (
eventCancelled): the meeting is off. Whatever was prepared around it can be rolled back in the same run.
03Event Started, Event Ended
The other two watch the clock. They fire on the boundaries of an event already sitting in the calendar, which makes them the quiet workhorses of follow-up. They come from the same event family as the other three, but nothing needs to change on the event itself for them to fire.
Key parameters
- Event Started (
eventStarted): the meeting has begun, the moment to open a note or ping the room. - Event Ended (
eventEnded): the meeting is over, which is when a recap, a task or a follow-up email makes sense.
What can the Google Calendar node do?
The Google Calendar node exposes 6 operations across 2 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
Operations index
Calendar
1 operationGet availability in a calendar
calendar.availabilityWhat you see in n8n
Notes & use cases
Before writing anything, this operation answers one question: is the slot free? It looks at the window you hand it and reports whether existing events overlap.
Key parameters
- Calendar: the calendar to check, picked from the list or entered by ID.
- Start Time and End Time: the interval to test, filled by default with expressions, the n8n syntax that computes a value at run time,
{{ $now }}and{{ $now.plus(1, 'hour') }}. - Output Format:
availabilityfor a yes or no,bookedSlotsfor the slots already taken,rawfor the untouched API response.
Event
5 operationsCreate an event
event.createWhat you see in n8n
Notes & use cases
Writes a new event on the chosen calendar and hands its identifier back to the rest of the workflow.
Key parameters
- Calendar, Start and End: the three required fields, and an empty one stops the node.
- Additional Fields: 19 of them, including Summary for the title, Attendees for guest emails separated by commas, Location, and Conference Data to attach a meeting link.
- Send Updates:
all,externalOnlyornone, to decide who receives the invitation email.
Delete an event
event.deleteWhat you see in n8n
Notes & use cases
The event disappears from the calendar, and nothing inside n8n brings it back. Put this operation at the end of a branch you trust.
Key parameters
- Calendar and Event ID: both required. The ID comes from an earlier create or get, read with an expression such as
{{ $json.id }}, never the event title. - Send Updates: the single field under Options. Keep notifications on when guests need to hear that the meeting is off.
Get an event
event.getWhat you see in n8n
Notes & use cases
One identifier in, the whole event out: times, guests, description, everything the API returns for it.
Key parameters
- Calendar and Event ID: required, and the ID is usually the one carried by the trigger item.
- Return Next Instance of Recurring Event: returns the next occurrence instead of the recurring event itself, useful when the ID points at a weekly stand-up.
- Max Attendees caps the guest list in the response, and Timezone replaces the calendar time zone used by default.
Get many events
event.getAllWhat you see in n8n
Notes & use cases
Reading a slice of the calendar is what feeds exports, timesheets and the morning digest.
Key parameters
- Return All: on, n8n walks every page of results; off, Limit caps how many events come back.
- After and Before: the window, expressions by default,
{{ $now }}and{{ $now.plus({ week: 1 }) }}. - Query filters on free text, Order By sorts by
startTimeorupdated, and Recurring Event Handling picks all occurrences, the first, or the next.
Update an event
event.updateWhat you see in n8n
Notes & use cases
Patching beats deleting and recreating: the guests, the event ID and its history all stay in place.
Key parameters
- Calendar and Event ID: the only required fields, everything else is optional.
- Update Fields: 21 of them, including Start, End, Summary, Description and Show Me As, which flips the slot between
opaqueandtransparent. - RRULE: once set, it wins, and Repeat Frequency, Repeat How Many Times and Repeat Until are ignored.
Need help automating Google Calendar with n8n?
A person reads every message.