Skip to main content

Sync workflow schedules between Google Sheets and Google Calendar

Workflow preview

Workflow preview
100%
Sync workflow schedules between Google Sheets and Google Calendar preview
Open on n8n.io

1. Workflow Overview

Sync n8n Workflow Schedules to Google Calendar Reads every workflow on your n8n instance every 30 minutes, extracts their schedule triggers, and keeps a matching recurring event on Google Calendar ...

Best for

  • DevOps automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.scheduletrigger, n8n-nodes-base.code, n8n-nodes-base.googlecalendar, n8n-nodes-base.removeduplicates, n8n-nodes-base.googlesheets, n8n-nodes-base.n8n, n8n-nodes-base.webhook, n8n-nodes-base.switch

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Paolo Ronco.

Original n8n.io source

1.1 Workflow description

Title
Sync workflow schedules between Google Sheets and Google Calendar
Workflow name
Sync workflow schedules between Google Sheets and Google Calendar

Sync n8n Workflow Schedules to Google Calendar

Reads every workflow on your n8n instance every 30 minutes, extracts their schedule triggers, and keeps a matching recurring event on Google Calendar — one event per workflow, forever in sync.

How it works

Schedule Trigger (30 min)
 → GET /api/v1/workflows — fetch all workflows
 → Code: parsing — extract scheduleTrigger / cron nodes
 → Sheets: Lookup — read saved state (schedule, On Calendar, EventID)
 → Code: detect changes — create / update / skip
 ├─ create → build RRULE payload → Create event → write EventID to Sheets
 └─ update → delete old event (parallel) + create new event → write to Sheets

State is stored in a Google Sheets tab (n8n Scheduling). The sheet acts as the single source of truth between runs.

What gets a Calendar event

Schedule type Result
Daily DAILY recurring event
Weekly (with or without specific days) WEEKLY recurring event
Monthly MONTHLY recurring event
Hourly 1 DAILY event at 00:MM (not 24 — avoids GCal rate limit)
Cron / minutely Skipped — not supported by Google Calendar RRULE
This workflow itself Always skipped

Prerequisites

  • n8n instance with API enabled
  • Google Cloud project with:
  • Service Account (for Sheets — never expires)
  • OAuth 2.0 client (for Google Calendar — expires periodically)
  • A Google Sheets spreadsheet shared with the Service Account
  • A Google Calendar to write events to

Credentials

n8n credential type Used for
n8n API Reading the workflow list
Google Calendar OAuth2 API Creating / deleting Calendar events
Google Service Account Reading and writing the Sheets state store

> ⚠️ The Google Calendar OAuth2 credential expires. Reconnect it from Settings → Credentials when Calendar nodes start failing.

Setup

Full step-by-step setup in documentation.md.

Known limits

  • OAuth token expiry breaks sections D/E silently — set up the error workflow to get notified
  • Hourly schedules map to a single daily event (label includes ogni ora :MM)
  • The disconnected Webhook sub-flow (section F) is a manual maintenance utility — not part of the main pipeline

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Schedule Trigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.3

Block 2 - Code: parsing

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 3 - Create an event

Type / Role
n8n-nodes-base.googleCalendar - googleCalendar
Config choices
Version 1.3

Block 4 - Code: RRULE

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 5 - Delete an event

Type / Role
n8n-nodes-base.googleCalendar - googleCalendar
Config choices
Version 1.3

Block 6 - Get many events2

Type / Role
n8n-nodes-base.googleCalendar - googleCalendar
Config choices
Version 1.3

Block 7 - Remove Duplicates

Type / Role
n8n-nodes-base.removeDuplicates - removeDuplicates
Config choices
Version 2

Block 8 - Sheets:Lookup-ExistOnCalendar

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 9 - Sheets:OnCalendar=YES

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 10 - Get many workflows

Type / Role
n8n-nodes-base.n8n - n8n
Config choices
Version 1

Block 11 - Webhook

Type / Role
n8n-nodes-base.webhook - webhook
Config choices
Version 2.1

Block 12 - Code: detect changes

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 13 - Switch

Type / Role
n8n-nodes-base.switch - switch
Config choices
Version 3.4

Block 14 - Code: save current values

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 15 - Code manual merge

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 16 - Code: post-create

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 17 - Code: split eventIds for delete

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 18 - Delete old event

Type / Role
n8n-nodes-base.googleCalendar - googleCalendar
Config choices
Version 1.3

Block 19 - __title

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 20 - __sec_fetch

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 21 - __sec_parse

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 22 - __sec_detect

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 23 - __sec_create

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 24 - __sec_delete

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Showing the first 24 of 44 workflow blocks. Download the JSON for the full node graph.

3. Summary Table

Workflow Sync workflow schedules between Google Sheets and Google Calendar
Complexity advanced
Nodes 44
Categories DevOps
Author Paolo Ronco
Published 27 Mar 2026

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/14397/14397.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Sync workflow schedules between Google Sheets and Google Calendar do?

Sync n8n Workflow Schedules to Google Calendar Reads every workflow on your n8n instance every 30 minutes, extracts their schedule triggers, and keeps a matching recurring event on Google Calendar ...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your DevOps use case.