Resources · n8n integration

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

Why automate

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.

Connect

How do you connect Google Calendar to n8n?

  1. 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.

  2. 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.cloud on n8n Cloud, your instance domain when you self-host.

  3. 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.

Triggers

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.*5

    Configuration notes

    01Google Calendar Trigger setupThe 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.

    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.
    When to use it
    when the calendar is the source of truth and the workflow has to follow it, not the other way round.
    02Event Created, Event Updated, Event CancelledThree 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.

    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.
    Use cases
    log every new client meeting in a spreadsheet, warn a channel when a slot moves, or release the resources booked for a visit that will not happen.
    03Event Started, Event EndedThe 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.

    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.
    Use cases
    send the report template once a client call ends, or launch the transcription workflow a minute after the meeting starts.
    When to use it
    for anything that depends on the meeting actually happening, keeping in mind that polling starts the workflow shortly after the boundary, never before it.
    Actions

    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.

    Resources × operations matrix
    ResourceCreateGetGet ManyUpdateDeleteAvailability
    Calendar✓
    Event✓✓✓✓✓

    Calendar

    1 operation
    01

    Get availability in a calendar

    calendar.availability

    What 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: availability for a yes or no, bookedSlots for the slots already taken, raw for the untouched API response.
    Use cases
    gate a booking form so two people never grab the same slot, or feed a voice agent the free windows of an afternoon.

    Event

    5 operations
    02

    Create an event

    event.create

    What 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, externalOnly or none, to decide who receives the invitation email.
    Use cases
    turn a signed quote into a kickoff meeting, or an order into a delivery window on the shared calendar.
    03

    Delete an event

    event.delete

    What 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.
    Use cases
    clear the placeholder slots left by a cancelled order, or empty a test calendar at the end of a run.
    04

    Get an event

    event.get

    What 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.
    Use cases
    read the description of the meeting that just moved, then route it to the person who has to answer.
    05

    Get many events

    event.getAll

    What 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 startTime or updated, and Recurring Event Handling picks all occurrences, the first, or the next.
    Use cases
    export last week's client meetings to a spreadsheet, or count booked hours per project before invoicing.
    06

    Update an event

    event.update

    What 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 opaque and transparent.
    • RRULE: once set, it wins, and Repeat Frequency, Repeat How Many Times and Repeat Until are ignored.
    Use cases
    push a meeting by an hour when the previous one overruns, or free the slot when a client cancels while the block stays on the calendar.
    Need help

    Need help automating Google Calendar with n8n?

    A person reads every message.

    FAQ

    Google Calendar and n8n, the questions that come next

    01Is the Google Calendar n8n integration free?
    Yes, and that covers both nodes. The Google Calendar node and its trigger ship with n8n, so there is nothing to install and nothing extra to pay, on n8n Cloud as on a self-hosted instance under the Community Edition and its Sustainable Use license. A workflow behaves the same way in both cases. What your Google account costs is a separate matter, and this page does not cover it. The only real budget line is the time spent on the first credential, since every later workflow picks it from the dropdown instead of starting over.
    02Which credentials and permissions does the node need?
    A Google OAuth2 credential for a single service, created once in the Credentials menu and reused everywhere. On n8n Cloud, Managed OAuth2 is the short path: click Sign in with Google, and nothing has to be configured in the Google Cloud Console. Self-hosted instances build a custom OAuth2 credential instead, which means a Google Cloud project, an OAuth consent screen, and an OAuth client of type Web application whose authorized redirect URI is the one n8n displays. A Service Account is the other documented method, with the Service Account Email and the Private Key taken from the JSON key file, but OAuth2 is easier to set up and more widely available.
    03What are the limits of the Google Calendar node?
    It covers 6 operations on 2 resources, and the Calendar resource holds a single one, availability. Everything else in the Google Calendar API sits outside the node and goes through HTTP Request, which calls any endpoint and reuses the same credential through predefined authentication. Inside the node, watch the reading side: with Return All off, the run stops at Limit, so an export that looks short is usually a pagination setting rather than an empty calendar. Required fields are strict too. An empty Calendar, Start, End or Event ID stops the execution instead of guessing what you meant.
    04Does the Google Calendar Trigger react in real time?
    No, and it is better to know it upfront. The trigger works by polling: n8n queries the Google Calendar API at the interval set in Poll Times, at most every minute, and emits one item per new match. Nothing has to be registered on the Google side, which keeps setup short, but the workflow starts after that interval, not at the second the event changes. For an agenda, the delay is usually harmless. When a reaction has to be immediate, the calendar is the wrong starting point and the workflow should begin where the booking is actually made.
    05n8n or Make for Google Calendar?
    It depends on where the data should live and how you want to pay. Make is hosted, has no self-hosting option, and bills per operation, which stays predictable at small volumes and less so for a workflow that reads a full calendar all day long. n8n runs on its own Cloud or on your server, so the calendar data and the Google credential stay where you decide, and the cost follows the instance rather than the number of events processed. Both build workflows visually, so the real question is hosting, data control and volume. Count the operations before choosing.