AutomationFlowsEmail & Gmail › Automate Event Scheduling From Emails with Gmail & Google Calendar Keywords

Automate Event Scheduling From Emails with Gmail & Google Calendar Keywords

ByMarth - Business Automation @marth on n8n.io

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Event trigger★★★★☆ complexity6 nodesGmail TriggerGoogle Calendar
Email & Gmail Trigger: Event Nodes: 6 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #7218 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "9H630Pk9Y2YFcnEl",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automate Event Scheduling from Emails with gmails & google calender",
  "tags": [],
  "nodes": [
    {
      "id": "5d985e91-a21f-43ed-b8c0-8628f84bcea1",
      "name": "Watch for New Emails",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "filters": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c24f4ed6-363a-4064-982c-e5a4ca10a0a3",
      "name": "Check for Keywords",
      "type": "n8n-nodes-base.if",
      "position": [
        208,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "fa1a4a02-f8ab-412f-8977-c924d8d96f81",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $json.subject }}",
              "rightValue": "Meeting"
            },
            {
              "id": "cc6f7dd3-c2ce-4c44-b2cf-6263a73688dd",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.body }}",
              "rightValue": "Appoinment"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "424ba35e-c62b-4c17-896b-d718fb611b93",
      "name": "Extract Event Details",
      "type": "n8n-nodes-base.code",
      "position": [
        448,
        0
      ],
      "parameters": {
        "jsCode": "const emailBody = $json.body;\n\n// Simple regex to find a date and time.\n// This is a basic example; more complex logic may be needed.\nconst dateMatch = emailBody.match(/\\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s+\\d{1,2}/i);\nconst timeMatch = emailBody.match(/\\d{1,2}:\\d{2}\\s?(am|pm)?/i);\n\nconst eventDetails = {\n    title: $json.subject,\n    date: dateMatch ? dateMatch[0] : 'today',\n    time: timeMatch ? timeMatch[0] : '9:00am'\n};\n\nreturn [{ json: eventDetails }];"
      },
      "typeVersion": 2
    },
    {
      "id": "20d9fdca-0ced-411f-a99b-284f45c2e6f0",
      "name": "Create Event",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        656,
        0
      ],
      "parameters": {
        "end": "={{ $json.date }} {{ $json.time }}",
        "start": "={{ $json.date }} {{ $json.time }}",
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_CALENDAR_ID"
        },
        "additionalFields": {
          "summary": "={{ $json.title }}"
        }
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "d009e8f8-5758-4be7-b6ee-c7d7e3dbce13",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -64
      ],
      "parameters": {
        "width": 960,
        "height": 256,
        "content": "## Flow"
      },
      "typeVersion": 1
    },
    {
      "id": "ad6ae0d0-f03a-4186-afe3-222b7241a76c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        224
      ],
      "parameters": {
        "color": 3,
        "width": 960,
        "height": 1104,
        "content": "# Workflow Note: Automated Event Scheduling from Emails\n\n---\n\n### **Problem**\nManually creating calendar events from emails is a tedious and time-consuming task. Busy professionals often spend several minutes a day copying details like the event title, date, and time from their inbox to their calendar. This repetitive manual work is inefficient and increases the risk of human error, potentially leading to missed appointments and scheduling conflicts.\n\n### **Solution**\nThis is a simple but highly effective n8n workflow that automates the process of creating calendar events from your emails. By using keyword-based triggers and basic data extraction, the system automatically creates new events on your Google Calendar, eliminating the need for manual input and ensuring your schedule is always up-to-date.\n\n### **For Whom**\nThis workflow is perfect for **busy professionals, project managers, and anyone who receives event invitations via email**. It is a great starting point for those new to automation and looking to streamline their daily administrative tasks without a complex setup.\n\n### **Scope**\n* **What it includes:**\n    * Automatically monitors your Gmail inbox for new emails.\n    * Uses an `If` node to check for specified keywords (e.g., \"Meeting\", \"Appointment\") in the email's subject or body.\n    * A `Code` node to extract key details like the event title and a potential date/time.\n    * The creation of a new event on a specified Google Calendar.\n\n* **What it excludes:**\n    * Advanced natural language processing (NLP) to understand complex event details.\n    * Integration with other calendar or project management tools.\n    * Handling of emails that do not contain clear date and time information.\n\n### **How to Set Up**\n\n1.  **Prerequisites:** You will need an n8n instance and accounts for both **Gmail** and **Google Calendar**.\n2.  **Workflow Import:** Import the workflow's `.json` file into your n8n instance. All the necessary nodes will appear on your canvas.\n3.  **Credential Configuration:**\n    * Click on the `Gmail Trigger` and `Google Calendar` nodes.\n    * Follow the on-screen instructions to create and connect your **Gmail** and **Google Calendar** credentials.\n4.  **Node-Specific Configuration:**\n    * **`Gmail Trigger`:** Ensure the `Folder` parameter is set to `Inbox` to watch for all new incoming emails.\n    * **`If` Node:** Customize the keywords in this node to match the terms you typically see in your event-related emails (e.g., \"call,\" \"demo,\" \"interview,\" etc.).\n    * **`Google Calendar` Node:** In the `Calendar ID` field, enter the ID of the calendar where you want the new events to be created.\n5.  **Activation:** Once all credentials and node configurations are complete, click **\"Save\"** at the top of the canvas and then toggle the workflow to **\"Active\"**. The workflow is now live and will automatically schedule events for you."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "8a1bc662-421a-4c5b-8106-d66615647570",
  "connections": {
    "Check for Keywords": {
      "main": [
        [
          {
            "node": "Extract Event Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Watch for New Emails": {
      "main": [
        [
          {
            "node": "Check for Keywords",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Event Details": {
      "main": [
        [
          {
            "node": "Create Event",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Source: https://n8n.io/workflows/7218/ — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

Automatically checks your Google Calendar to determine if you're officially off work for the rest of today. If so, it auto-sends a personalized out‑of‑office reply via Gmail, telling senders when you’

Google Calendar, Gmail, Gmail Trigger
Email & Gmail

2025-12-03 fix JS code in node

Gmail, Home Assistant, Gmail Trigger +1
Email & Gmail

Stop losing valuable leads to missed meetings with this No-Show Follow-Up & Rescheduling automation! Whenever a lead is marked as a “no-show” in your CRM or calendar, this workflow automatically sends

Google Calendar, Gmail, Google Sheets
Email & Gmail

Receive any business document via email. The attachment is automatically classified (Invoice, Contract, or Purchase Order) using easybits Extractor, then routed down the correct path where a second Ex

@Easybits/N8N Nodes Extractor, Gmail Trigger, Google Drive +2
Email & Gmail

The goal is to reduce inbox noise and automatically organize repetitive types of emails so that imprtant messages remain visible while unsolicited or promotional emails are handled automatically. When

Gmail, Gmail Trigger, Google Sheets