Reference · Tools

Google Calendar Trigger

Starts workflow when Google Calendar events occur

Polling trigger Productivity v1

The Google Calendar Trigger node polls the Google Calendar API and fires a workflow whenever a calendar event is created, updated, cancelled, started, or ended. Connect it with Google Calendar OAuth2 and pick an event type to automate things like sending Slack notifications when a meeting begins or logging cancelled events to a spreadsheet.

Node type
Polling trigger
Parameters
9
Outputs
Output
Credentials
Google Calendar OAuth2

Google Calendar Trigger

Trigger workflows on Google Calendar event changes

Overview

The Google Calendar Trigger node polls the Google Calendar API for event changes. It detects five types of calendar events: created, updated, cancelled, started, and ended. Each event type uses a different query strategy against the Calendar API — updatedMin for modifications, timeMin/timeMax for time-window events. Supports free-text search filtering via the match term option. Handles pagination for calendars with many events. Uses Google OAuth2 with automatic token refresh.

Category: Productivity
Tool Name: google_calendar_trigger
Version: 1

Appearance: Icon: si-googlecalendar | Color: #4285f4

Node Type

Trigger — polling (checks for new data on a schedule)

Input / Output

DirectionPort(s)
InputNone (trigger node)
OutputOutput

Credentials

This tool requires Google Calendar OAuth2 credentials. See the Credentials Guide for setup instructions.

Parameters

ParameterTypeRequiredDefaultDescription
AuthenticationoptionsNooAuth2Authentication method to use.
Options: oAuth2 (recommended), serviceAccount
Google AccountcredentialNoConnect or select your Google account. (shown when Authentication is oAuth2)
Service Account EmailstringYesThe email address of the Google service account. (shown when Authentication is serviceAccount)
Private KeystringYesThe private key from the service account JSON key file. (shown when Authentication is serviceAccount)
Calendar IDstringYesprimaryThe Google Calendar ID to monitor (email format, or “primary” for the default calendar).
Trigger OnoptionsYeseventCreatedWhich calendar event type to trigger on.
Options: eventCreated, eventUpdated, eventCancelled, eventStarted, eventEnded
OptionscollectionNo{}Additional options for filtering calendar events.
— Match TermstringNoFree text search terms to filter events that match these terms in any field, except for extended properties.
Poll IntervalnumberNo1How often to check for new calendar events.
Poll Interval UnitoptionsNominutesUnit for the poll interval.
Options: seconds, minutes, hours

Output Data

Each matching calendar event becomes one output item. The event is emitted exactly as the Calendar API returns it, plus two trigger markers:

{
  "kind": "calendar#event",
  "id": "6q9c1r4kbhk8ecpm6p9g8b9k6c",
  "status": "confirmed",
  "htmlLink": "https://www.google.com/calendar/event?eid=...",
  "created": "2026-08-15T08:40:00.000Z",
  "updated": "2026-08-15T08:52:11.000Z",
  "summary": "Project review",
  "description": "Quarterly checkpoint",
  "location": "Room 4",
  "creator": { "email": "you@example.com", "self": true },
  "organizer": { "email": "you@example.com", "displayName": "", "self": true },
  "start": { "dateTime": "2026-08-15T10:00:00.000Z", "timeZone": "UTC" },
  "end": { "dateTime": "2026-08-15T11:00:00.000Z", "timeZone": "UTC" },
  "iCalUID": "6q9c1r4kbhk8ecpm6p9g8b9k6c@google.com",
  "sequence": 0,
  "attendees": [],
  "reminders": { "useDefault": true },
  "eventType": "default",
  "_trigger": "google_calendar_polling",
  "_timestamp": "2026-08-15T09:00:00.000Z"
}
  • statusconfirmed, tentative or cancelled. Cancelled events are only returned when Trigger On is eventCancelled.
  • start / end — carry dateTime for timed events and date for all-day events.
  • _trigger — always google_calendar_polling.
  • _timestamp — when the poll that produced the item ran.

Reference event data downstream by expression, e.g. {{ $json.summary }} or {{ $json.start.dateTime }}.

