{
  "workflow": {
    "id": 6997,
    "name": "Class scheduling & reminders with Google Calendar, email & SMS notifications",
    "views": 612,
    "recentViews": 0,
    "totalViews": 612,
    "createdAt": "2025-08-05T08:54:05.544Z",
    "description": "This automated n8n workflow checks daily class schedules, syncs upcoming classes to Google Calendar, and sends reminder notifications to students via email or SMS. Perfect for educational institutions to keep students informed about their daily classes and schedule changes.\n\n**What This Workflow Does:**\n- Automatically checks class schedules every day\n- Identifies today's classes and upcoming sessions\n- Syncs class information to Google Calendar\n- Sends personalized reminders to enrolled students\n- Tracks reminder delivery status and logs activities\n- Handles both email and SMS notification preferences\n\n**Main Components**\n* **Daily Schedule Check** - Triggers daily to check class schedules\n* **Read Class Schedule** - Retrieves today's class schedule from database/Excel\n* **Filter Today's Classes** - Identifies classes happening today\n* **Has Classes Today?** - Checks if there are any classes scheduled\n* **Read Student Contacts** - Gets student contact information for enrolled classes\n* **Sync to Google Calendar** - Creates/updates events in Google Calendar\n* **Create Student Reminders** - Generates personalized reminder messages\n* **Split Into Batches** - Processes reminders in manageable batches\n* **Email or SMS?** - Routes based on student communication preferences\n* **Prepare Email Reminders** - Creates email reminder content\n* **Prepare SMS Reminders** - Creates SMS reminder content\n* **Read Reminder Log** - Checks previous reminder history\n* **Update Reminder Log** - Records sent reminders\n* **Save Reminder Log** - Saves updated log data\n\n**Essential Prerequisites**\n* Class schedule database/Excel file with student enrollments\n* Student contact database with email and phone numbers\n* Google Calendar API access and credentials\n* SMTP server for email notifications\n* SMS service provider (Twilio, etc.) for text reminders\n* Reminder log file for tracking sent notifications\n\n**Required Data Files:**\n\n**class_schedule.xlsx:**\n* Class ID | Class Name | Date | Time | Duration\n* Instructor | Room | Students Enrolled | Status\n\n**student_contacts.xlsx:**\n* Student ID | Name | Email | Phone | Preferred Contact\n* Program | Class IDs | Active Status\n\n**reminder_log.xlsx:**\n* Log ID | Date | Student ID | Class ID | Contact Method\n* Status | Sent Time | Response\n\n**Key Features**\n* **⏰ Daily Automation:** Runs automatically every day\n* **📅 Calendar Sync:** Syncs classes to Google Calendar\n* **📧 Smart Reminders:** Sends email or SMS based on preference\n* **👥 Batch Processing:** Handles multiple students efficiently\n* **📊 Activity Logging:** Tracks all reminder activities\n* **🔄 Duplicate Prevention:** Avoids sending multiple reminders\n* **📱 Multi-Channel:** Supports both email and SMS notifications\n\n**Quick Setup**\n1. Import workflow JSON into n8n\n2. Configure daily trigger schedule\n3. Set up class schedule and student contact files\n4. Connect Google Calendar API credentials\n5. Configure SMTP server for emails\n6. Set up SMS service provider (Twilio)\n7. Test with sample class data\n8. Activate workflow\n\n**Parameters to Configure**\n* `schedule_file_path`: Path to class schedule file\n* `contacts_file_path`: Path to student contacts file\n* `google_calendar_id`: Google Calendar ID for syncing\n* `google_api_credentials`: Google Calendar API credentials\n* `smtp_host`: Email server settings\n* `smtp_user`: Email username\n* `smtp_password`: Email password\n* `sms_api_key`: SMS service API key\n* `sms_phone_number`: SMS sender phone number\n\n**Sample Reminder Messages**\n* **Email:** \"Hi [Name], reminder: [Class Name] starts at [Time] in [Room]. See you there!\"\n* **SMS:** \"[Name], your [Class Name] class starts at [Time] in [Room]. Don't miss it!\"\n\n**Use Cases**\n* Daily class reminders for students\n* Schedule change notifications\n* Exam and assignment deadline alerts\n* Teacher absence notifications\n* Room change announcements",
    "workflow": {
      "id": "JPdXXuF2DVCMU818",
      "meta": {
        "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
        "templateCredsSetupCompleted": true
      },
      "name": "Automated Student Class Scheduling & Calendar Reminder",
      "tags": [],
      "nodes": [
        {
          "id": "7465b9dc-b93d-486c-bffc-f58cbbb95096",
          "name": "Daily Schedule Check",
          "type": "n8n-nodes-base.cron",
          "position": [
            -460,
            20
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "06ad7a4a-a202-4741-9631-0431071d8a7e",
          "name": "Read Class Schedule",
          "type": "n8n-nodes-base.microsoftExcel",
          "position": [
            -240,
            20
          ],
          "parameters": {
            "filters": {}
          },
          "credentials": {
            "microsoftExcelOAuth2Api": {
              "id": "credential-id",
              "name": "microsoftExcelOAuth2Api Credential"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "e9a81260-0a7a-4682-a197-008ec53df730",
          "name": "Filter Today's Classes",
          "type": "n8n-nodes-base.code",
          "position": [
            -20,
            20
          ],
          "parameters": {
            "jsCode": "// Get current date and time\nconst now = new Date();\nconst today = now.toISOString().split('T')[0];\nconst currentHour = now.getHours();\n\n// Get all schedule data\nconst scheduleData = $input.all();\n\n// Filter classes for today and upcoming reminders\nconst todayClasses = scheduleData.filter(item => {\n  const classDate = item.json['Class Date'];\n  const classTime = item.json['Class Time'];\n  const reminderTime = item.json['Reminder Time (Hours)'] || 1;\n  \n  // Check if class is today\n  if (classDate === today) {\n    // Parse class time\n    const [hours, minutes] = classTime.split(':');\n    const classHour = parseInt(hours);\n    \n    // Check if we need to send reminder\n    const hoursUntilClass = classHour - currentHour;\n    \n    // Send reminder if within reminder window\n    if (hoursUntilClass > 0 && hoursUntilClass <= reminderTime) {\n      return true;\n    }\n  }\n  \n  return false;\n});\n\n// Also get tomorrow's classes for evening prep\nconst tomorrow = new Date(now);\ntomorrow.setDate(tomorrow.getDate() + 1);\nconst tomorrowDate = tomorrow.toISOString().split('T')[0];\n\nconst tomorrowClasses = scheduleData.filter(item => {\n  return item.json['Class Date'] === tomorrowDate && currentHour >= 18; // After 6 PM\n});\n\n// Combine today's reminders and tomorrow's prep\nconst classesToProcess = [...todayClasses, ...tomorrowClasses];\n\nreturn classesToProcess.map(item => ({\n  json: {\n    ...item.json,\n    reminderType: todayClasses.includes(item) ? 'today' : 'tomorrow',\n    currentTime: now.toISOString()\n  }\n}));"
          },
          "typeVersion": 2
        },
        {
          "id": "a7fe4b25-abcc-42e9-9da2-5692a9a302b5",
          "name": "Has Classes Today?",
          "type": "n8n-nodes-base.if",
          "position": [
            200,
            -80
          ],
          "parameters": {
            "conditions": {
              "string": [
                {
                  "value1": "={{$json['Class Name']}}",
                  "operation": "isNotEmpty"
                }
              ]
            }
          },
          "typeVersion": 1
        },
        {
          "id": "0fcf7fb2-d8e4-4db3-9ef8-b4990792c483",
          "name": "Read Student Contacts",
          "type": "n8n-nodes-base.microsoftExcel",
          "position": [
            420,
            -80
          ],
          "parameters": {
            "filters": {}
          },
          "credentials": {
            "microsoftExcelOAuth2Api": {
              "id": "credential-id",
              "name": "microsoftExcelOAuth2Api Credential"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "10b43784-8d58-4fbb-b964-0f6b4da16527",
          "name": "Create Student Reminders",
          "type": "n8n-nodes-base.code",
          "position": [
            640,
            20
          ],
          "parameters": {
            "jsCode": "// Get class data and student contacts\nconst classData = $('Filter Today\\'s Classes').all();\nconst studentContacts = $input.all();\n\n// Create reminder messages for each class\nconst reminders = [];\n\nclassData.forEach(classItem => {\n  const classInfo = classItem.json;\n  \n  // Find students enrolled in this class\n  const enrolledStudents = studentContacts.filter(student => {\n    const studentClasses = student.json['Enrolled Classes'] || '';\n    return studentClasses.includes(classInfo['Class Name']);\n  });\n  \n  // Create reminder for each enrolled student\n  enrolledStudents.forEach(student => {\n    const reminderMessage = classInfo.reminderType === 'today' \n      ? `🔔 Class Reminder: \"${classInfo['Class Name']}\" starts at ${classInfo['Class Time']} today!\\n\\n📍 Location: ${classInfo['Location'] || 'TBD'}\\n👨‍🏫 Instructor: ${classInfo['Instructor'] || 'TBD'}\\n📚 Topic: ${classInfo['Topic'] || 'Regular class'}\\n\\n⚠️ Please arrive 5 minutes early. Don't forget your materials!`\n      : `📅 Tomorrow's Schedule: You have \"${classInfo['Class Name']}\" at ${classInfo['Class Time']}\\n\\n📍 Location: ${classInfo['Location'] || 'TBD'}\\n👨‍🏫 Instructor: ${classInfo['Instructor'] || 'TBD'}\\n📚 Topic: ${classInfo['Topic'] || 'Regular class'}\\n\\n💡 Tip: Prepare your materials tonight!`;\n    \n    reminders.push({\n      json: {\n        studentName: `${student.json['First Name']} ${student.json['Last Name']}`,\n        studentEmail: student.json['Email'],\n        studentPhone: student.json['Phone'],\n        className: classInfo['Class Name'],\n        classTime: classInfo['Class Time'],\n        classDate: classInfo['Class Date'],\n        location: classInfo['Location'],\n        instructor: classInfo['Instructor'],\n        topic: classInfo['Topic'],\n        reminderType: classInfo.reminderType,\n        message: reminderMessage,\n        preferredContact: student.json['Preferred Contact'] || 'email'\n      }\n    });\n  });\n});\n\nreturn reminders;"
          },
          "typeVersion": 2
        },
        {
          "id": "73d5961e-b4a1-45cf-b9fd-4c4c717eb152",
          "name": "Split Into Batches",
          "type": "n8n-nodes-base.splitInBatches",
          "position": [
            860,
            20
          ],
          "parameters": {
            "options": {},
            "batchSize": 10
          },
          "typeVersion": 3
        },
        {
          "id": "0b07fae3-e6c1-4ba8-b168-f5c937d091f3",
          "name": "Email or SMS?",
          "type": "n8n-nodes-base.if",
          "position": [
            1080,
            20
          ],
          "parameters": {
            "conditions": {
              "string": [
                {
                  "value1": "={{$json.preferredContact}}",
                  "value2": "email"
                }
              ]
            }
          },
          "typeVersion": 1
        },
        {
          "id": "05312b9a-6dc1-408f-9f55-7dbb6aded4d8",
          "name": "Prepare Email Reminders",
          "type": "n8n-nodes-base.code",
          "position": [
            1300,
            -80
          ],
          "parameters": {
            "jsCode": "// Prepare email data\nconst reminderData = $input.all();\n\nconst emailsToSend = reminderData.map(item => {\n  const data = item.json;\n  \n  const subject = data.reminderType === 'today' \n    ? `🔔 Class Reminder: ${data.className} Today`\n    : `📅 Tomorrow's Class: ${data.className}`;\n  \n  const htmlBody = `\n    <!DOCTYPE html>\n    <html>\n    <head>\n        <style>\n            body { font-family: Arial, sans-serif; color: #333; margin: 0; padding: 20px; }\n            .container { max-width: 600px; margin: 0 auto; }\n            .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 20px; border-radius: 8px 8px 0 0; text-align: center; }\n            .content { background: #f9f9f9; padding: 25px; border-radius: 0 0 8px 8px; }\n            .class-info { background: white; padding: 20px; border-radius: 8px; margin: 15px 0; border-left: 4px solid #667eea; }\n            .info-row { margin: 10px 0; }\n            .info-label { font-weight: bold; color: #667eea; }\n            .footer { text-align: center; margin-top: 20px; color: #666; font-size: 12px; }\n            .emoji { font-size: 18px; }\n        </style>\n    </head>\n    <body>\n        <div class=\"container\">\n            <div class=\"header\">\n                <h1><span class=\"emoji\">${data.reminderType === 'today' ? '🔔' : '📅'}</span> Class ${data.reminderType === 'today' ? 'Reminder' : 'Preview'}</h1>\n            </div>\n            <div class=\"content\">\n                <p>Hello ${data.studentName},</p>\n                <p>${data.reminderType === 'today' ? 'Your class is starting soon!' : 'Here\\'s your schedule for tomorrow:'}</p>\n                \n                <div class=\"class-info\">\n                    <div class=\"info-row\"><span class=\"info-label\">📚 Class:</span> ${data.className}</div>\n                    <div class=\"info-row\"><span class=\"info-label\">🕐 Time:</span> ${data.classTime}</div>\n                    <div class=\"info-row\"><span class=\"info-label\">📅 Date:</span> ${data.classDate}</div>\n                    <div class=\"info-row\"><span class=\"info-label\">📍 Location:</span> ${data.location || 'TBD'}</div>\n                    <div class=\"info-row\"><span class=\"info-label\">👨‍🏫 Instructor:</span> ${data.instructor || 'TBD'}</div>\n                    <div class=\"info-row\"><span class=\"info-label\">📖 Topic:</span> ${data.topic || 'Regular class session'}</div>\n                </div>\n                \n                ${data.reminderType === 'today' \n                  ? '<p><strong>⚠️ Please arrive 5 minutes early and don\\'t forget your materials!</strong></p>'\n                  : '<p><strong>💡 Tip: Prepare your materials tonight for a smooth start tomorrow!</strong></p>'\n                }\n                \n                <p>Have a great class!</p>\n            </div>\n            <div class=\"footer\">\n                <p>This is an automated reminder from your class management system.</p>\n            </div>\n        </div>\n    </body>\n    </html>\n  `;\n  \n  return {\n    json: {\n      to: data.studentEmail,\n      subject: subject,\n      body: data.message,\n      html: htmlBody,\n      studentName: data.studentName,\n      className: data.className\n    }\n  };\n});\n\nreturn emailsToSend;"
          },
          "typeVersion": 2
        },
        {
          "id": "cece98bb-8af5-4a9c-b1e1-9ff2a421576b",
          "name": "Prepare SMS Reminders",
          "type": "n8n-nodes-base.code",
          "position": [
            1300,
            120
          ],
          "parameters": {
            "jsCode": "// Prepare SMS data\nconst reminderData = $input.all();\n\nconst smsToSend = reminderData.map(item => {\n  const data = item.json;\n  \n  const smsMessage = data.reminderType === 'today'\n    ? `🔔 Class Reminder: \"${data.className}\" starts at ${data.classTime} today at ${data.location || 'TBD'}. Arrive 5 min early!`\n    : `📅 Tomorrow: \"${data.className}\" at ${data.classTime} (${data.location || 'TBD'}). Prepare tonight!`;\n  \n  return {\n    json: {\n      to: data.studentPhone,\n      message: smsMessage,\n      studentName: data.studentName,\n      className: data.className\n    }\n  };\n});\n\nreturn smsToSend;"
          },
          "typeVersion": 2
        },
        {
          "id": "9771a2d3-1ad7-47d9-8951-58f9ef7e66d7",
          "name": "Sync to Google Calendar",
          "type": "n8n-nodes-base.googleCalendar",
          "position": [
            420,
            120
          ],
          "parameters": {
            "end": "={{$json['Class Date']}}T{{(parseInt($json['Class Time'].split(':')[0]) + 1).toString().padStart(2, '0')}}:{{$json['Class Time'].split(':')[1].padStart(2, '0')}}:00",
            "start": "={{$json['Class Date']}}T{{$json['Class Time'].split(':')[0].padStart(2, '0')}}:{{$json['Class Time'].split(':')[1].padStart(2, '0')}}:00",
            "calendar": {
              "__rl": true,
              "mode": "id",
              "value": "user@example.com"
            },
            "additionalFields": {}
          },
          "credentials": {
            "googleCalendarOAuth2Api": {
              "id": "credential-id",
              "name": "googleCalendarOAuth2Api Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "366cc8cf-d94c-4685-b4bb-fad0cf8f948b",
          "name": "Read Reminder Log",
          "type": "n8n-nodes-base.microsoftExcel",
          "position": [
            1520,
            20
          ],
          "parameters": {
            "filters": {}
          },
          "credentials": {
            "microsoftExcelOAuth2Api": {
              "id": "credential-id",
              "name": "microsoftExcelOAuth2Api Credential"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "d28bca9d-3a43-4c04-abe4-7ecc8200e23d",
          "name": "Update Reminder Log",
          "type": "n8n-nodes-base.code",
          "position": [
            1740,
            20
          ],
          "parameters": {
            "jsCode": "// Get existing log data\nconst existingLogs = $input.all();\n\n// Get sent reminders data\nconst sentEmails = $('Prepare Email Reminders').all() || [];\nconst sentSMS = $('Prepare SMS Reminders').all() || [];\n\n// Create log entries for sent reminders\nconst newLogEntries = [];\n\n// Log email reminders\nsentEmails.forEach(email => {\n  newLogEntries.push({\n    'Log ID': 'LOG-' + Date.now() + '-' + Math.random().toString(36).substr(2, 9),\n    'Timestamp': new Date().toISOString(),\n    'Student Name': email.json.studentName,\n    'Class Name': email.json.className,\n    'Contact Method': 'Email',\n    'Contact Info': email.json.to,\n    'Status': 'Sent',\n    'Reminder Type': 'Class Reminder',\n    'Message Preview': email.json.subject\n  });\n});\n\n// Log SMS reminders\nsentSMS.forEach(sms => {\n  newLogEntries.push({\n    'Log ID': 'LOG-' + Date.now() + '-' + Math.random().toString(36).substr(2, 9),\n    'Timestamp': new Date().toISOString(),\n    'Student Name': sms.json.studentName,\n    'Class Name': sms.json.className,\n    'Contact Method': 'SMS',\n    'Contact Info': sms.json.to,\n    'Status': 'Sent',\n    'Reminder Type': 'Class Reminder',\n    'Message Preview': sms.json.message.substring(0, 50) + '...'\n  });\n});\n\n// Combine existing logs with new entries\nconst allLogs = [...existingLogs, ...newLogEntries];\n\nreturn allLogs.map(item => ({ json: item }));"
          },
          "typeVersion": 2
        },
        {
          "id": "af36b846-ccb8-4ab3-8e3e-0c8599efb69a",
          "name": "Save Reminder Log",
          "type": "n8n-nodes-base.microsoftExcel",
          "position": [
            1960,
            20
          ],
          "parameters": {
            "options": {},
            "resource": "worksheet",
            "workbook": {
              "__rl": true,
              "mode": "id",
              "value": "3456yuhh"
            },
            "operation": "append",
            "worksheet": {
              "__rl": true,
              "mode": "id",
              "value": "=23456yuytrewerfgn"
            }
          },
          "credentials": {
            "microsoftExcelOAuth2Api": {
              "id": "credential-id",
              "name": "microsoftExcelOAuth2Api Credential"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "2d5a26d5-e112-42b4-b4a1-3cdb98df6240",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -340,
            -440
          ],
          "parameters": {
            "width": 600,
            "height": 220,
            "content": "### **Workflow Process**\n1. **Daily Check** → Triggers at scheduled time\n2. **Read Schedule** → Gets today's class schedule\n3. **Filter Classes** → Identifies today's classes\n4. **Check Students** → Gets enrolled student contacts\n5. **Sync Calendar** → Updates Google Calendar\n6. **Create Reminders** → Generates personalized messages\n7. **Send Notifications** → Delivers via email/SMS\n8. **Log Activity** → Records reminder status"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "a4519a70-de1e-4df5-9dd4-0118ed25fc16",
      "connections": {
        "Email or SMS?": {
          "main": [
            [
              {
                "node": "Prepare Email Reminders",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Prepare SMS Reminders",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Read Reminder Log": {
          "main": [
            [
              {
                "node": "Update Reminder Log",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Has Classes Today?": {
          "main": [
            [
              {
                "node": "Read Student Contacts",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Split Into Batches": {
          "main": [
            [
              {
                "node": "Email or SMS?",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Read Class Schedule": {
          "main": [
            [
              {
                "node": "Filter Today's Classes",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Update Reminder Log": {
          "main": [
            [
              {
                "node": "Save Reminder Log",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Daily Schedule Check": {
          "main": [
            [
              {
                "node": "Read Class Schedule",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Prepare SMS Reminders": {
          "main": [
            [
              {
                "node": "Read Reminder Log",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Read Student Contacts": {
          "main": [
            [
              {
                "node": "Create Student Reminders",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Filter Today's Classes": {
          "main": [
            [
              {
                "node": "Has Classes Today?",
                "type": "main",
                "index": 0
              },
              {
                "node": "Sync to Google Calendar",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Prepare Email Reminders": {
          "main": [
            [
              {
                "node": "Read Reminder Log",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Sync to Google Calendar": {
          "main": [
            [
              {
                "node": "Create Student Reminders",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Create Student Reminders": {
          "main": [
            [
              {
                "node": "Split Into Batches",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 15,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 2
        },
        "n8n-nodes-base.code": {
          "count": 5
        },
        "n8n-nodes-base.cron": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 1
        },
        "n8n-nodes-base.googleCalendar": {
          "count": 1
        },
        "n8n-nodes-base.microsoftExcel": {
          "count": 4
        },
        "n8n-nodes-base.splitInBatches": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Oneclick AI Squad",
      "username": "oneclick-ai",
      "bio": "The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.",
      "verified": true,
      "links": [
        "https://www.oneclickitsolution.com/"
      ],
      "avatar": "https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 7,
        "icon": "fa:clock",
        "name": "n8n-nodes-base.cron",
        "codex": {
          "data": {
            "alias": [
              "Time",
              "Scheduler",
              "Polling",
              "Cron",
              "Interval"
            ],
            "details": "The Cron node uses Cron under the hood - a time-based job scheduler in Unix-like computer operating systems. Use this node when you want to trigger workflows periodically, especially in more complex scenarios like \"every Tuesday at 9 am\" or \"Weekdays\".",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/2021-goals-level-up-your-vocabulary-with-vonage-and-n8n/",
                  "icon": "🎯",
                  "label": "2021 Goals: Level Up Your Vocabulary With Vonage and n8n"
                },
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/why-i-chose-n8n-over-zapier-in-2020/",
                  "icon": "😍",
                  "label": "Why I chose n8n over Zapier in 2020"
                },
                {
                  "url": "https://n8n.io/blog/how-to-host-virtual-coffee-breaks-with-n8n/",
                  "icon": "☕️",
                  "label": "How to host virtual coffee breaks with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-sync-data-between-two-systems/",
                  "icon": "🏬",
                  "label": "How to synchronize data between two systems (one-way vs. two-way sync"
                },
                {
                  "url": "https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/",
                  "icon": "📡",
                  "label": "Database Monitoring and Alerting with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/world-poetry-day-workflow/",
                  "icon": "📜",
                  "label": "Celebrating World Poetry Day with a daily poem in Telegram"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/",
                  "icon": "🎨",
                  "label": "Automate Designs with Bannerbear and n8n"
                },
                {
                  "url": "https://n8n.io/blog/tracking-time-spent-in-meetings-with-google-calendar-twilio-and-n8n/",
                  "icon": "🗓",
                  "label": "Tracking Time Spent in Meetings With Google Calendar, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-error-workflows-in-n8n/",
                  "icon": "🌪",
                  "label": "Creating Error Workflows in n8n"
                },
                {
                  "url": "https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/",
                  "icon": "💪",
                  "label": "Using Automation to Boost Productivity in the Workplace"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/",
                  "icon": "🤟",
                  "label": "Creating scheduled text affirmations with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"trigger\",\"schedule\"]",
        "defaults": {
          "name": "Cron",
          "color": "#29a568"
        },
        "iconData": {
          "icon": "clock",
          "type": "icon"
        },
        "displayName": "Cron",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 39,
        "icon": "fa:sync",
        "name": "n8n-nodes-base.splitInBatches",
        "codex": {
          "data": {
            "alias": [
              "Loop",
              "Concatenate",
              "Batch",
              "Split",
              "Split In Batches"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"organization\"]",
        "defaults": {
          "name": "Loop Over Items",
          "color": "#007755"
        },
        "iconData": {
          "icon": "sync",
          "type": "icon"
        },
        "displayName": "Loop Over Items (Split in Batches)",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 317,
        "icon": "file:googleCalendar.svg",
        "name": "n8n-nodes-base.googleCalendar",
        "codex": {
          "data": {
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/how-to-host-virtual-coffee-breaks-with-n8n/",
                  "icon": "☕️",
                  "label": "How to host virtual coffee breaks with n8n"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automation for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/tracking-time-spent-in-meetings-with-google-calendar-twilio-and-n8n/",
                  "icon": "🗓",
                  "label": "Tracking Time Spent in Meetings With Google Calendar, Twilio, and n8n"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlecalendar/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Google Calendar"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgODIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTYxLjA1MiAxOC45NDdIMTguOTQ3djQyLjEwNWg0Mi4xMDV6Ii8+PHBhdGggZmlsbD0iI2VhNDMzNSIgZD0iTTYxLjA1MyA4MCA4MCA2MS4wNTNINjEuMDUzeiIvPjxwYXRoIGZpbGw9IiNmYmJjMDQiIGQ9Ik04MCAxOC45NDdINjEuMDUzdjQyLjEwNUg4MHoiLz48cGF0aCBmaWxsPSIjMzRhODUzIiBkPSJNNjEuMDUyIDYxLjA1M0gxOC45NDdWODBoNDIuMTA1eiIvPjxwYXRoIGZpbGw9IiMxODgwMzgiIGQ9Ik0wIDYxLjA1M3YxMi42MzJBNi4zMTQgNi4zMTQgMCAwIDAgNi4zMTYgODBoMTIuNjMyVjYxLjA1M3oiLz48cGF0aCBmaWxsPSIjMTk2N2QyIiBkPSJNODAgMTguOTQ3VjYuMzE2QTYuMzE0IDYuMzE0IDAgMCAwIDczLjY4NSAwSDYxLjA1M3YxOC45NDd6Ii8+PHBhdGggZmlsbD0iIzQyODVmNCIgZD0iTTYxLjA1MyAwSDYuMzE2QTYuMzE0IDYuMzE0IDAgMCAwIDAgNi4zMTZ2NTQuNzM3aDE4Ljk0N1YxOC45NDdoNDIuMTA1VjB6TTI3LjU4NCA1MS42MTFjLTEuNTc0LTEuMDYzLTIuNjYzLTIuNjE2LTMuMjU4LTQuNjY4bDMuNjUzLTEuNTA1cS40OTggMS44OTQgMS43MzcgMi45MzdjMS4yMzkgMS4wNDMgMS44MjEgMS4wMzcgMi45ODkgMS4wMzdxMS43OTIgMCAzLjA3OS0xLjA4OWMxLjI4Ny0xLjA4OSAxLjI5LTEuNjUzIDEuMjktMi43NzRhMy40NCAzLjQ0IDAgMCAwLTEuMzU4LTIuODExYy0uOTA1LS43MjctMi4wNDItMS4wODktMy40LTEuMDg5aC0yLjExMXYtMy42MTZIMzIuMXExLjc1MiAwIDIuOTUzLS45NDdjMS4yMDEtLjk0NyAxLjItMS40OTUgMS4yLTIuNTk1cTAtMS40NjctMS4wNzQtMi4zNDJjLTEuMDc0LS44NzUtMS42MjEtLjg3OS0yLjcyMS0uODc5cS0xLjYxLS4wMDItMi41NTguODU4Yy0uOTQ4Ljg2LTEuMTA2IDEuMzAxLTEuMzc5IDIuMTExbC0zLjYxNi0xLjUwNWMuNDc5LTEuMzU4IDEuMzU4LTIuNTU4IDIuNjQ3LTMuNTk1czIuOTM3LTEuNTU4IDQuOTM3LTEuNTU4cTIuMjItLjAwMiAzLjk4OS44NThjMS43NjkuODYgMi4xMDUgMS4zNjggMi43NzQgMi4zNzlzMSAyLjE1MyAxIDMuNDE2cTAgMS45MzItLjkzMiAzLjI3NGMtLjkzMiAxLjM0Mi0xLjM4NCAxLjU3OS0yLjI4OSAyLjA1OHYuMjE2YTYuOTUgNi45NSAwIDAgMSAyLjkzNyAyLjI4OXExLjE0NiAxLjUzOCAxLjE0NyAzLjY4NGMuMDAxIDIuMTQ2LS4zNjMgMi43MTEtMS4wODkgMy44MzJzLTEuNzMyIDIuMDA1LTMuMDA1IDIuNjQ3Yy0xLjI3OS42NDItMi43MTYuOTY4LTQuMzExLjk2OC0xLjg0Ny4wMDUtMy41NTMtLjUyNi01LjEyNi0xLjU4OXptMjIuNDM3LTE4LjEyNi00LjAxIDIuOS0yLjAwNS0zLjA0MiA3LjE5NS01LjE4OWgyLjc1OHYyNC40NzloLTMuOTM3VjMzLjQ4NHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Google Calendar",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 322,
        "icon": "file:excel.svg",
        "name": "n8n-nodes-base.microsoftExcel",
        "codex": {
          "data": {
            "alias": [
              "_Excel",
              "Excel",
              "Sheet",
              "CSV",
              "Spreadsheet"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftexcel/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/microsoft/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Microsoft Excel 365"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0iIzAyNzIzQiIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik00My4xIDIwLjIyN2g5LjUxMnY0LjY5MmgtOS41MTN6bTAtNy4wMzRoOS41MTJ2NC42OWgtOS41MTN6bTAgMTQuMjI3aDkuNTEydjQuNjkxaC05LjUxM3ptMCA3LjAzNmg5LjUxMnY0LjY5MWgtOS41MTN6Ii8+PHBhdGggZD0iTTQzLjEgNDEuNjQ5aDkuNTEydjQuNjloLTkuNTEzek01OC4wNyA2Ljc4SDM1LjE0NlYuMzdMLjM3IDYuNDY3djQ3LjIybDM0Ljc3NiA1Ljk0MnYtNy4xODZINTguMDdjLjkzNSAwIDEuNTU5LS43ODEgMS41NTktMS41NTVWOC4zNDRjMC0uNzgxLS42MjQtMS41NTUtMS41Ni0xLjU1NVY2Ljc4ek0yMC4wMTggNDAuNTU0bC0zLjI3NC04LjU5M2gtLjE0OGMwIC4xNDktMy4yNzUgOC4xMy0zLjI3NSA4LjEzbC00LjM2Ni0uMzEyTDE0LjEgMjkuNjE2IDkuNDIyIDE5LjQ1M2w0LjM2Ny0uMzEyIDIuOTYzIDcuOTc0aC4xNDhjMC0uMTQ4IDMuMjc0LTguMjg3IDMuMjc0LTguMjg3bDQuNTIyLS4zMTItNS40NTcgMTEuMTAxIDUuNjE0IDExLjEwMi00LjgzNC0uMTQ5ek01Ny42IDUwLjcxN0gzNS4xNDZ2LTQuMzdoNS40NTh2LTQuNjkxaC01LjQ1OHYtMi4zNTJoNS40NTh2LTQuNjloLTUuNDU4di0yLjM0N2g1LjQ1OHYtNC42OWgtNS40NThWMjUuMjNoNS40NTh2LTQuNjloLTUuNDU4di0yLjM0NWg1LjQ1OHYtNC42OTJoLTUuNDU4di00LjY5aDIyLjQ1NnY0MS45MDNoLS4wMDF6Ii8+PHBhdGggZD0iTTQyLjcyOSAxOS44NTdoOS41MTJ2NC42OTFINDIuNzN6bTAtNy4wMzVoOS41MTJ2NC42OTFINDIuNzN6bTAgMTQuMjI4aDkuNTEydjQuNjlINDIuNzN6bTAgNy4wMzZoOS41MTJ2NC42OTFINDIuNzN6Ii8+PHBhdGggZD0iTTQyLjcyOSA0MS4yNzloOS41MTJ2NC42OUg0Mi43M3pNNTcuNjk5IDYuNDFIMzQuNzc2VjBMMCA2LjA5OHY0Ny4yMmwzNC43NzYgNS45NDF2LTcuMTg1aDIyLjkyM2MuOTM2IDAgMS41Ni0uNzgxIDEuNTYtMS41NTVWNy45NzRjMC0uNzgxLS42MjQtMS41NTUtMS41Ni0xLjU1NXpNMTkuNjQ3IDQwLjE4NGwtMy4yNzQtOC41OTNoLS4xNDhjMCAuMTQ4LTMuMjc0IDguMTMtMy4yNzQgOC4xM2wtNC4zNjctLjMxMiA1LjE0Ni0xMC4xNjMtNC42NzgtMTAuMTYzIDQuMzY3LS4zMTMgMi45NjIgNy45NzRoLjE0OWMwLS4xNDggMy4yNzQtOC4yODYgMy4yNzQtOC4yODZsNC41MjItLjMxMy01LjQ1OCAxMS4xMDIgNS42MTUgMTEuMTAxLTQuODM0LS4xNDh6TTU3LjIzIDUwLjM0N0gzNC43NzZ2LTQuMzdoNS40NTd2LTQuNjkyaC01LjQ1N3YtMi4zNTJoNS40NTd2LTQuNjloLTUuNDU3di0yLjM0N2g1LjQ1N3YtNC42OWgtNS40NTdWMjQuODZoNS40NTd2LTQuNjloLTUuNDU3di0yLjM0Nmg1LjQ1N3YtNC42OTJoLTUuNDU3di00LjY5aDIyLjQ1NnY0MS45MDR6Ii8+PC9nPjwvc3ZnPg=="
        },
        "displayName": "Microsoft Excel 365",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 43,
        "name": "Personal Productivity"
      }
    ],
    "image": []
  }
}