Google Calendar Update Event
Controlled node
Overview
Updates an existing event in Google Calendar. This node allows you to modify specific properties of a calendar event—such as the title, timing, location, or attendees—without affecting unspecified fields. Only the inputs you provide will be changed; all other event properties remain as they were.
The node supports complex updates including recurring event patterns (RRULE generation), timezone-aware datetime handling, and Google Meet conference link management. Attendees can be provided in multiple formats: as a comma-separated string, a single email address, an array of emails, or an array of objects with email and displayName properties.
You must provide the Event ID of the existing calendar event you wish to update. This can be obtained from the GoogleCalendarListEvents or GoogleCalendarCreateEvent nodes.
Inputs
| Input | Type | Description | Default |
|---|---|---|---|
| Run | Event | Triggers the update operation. | - |
| Event ID | Text | The unique identifier of the calendar event to update. | - |
| Calendar ID | Text | The calendar containing the event. Use primary for the user's main calendar. | primary |
| Summary | Text | The title of the event. | - |
| Description | PlainText | The description or notes for the event. | - |
| Location | Text | The location where the event takes place. | - |
| Start DateTime | DateTime | The start time of the event (ISO 8601 format). | - |
| End DateTime | DateTime | The end time of the event (ISO 8601 format). | - |
| Time Zone | TimeZone | The timezone for the event times (e.g., America/New_York). | User's local timezone |
| Recurrence | Enum | Recurrence pattern: NO_REPEAT, DAILY, WEEKDAY (Mon-Fri), WEEKLY, MONTHLY, or YEARLY. | NO_REPEAT |
| Attendees | Text | Email addresses of attendees. Accepts comma-separated strings, single emails, arrays, or objects. | - |
| Send Updates | Enum | Who to notify: all (all attendees) or externalOnly (external attendees only). | all |
| Conference | Boolean | Whether to add a Google Meet conference link to the event. | true |
| Connections | Connection | Google Calendar connection to use for the operation. | - |
Outputs
| Output | Type | Description |
|---|---|---|
| Done | Event | Fires when the update operation completes successfully. |
| Result | Data | The updated event object from Google Calendar, or an error object if the operation failed. |
Runtime Behavior and Defaults
When the Run event fires, the node sends an update request to Google Calendar using the provided Event ID. The node employs a "sparse update" strategy: only fields with explicitly provided values are sent to the API. Fields left empty or undefined are not modified, preserving the existing event data.
Attendee Formatting: The node automatically normalizes attendee inputs:
- Comma-separated strings:
"email1@example.com, email2@example.com" - Single email string:
"email@example.com" - Array of strings:
["email1@example.com", "email2@example.com"] - Array of objects:
[{email: "email@example.com", displayName: "John Doe"}]
Datetime Handling: The node strips timezone suffixes (like Z or +00:00) from ISO datetime strings to treat them as local wall-clock times in the specified timezone, then converts them to RFC3339 format for the Google Calendar API.
Recurrence: When a recurrence option other than NO_REPEAT is selected, the node automatically generates an RRULE string (e.g., RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR for weekdays) and includes it in the update.
Defaults:
calendarId:primarysendUpdates:allconference:truerecurrence:NO_REPEATtimeZone: The user's local system timezone (e.g.,America/New_York)
Example
Here is a simple workflow that updates an existing meeting's title and extends its duration:
- Use Google Calendar List Events to find the event you want to modify.
- Pass the
eventIdfrom the result to the Google Calendar Update Event node. - Provide new values for Summary (e.g., "Updated: Project Review") and End DateTime (e.g., "2025-11-14T12:00:00").
- Connect the Done event to trigger a confirmation message or next step in your workflow.
// Example attendee input formats that work:
// Comma-separated string:
"alice@example.com, bob@example.com"
// Array of emails:
["alice@example.com", "bob@example.com"]
// Array of objects:
[
{ email: "alice@example.com", displayName: "Alice Smith" },
{ email: "bob@example.com", displayName: "Bob Jones" }
]