{
  "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
          }
        ]
      ]
    }
  }
}