Usage Examples

  • Start a workflow when a new meeting is created on your calendar
  • Trigger a notification when a calendar event is cancelled
  • Send a reminder when a meeting is about to start
  • Log completed meetings when events end
  • Detect calendar updates and sync to an external system

Example Configuration

Watch the primary calendar for newly created events:

{
  "type": "google_calendar_trigger",
  "parameters": {
    "calendarId": "primary",
    "triggerOn": "eventCreated",
    "pollInterval": 5,
    "pollIntervalUnit": "minutes"
  }
}

Watch a shared calendar for edits to events matching a search term:

{
  "type": "google_calendar_trigger",
  "parameters": {
    "calendarId": "work@company.com",
    "triggerOn": "eventUpdated",
    "pollInterval": 2,
    "pollIntervalUnit": "minutes",
    "options": {
      "matchTerm": "project review"
    }
  }
}

React quickly to cancellations:

{
  "type": "google_calendar_trigger",
  "parameters": {
    "calendarId": "primary",
    "triggerOn": "eventCancelled",
    "pollInterval": 30,
    "pollIntervalUnit": "seconds"
  }
}

Run pre-meeting automation as client meetings begin:

{
  "type": "google_calendar_trigger",
  "parameters": {
    "calendarId": "primary",
    "triggerOn": "eventStarted",
    "pollInterval": 1,
    "pollIntervalUnit": "minutes",
    "options": {
      "matchTerm": "client"
    }
  }
}

Trigger Behavior

  • Activation: Polling starts when the workflow is activated. There is no poll at the moment of activation — the first check runs one full interval later.
  • Schedule: The trigger polls for new data based on the configured polling interval.
  • State: Maintains internal state (the timestamp of the last check) so each poll covers only the window since the previous one.
  • First Run: The first poll records the current time and returns no items, so activating the workflow never replays existing events.
  • Testing: Running the node from the editor emits a single sample event so you can build the rest of the workflow; real events arrive only while the workflow is activated.

Tips

The Google Calendar Trigger polls your Google Calendar for event changes. Select the calendar to monitor, the event type to watch for (created, updated, cancelled, started, or ended), and optionally filter events by a search term. On each poll cycle, the trigger checks for changes since the last poll and returns any matching events.

Notes

  • eventCreated returns events whose creation time falls in the poll window; eventUpdated returns only events whose update time differs from their creation time, so a brand-new event is never reported as an update.
  • eventStarted and eventEnded compare the event’s own start/end time against the poll window, so choose an interval short enough that a meeting boundary cannot be missed and long enough to stay inside your API quota.

Frequently asked questions

What is the difference between 'eventCreated' and 'eventUpdated'? Will a newly created event trigger both?

No — a brand-new event will only fire 'eventCreated', never 'eventUpdated'. The node returns 'eventUpdated' only when an event's last update time differs from its original creation time, meaning a subsequent edit must have happened. This prevents duplicate triggers when an event is first added to your calendar.

How does the node know which events have 'started' or 'ended' since the last poll?

For 'eventStarted' and 'eventEnded', the node compares each event's own start or end timestamp against the current poll window. This means if your poll interval is too long, a short meeting could start and finish between two poll cycles and be missed entirely. Set your polling interval short enough that no meeting boundary can fall outside a single cycle, while keeping it long enough to stay within your Google Calendar API quota.

What credentials does this node require and how is authentication handled?

The node requires a Google Calendar OAuth2 credential (googleCalendarOAuth2). BusyBot handles token refresh automatically, so you won't need to re-authenticate when the access token expires. You set up the OAuth2 connection once in BusyBot's credential store and select it when configuring the node.

Can I watch only events that match a specific keyword or topic?

Yes. The node includes a match term option that performs a free-text search filter, so only calendar events whose details contain your search term will trigger the workflow. This is useful if you share a busy calendar and only want to react to, say, events with 'standup' or a specific project name in the title.

What happens if many events change between poll cycles?

The node handles pagination automatically, so it will page through the full result set from the Google Calendar API rather than returning only the first page of results. All matching events from the poll window are returned through the node's single Output, each as a separate item in the workflow run.

Build with the Google Calendar Trigger node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Google Calendar OAuth2 credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.