{
  "workflow": {
    "id": 7249,
    "name": "Monitor medical equipment with Google Sheets & send WhatsApp and email alerts",
    "views": 481,
    "recentViews": 0,
    "totalViews": 481,
    "createdAt": "2025-08-11T12:09:18.391Z",
    "description": "This n8n workflow monitors medical equipment usage by reading data daily at 6 AM from a Google Sheet, processes alerts for maintenance or calibration, and sends notifications to technicians and supervisors. \n\n## Good to Know\n- Runs daily at 6 AM via cron trigger.\n- Requires Google Sheet with equipment data.\n- Sends alerts via email and WhatsApp.\n- Logs all activities in the Google Sheet.\n\n## Google Sheet Structure\n\n### Sheet:\n```\nA: Equipment ID | B: Equipment Name | C: Last Maintenance Date | D: Usage Hours\nE: Calibration Due | F: Status | G: Technician Email | H: Supervisor Email | I: Last Alert Date\n```\n\n### Sample Data:\n```\nE001 | MRI Machine | 2025-07-01 | 150 | 2025-08-15 | Active | tech1@hospital.com | sup1@hospital.com | 2025-08-01\nE002 | X-Ray Unit | 2025-06-15 | 200 | 2025-08-10 | Overdue | tech2@hospital.com | sup2@hospital.com | 2025-08-05\n```\n\n## How It Works\n- **Daily Equipment Check (6 AM)** - Triggers the workflow.\n- **Read Equipment Data** - Fetches data from Google Sheet.\n- **Process Equipment Alerts** - Identifies maintenance needs.\n- **Task Break For 5 Sec** - Adds a delay for processing.\n- **Filter Equipment with Alerts** - Filters equipment needing attention.\n- **Send Technician Email** - Notifies technicians via email.\n- **Send Message (message: send)** - Sends WhatsApp alerts to technicians.\n- **Send Critical Alert to Supervisors** - Escalates critical issues via email and WhatsApp.\n- **Filter Overdue Equipment** - Identifies overdue maintenance.\n- **Update Equipment Status** - Updates sheet with new statuses.\n- **Log Maintenance Alerts** - Logs alerts in the sheet.\n\n## How to Use\n- Import workflow JSON into n8n.\n- Configure nodes with Google Sheet ID, email, and WhatsApp API credentials.\n- Add equipment data to the Google Sheet.\n- Test manually, then activate for daily runs.\n\n## Requirements\n- Google Sheet with specified structure.\n- Google service account credentials.\n- Email SMTP setup (e.g., Gmail).\n- WhatsApp Business API token.\n- n8n instance.\n\n## Customizing This Workflow\n- Adjust cron time for different schedules.\n- Modify alert thresholds in the Process Equipment Alerts node.\n- Update notification templates in email and WhatsApp nodes.\n- Extend filters for additional equipment statuses.\n\n\nWant a tailored workflow for your business? Our experts can craft it quickly [Contact our team](https://www.oneclickitsolution.com/contact-us/)\n\n",
    "workflow": {
      "id": "hWACWrSaTJyZTxzH",
      "meta": {
        "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
        "templateCredsSetupCompleted": true
      },
      "name": "Medical Equipment Maintenance Alert System",
      "tags": [],
      "nodes": [
        {
          "id": "661d56b2-1dba-47ab-91fa-56900b544b9b",
          "name": "Daily Equipment Check (6 AM)",
          "type": "n8n-nodes-base.cron",
          "position": [
            -1500,
            140
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "14df28e8-686d-4c2a-8754-64e817e88941",
          "name": "Read Equipment Data",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            -1280,
            140
          ],
          "parameters": {
            "options": {},
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultName": "Equipment"
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "YOUR_GOOGLE_SHEET_ID"
            },
            "authentication": "serviceAccount"
          },
          "credentials": {
            "googleApi": {
              "id": "credential-id",
              "name": "googleApi Credential"
            }
          },
          "typeVersion": 4
        },
        {
          "id": "bf61b7e2-79e9-4af7-b30b-f2aa260b51f1",
          "name": "Process Equipment Alerts",
          "type": "n8n-nodes-base.code",
          "position": [
            -1060,
            140
          ],
          "parameters": {
            "jsCode": "const equipmentList = $input.all();\nconst alerts = [];\nconst today = new Date();\n\nfor (const equipment of equipmentList) {\n  const equipData = equipment.json;\n  \n  // Skip header row\n  if (equipData['Equipment ID'] === 'Equipment ID') continue;\n  \n  // Parse dates\n  const lastMaintenance = new Date(equipData['Last Maintenance']);\n  const lastCalibration = new Date(equipData['Last Calibration']);\n  const warrantyExpiry = new Date(equipData['Warranty Expiry']);\n  \n  // Calculate days since last maintenance/calibration\n  const daysSinceMaintenance = Math.floor((today - lastMaintenance) / (1000 * 60 * 60 * 24));\n  const daysSinceCalibration = Math.floor((today - lastCalibration) / (1000 * 60 * 60 * 24));\n  const daysToWarrantyExpiry = Math.floor((warrantyExpiry - today) / (1000 * 60 * 60 * 24));\n  \n  // Get maintenance and calibration intervals\n  const maintenanceInterval = parseInt(equipData['Maintenance Interval (Days)']) || 90;\n  const calibrationInterval = parseInt(equipData['Calibration Interval (Days)']) || 365;\n  \n  // Current usage hours\n  const currentUsage = parseFloat(equipData['Current Usage Hours']) || 0;\n  const maxUsage = parseFloat(equipData['Max Usage Hours']) || 8760; // Default 1 year\n  const usagePercentage = (currentUsage / maxUsage) * 100;\n  \n  // Determine alert types and priority\n  let alertTypes = [];\n  let priority = 'Normal';\n  let alertMessage = '';\n  \n  // Maintenance alerts\n  if (daysSinceMaintenance >= maintenanceInterval) {\n    alertTypes.push('OVERDUE_MAINTENANCE');\n    priority = 'High';\n    alertMessage += `⚠️ OVERDUE MAINTENANCE (${daysSinceMaintenance} days overdue)\\n`;\n  } else if (daysSinceMaintenance >= maintenanceInterval - 7) {\n    alertTypes.push('UPCOMING_MAINTENANCE');\n    if (priority === 'Normal') priority = 'Medium';\n    const daysLeft = maintenanceInterval - daysSinceMaintenance;\n    alertMessage += `🔧 Maintenance due in ${daysLeft} days\\n`;\n  }\n  \n  // Calibration alerts\n  if (daysSinceCalibration >= calibrationInterval) {\n    alertTypes.push('OVERDUE_CALIBRATION');\n    priority = 'High';\n    alertMessage += `⚠️ OVERDUE CALIBRATION (${daysSinceCalibration} days overdue)\\n`;\n  } else if (daysSinceCalibration >= calibrationInterval - 14) {\n    alertTypes.push('UPCOMING_CALIBRATION');\n    if (priority === 'Normal') priority = 'Medium';\n    const daysLeft = calibrationInterval - daysSinceCalibration;\n    alertMessage += `🎯 Calibration due in ${daysLeft} days\\n`;\n  }\n  \n  // Usage alerts\n  if (usagePercentage >= 95) {\n    alertTypes.push('CRITICAL_USAGE');\n    priority = 'Critical';\n    alertMessage += `🚨 CRITICAL USAGE: ${usagePercentage.toFixed(1)}% of max hours\\n`;\n  } else if (usagePercentage >= 80) {\n    alertTypes.push('HIGH_USAGE');\n    if (priority === 'Normal' || priority === 'Medium') priority = 'Medium';\n    alertMessage += `📊 High usage: ${usagePercentage.toFixed(1)}% of max hours\\n`;\n  }\n  \n  // Warranty alerts\n  if (daysToWarrantyExpiry <= 0) {\n    alertTypes.push('WARRANTY_EXPIRED');\n    priority = 'High';\n    alertMessage += `❌ WARRANTY EXPIRED (${Math.abs(daysToWarrantyExpiry)} days ago)\\n`;\n  } else if (daysToWarrantyExpiry <= 30) {\n    alertTypes.push('WARRANTY_EXPIRING');\n    if (priority === 'Normal') priority = 'Medium';\n    alertMessage += `⏰ Warranty expires in ${daysToWarrantyExpiry} days\\n`;\n  }\n  \n  // Status-based alerts\n  if (equipData['Status'] === 'Out of Service') {\n    alertTypes.push('OUT_OF_SERVICE');\n    priority = 'Critical';\n    alertMessage += `🔴 EQUIPMENT OUT OF SERVICE\\n`;\n  } else if (equipData['Status'] === 'Needs Repair') {\n    alertTypes.push('NEEDS_REPAIR');\n    priority = 'High';\n    alertMessage += `🔧 EQUIPMENT NEEDS REPAIR\\n`;\n  }\n  \n  // Only create alert if there are issues\n  if (alertTypes.length > 0) {\n    const alert = {\n      equipmentId: equipData['Equipment ID'],\n      equipmentName: equipData['Equipment Name'],\n      location: equipData['Location'],\n      department: equipData['Department'],\n      status: equipData['Status'],\n      alertTypes: alertTypes,\n      priority: priority,\n      alertMessage: alertMessage.trim(),\n      technicianEmail: equipData['Technician Email'],\n      technicianWhatsApp: equipData['Technician WhatsApp'],\n      supervisorEmail: equipData['Supervisor Email'],\n      daysSinceMaintenance: daysSinceMaintenance,\n      daysSinceCalibration: daysSinceCalibration,\n      usagePercentage: usagePercentage.toFixed(1),\n      daysToWarrantyExpiry: daysToWarrantyExpiry,\n      manufacturer: equipData['Manufacturer'],\n      model: equipData['Model'],\n      serialNumber: equipData['Serial Number'],\n      currentDate: today.toLocaleDateString('en-US', {\n        year: 'numeric',\n        month: 'long',\n        day: 'numeric'\n      })\n    };\n    \n    // Create detailed email content\n    alert.emailSubject = `🏥 Equipment Alert: ${alert.equipmentName} (${alert.equipmentId}) - ${priority} Priority`;\n    \n    alert.emailBody = `\nDear Maintenance Team,\n\nEquipment Maintenance Alert - ${alert.currentDate}\n\n🏥 EQUIPMENT DETAILS:\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nEquipment ID: ${alert.equipmentId}\nName: ${alert.equipmentName}\nLocation: ${alert.location}\nDepartment: ${alert.department}\nStatus: ${alert.status}\nPriority: ${priority}\n\n📋 EQUIPMENT SPECIFICATIONS:\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nManufacturer: ${alert.manufacturer}\nModel: ${alert.model}\nSerial Number: ${alert.serialNumber}\n\n⚠️ ALERT DETAILS:\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n${alert.alertMessage}\n\n📊 MAINTENANCE STATUS:\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n• Days since last maintenance: ${alert.daysSinceMaintenance}\n• Days since last calibration: ${alert.daysSinceCalibration}\n• Current usage: ${alert.usagePercentage}% of maximum\n• Warranty expires in: ${alert.daysToWarrantyExpiry} days\n\n🔧 ACTION REQUIRED:\nPlease schedule appropriate maintenance/calibration as indicated above.\nContact supervisor if equipment is critical for patient care.\n\nBest regards,\nEquipment Management System\n    `;\n    \n    // Create WhatsApp message\n    alert.whatsappMessage = `🏥 *EQUIPMENT ALERT*\\n\\n🔧 *${alert.equipmentName}*\\n📍 Location: ${alert.location}\\n🚨 Priority: ${priority}\\n\\n${alert.alertMessage.replace(/\\n/g, '\\n')}\\n\\n📊 Usage: ${alert.usagePercentage}%\\n📅 Alert Date: ${alert.currentDate}`;\n    \n    alerts.push(alert);\n  }\n}\n\n// Sort alerts by priority (Critical > High > Medium > Normal)\nconst priorityOrder = { 'Critical': 1, 'High': 2, 'Medium': 3, 'Normal': 4 };\nalerts.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);\n\nreturn alerts.map(alert => ({ json: alert }));"
          },
          "typeVersion": 2
        },
        {
          "id": "cf09a396-a848-4014-8fd2-513d36832831",
          "name": "Filter Equipment with Alerts",
          "type": "n8n-nodes-base.filter",
          "position": [
            -620,
            140
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "has-alerts",
                  "operator": {
                    "type": "number",
                    "operation": "gt"
                  },
                  "leftValue": "={{ $json.alertTypes.length }}",
                  "rightValue": 0
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "b176f175-4868-438d-b16b-1334cd5f1e69",
          "name": "Send Technician Email",
          "type": "n8n-nodes-base.emailSend",
          "position": [
            -400,
            -260
          ],
          "webhookId": "a7899621-107e-426f-93d7-b9a08dd1a711",
          "parameters": {
            "options": {},
            "subject": "={{ $json.emailSubject }}",
            "toEmail": "={{ $json.technicianEmail }}",
            "fromEmail": "user@example.com"
          },
          "credentials": {
            "smtp": {
              "id": "credential-id",
              "name": "smtp Credential"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "eb4277e9-7e3c-4dd6-83fe-43b823527b47",
          "name": "Filter Critical Equipment",
          "type": "n8n-nodes-base.filter",
          "position": [
            -400,
            -60
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "or",
              "conditions": [
                {
                  "id": "critical-priority",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.priority }}",
                  "rightValue": "Critical"
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "4ecad11b-1b12-4d54-b44c-17b3b6879c59",
          "name": "Send Critical Alert to Supervisors",
          "type": "n8n-nodes-base.emailSend",
          "position": [
            -180,
            -160
          ],
          "webhookId": "c2c5a667-387d-4beb-a567-bc02a08d12c9",
          "parameters": {
            "options": {},
            "subject": "🚨 CRITICAL EQUIPMENT ALERT - {{ $json.equipmentName }}",
            "toEmail": "user@example.com,user@example.com",
            "fromEmail": "user@example.com"
          },
          "credentials": {
            "smtp": {
              "id": "credential-id",
              "name": "smtp Credential"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "b3f1bdc8-25c1-4bfa-88ab-c577a01836b0",
          "name": "Log Maintenance Alerts",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            -400,
            340
          ],
          "parameters": {
            "options": {},
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=1",
              "cachedResultName": "Alert_Log"
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "YOUR_GOOGLE_SHEET_ID"
            },
            "authentication": "serviceAccount"
          },
          "credentials": {
            "googleApi": {
              "id": "credential-id",
              "name": "googleApi Credential"
            }
          },
          "typeVersion": 4
        },
        {
          "id": "a35161f0-1747-4cf1-a189-3d255053468b",
          "name": "Filter Overdue Equipment",
          "type": "n8n-nodes-base.filter",
          "position": [
            -400,
            540
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "overdue-maintenance",
                  "operator": {
                    "type": "boolean",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.alertTypes.includes('OVERDUE_MAINTENANCE') || $json.alertTypes.includes('OVERDUE_CALIBRATION') }}",
                  "rightValue": true
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "d4e4bd40-5570-4463-a094-e5f54d4f58de",
          "name": "Update Equipment Status",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            -180,
            540
          ],
          "parameters": {
            "options": {},
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultName": "Equipment"
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "YOUR_GOOGLE_SHEET_ID"
            },
            "authentication": "serviceAccount"
          },
          "credentials": {
            "googleApi": {
              "id": "credential-id",
              "name": "googleApi Credential"
            }
          },
          "typeVersion": 4
        },
        {
          "id": "aea195b9-fd94-4910-b249-352d629f9bab",
          "name": "Tack Break For 5 Sec",
          "type": "n8n-nodes-base.wait",
          "position": [
            -840,
            140
          ],
          "webhookId": "19f6b41c-a026-4cd5-bc47-624aab2cd751",
          "parameters": {},
          "typeVersion": 1.1
        },
        {
          "id": "fda3f3f5-cf5d-491c-a73e-2600a2277567",
          "name": "Send message",
          "type": "n8n-nodes-base.whatsApp",
          "position": [
            -400,
            140
          ],
          "webhookId": "15bd0b4f-0ebd-46ee-811d-fac093883808",
          "parameters": {
            "textBody": "=🚨 EQUIPMENT ALERT - {{ $json.equipmentName }}",
            "operation": "send",
            "phoneNumberId": "=+919876587688",
            "additionalFields": {},
            "recipientPhoneNumber": "+1234567890"
          },
          "credentials": {
            "whatsAppApi": {
              "id": "credential-id",
              "name": "whatsAppApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "0f690c13-e2b7-4c0d-8c06-d4b679a33f66",
          "name": "Send Critical Alert Massage",
          "type": "n8n-nodes-base.whatsApp",
          "position": [
            -180,
            140
          ],
          "webhookId": "15bd0b4f-0ebd-46ee-811d-fac093883808",
          "parameters": {
            "textBody": "=🚨 CRITICAL EQUIPMENT ALERT - {{ $json.equipmentName }}",
            "operation": "send",
            "phoneNumberId": "=+919876587688",
            "additionalFields": {},
            "recipientPhoneNumber": "+1234567890"
          },
          "credentials": {
            "whatsAppApi": {
              "id": "credential-id",
              "name": "whatsAppApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "b9eac557-be5c-4482-bc22-1871cf5622aa",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1360,
            -280
          ],
          "parameters": {
            "color": 6,
            "width": 560,
            "height": 320,
            "content": "## How It Works\n- **Daily Equipment Check (6 AM)** - Triggers the workflow.\n- **Read Equipment Data** - Fetches data from Google Sheet.\n- **Process Equipment Alerts** - Identifies maintenance needs.\n- **Task Break For 5 Sec** - Adds a delay for processing.\n- **Filter Equipment with Alerts** - Filters equipment needing attention.\n- **Send Technician Email** - Notifies technicians via email.\n- **Send Message (message: send)** - Sends WhatsApp alerts to technicians.\n- **Send Critical Alert to Supervisors** - Escalates critical issues via email and WhatsApp.\n- **Filter Overdue Equipment** - Identifies overdue maintenance.\n- **Update Equipment Status** - Updates sheet with new statuses.\n- **Log Maintenance Alerts** - Logs alerts in the sheet."
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "763d56dd-6308-4e58-a96a-088242a0e354",
      "connections": {
        "Read Equipment Data": {
          "main": [
            [
              {
                "node": "Process Equipment Alerts",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Tack Break For 5 Sec": {
          "main": [
            [
              {
                "node": "Filter Equipment with Alerts",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Filter Overdue Equipment": {
          "main": [
            [
              {
                "node": "Update Equipment Status",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Process Equipment Alerts": {
          "main": [
            [
              {
                "node": "Tack Break For 5 Sec",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Filter Critical Equipment": {
          "main": [
            [
              {
                "node": "Send Critical Alert to Supervisors",
                "type": "main",
                "index": 0
              },
              {
                "node": "Send Critical Alert Massage",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Daily Equipment Check (6 AM)": {
          "main": [
            [
              {
                "node": "Read Equipment Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Filter Equipment with Alerts": {
          "main": [
            [
              {
                "node": "Send Technician Email",
                "type": "main",
                "index": 0
              },
              {
                "node": "Filter Critical Equipment",
                "type": "main",
                "index": 0
              },
              {
                "node": "Log Maintenance Alerts",
                "type": "main",
                "index": 0
              },
              {
                "node": "Filter Overdue Equipment",
                "type": "main",
                "index": 0
              },
              {
                "node": "Send message",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 14,
      "nodeTypes": {
        "n8n-nodes-base.code": {
          "count": 1
        },
        "n8n-nodes-base.cron": {
          "count": 1
        },
        "n8n-nodes-base.wait": {
          "count": 1
        },
        "n8n-nodes-base.filter": {
          "count": 3
        },
        "n8n-nodes-base.whatsApp": {
          "count": 2
        },
        "n8n-nodes-base.emailSend": {
          "count": 2
        },
        "n8n-nodes-base.stickyNote": {
          "count": 1
        },
        "n8n-nodes-base.googleSheets": {
          "count": 3
        }
      }
    },
    "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": 11,
        "icon": "fa:envelope",
        "name": "n8n-nodes-base.emailSend",
        "codex": {
          "data": {
            "alias": [
              "SMTP",
              "email",
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/",
                  "icon": "👦",
                  "label": "Build your own virtual assistant with n8n: A step by step guide"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/sendemail/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Send Email",
          "color": "#00bb88"
        },
        "iconData": {
          "icon": "envelope",
          "type": "icon"
        },
        "displayName": "Send Email",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [
                {
                  "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/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/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and 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/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "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/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using 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/how-honest-burgers-use-automation-to-save-100k-per-year/",
                  "icon": "🍔",
                  "label": "How Honest Burgers Use Automation to Save $100k per year"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "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-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "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/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 514,
        "icon": "fa:pause-circle",
        "name": "n8n-nodes-base.wait",
        "codex": {
          "data": {
            "alias": [
              "pause",
              "sleep",
              "delay",
              "timeout"
            ],
            "resources": {
              "generic": [
                {
                  "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/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.wait/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Flow"
              ]
            }
          }
        },
        "group": "[\"organization\"]",
        "defaults": {
          "name": "Wait",
          "color": "#804050"
        },
        "iconData": {
          "icon": "pause-circle",
          "type": "icon"
        },
        "displayName": "Wait",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "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": 827,
        "icon": "file:whatsapp.svg",
        "name": "n8n-nodes-base.whatsApp",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.whatsapp/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/whatsapp/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "WhatsApp Business Cloud"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTQuODY4IDQzLjMwMyAyLjY5NC05LjgzNWExOC45NCAxOC45NCAwIDAgMS0yLjUzNS05LjQ4OUM1LjAzMiAxMy41MTQgMTMuNTQ4IDUgMjQuMDE0IDVhMTguODcgMTguODcgMCAwIDEgMTMuNDMgNS41NjZBMTguODcgMTguODcgMCAwIDEgNDMgMjMuOTk0Yy0uMDA0IDEwLjQ2NS04LjUyMiAxOC45OC0xOC45ODYgMTguOThoLS4wMDhhMTkgMTkgMCAwIDEtOS4wNzMtMi4zMTF6Ii8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTQuODY4IDQzLjgwM2EuNS41IDAgMCAxLS40ODItLjYzMWwyLjYzOS05LjYzNmExOS41IDE5LjUgMCAwIDEtMi40OTctOS41NTZDNC41MzIgMTMuMjM4IDEzLjI3MyA0LjUgMjQuMDE0IDQuNWExOS4zNyAxOS4zNyAwIDAgMSAxMy43ODQgNS43MTNBMTkuMzYgMTkuMzYgMCAwIDEgNDMuNSAyMy45OTRjLS4wMDQgMTAuNzQxLTguNzQ2IDE5LjQ4LTE5LjQ4NiAxOS40OGExOS41NCAxOS41NCAwIDAgMS05LjE0NC0yLjI3N2wtOS44NzUgMi41ODlhLjUuNSAwIDAgMS0uMTI3LjAxNyIvPjxwYXRoIGZpbGw9IiNjZmQ4ZGMiIGQ9Ik0yNC4wMTQgNWExOC44NyAxOC44NyAwIDAgMSAxMy40MyA1LjU2NkExOC44NyAxOC44NyAwIDAgMSA0MyAyMy45OTRjLS4wMDQgMTAuNDY1LTguNTIyIDE4Ljk4LTE4Ljk4NiAxOC45OGgtLjAwOGExOSAxOSAwIDAgMS05LjA3My0yLjMxMWwtMTAuMDY1IDIuNjQgMi42OTQtOS44MzVhMTguOTQgMTguOTQgMCAwIDEtMi41MzUtOS40ODlDNS4wMzIgMTMuNTE0IDEzLjU0OCA1IDI0LjAxNCA1bTAtMUMxMi45OTggNCA0LjAzMiAxMi45NjIgNC4wMjcgMjMuOTc5YTIwIDIwIDAgMCAwIDIuNDYxIDkuNjIyTDMuOTAzIDQzLjA0YS45OTguOTk4IDAgMCAwIDEuMjE5IDEuMjMxbDkuNjg3LTIuNTRhMjAgMjAgMCAwIDAgOS4xOTcgMi4yNDRjMTEuMDI0IDAgMTkuOTktOC45NjMgMTkuOTk1LTE5Ljk4QTE5Ljg2IDE5Ljg2IDAgMCAwIDM4LjE1MyA5Ljg2IDE5Ljg3IDE5Ljg3IDAgMCAwIDI0LjAxNCA0Ii8+PHBhdGggZmlsbD0iIzQwYzM1MSIgZD0iTTM1LjE3NiAxMi44MzJhMTUuNjcgMTUuNjcgMCAwIDAtMTEuMTU3LTQuNjI2Yy04LjcwNCAwLTE1Ljc4MyA3LjA3Ni0xNS43ODcgMTUuNzc0YTE1Ljc0IDE1Ljc0IDAgMCAwIDIuNDEzIDguMzk2bC4zNzYuNTk3LTEuNTk1IDUuODIxIDUuOTczLTEuNTY2LjU3Ny4zNDJhMTUuNzUgMTUuNzUgMCAwIDAgOC4wMzIgMi4xOTloLjAwNmM4LjY5OCAwIDE1Ljc3Ny03LjA3NyAxNS43OC0xNS43NzZhMTUuNjggMTUuNjggMCAwIDAtNC42MTgtMTEuMTYxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE5LjI2OCAxNi4wNDVjLS4zNTUtLjc5LS43MjktLjgwNi0xLjA2OC0uODItLjI3Ny0uMDEyLS41OTMtLjAxMS0uOTA5LS4wMTFzLS44My4xMTktMS4yNjUuNTk0LTEuNjYxIDEuNjIyLTEuNjYxIDMuOTU2IDEuNyA0LjU5IDEuOTM3IDQuOTA2IDMuMjgyIDUuMjU5IDguMTA0IDcuMTYxYzQuMDA3IDEuNTggNC44MjMgMS4yNjYgNS42OTMgMS4xODdzMi44MDctMS4xNDcgMy4yMDItMi4yNTUuMzk1LTIuMDU3LjI3Ny0yLjI1NWMtLjExOS0uMTk4LS40MzUtLjMxNi0uOTA5LS41NTRzLTIuODA3LTEuMzg1LTMuMjQyLTEuNTQzLS43NTEtLjIzNy0xLjA2OC4yMzhjLS4zMTYuNDc0LTEuMjI1IDEuNTQzLTEuNTAyIDEuODU5cy0uNTU0LjM1Ny0xLjAyOC4xMTktMi4wMDItLjczOC0zLjgxNS0yLjM1NGMtMS40MS0xLjI1Ny0yLjM2Mi0yLjgxLTIuNjM5LTMuMjg1LS4yNzctLjQ3NC0uMDMtLjczMS4yMDgtLjk2OC4yMTMtLjIxMy40NzQtLjU1NC43MTItLjgzMS4yMzctLjI3Ny4zMTYtLjQ3NS40NzQtLjc5MXMuMDc5LS41OTQtLjA0LS44MzFjLS4xMTctLjIzOC0xLjAzOS0yLjU4NC0xLjQ2MS0zLjUyMiIvPjwvc3ZnPg=="
        },
        "displayName": "WhatsApp Business Cloud",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "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"
          }
        ]
      },
      {
        "id": 844,
        "icon": "fa:filter",
        "name": "n8n-nodes-base.filter",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The Filter node can be used to filter items based on a condition. If the condition is met, the item will be passed on to the next node. If the condition is not met, the item will be omitted. Conditions can be combined together by AND(meet all conditions), or OR(meet at least one condition).",
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Filter",
          "color": "#229eff"
        },
        "iconData": {
          "icon": "filter",
          "type": "icon"
        },
        "displayName": "Filter",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 46,
        "name": "Project Management"
      },
      {
        "id": 51,
        "name": "Multimodal AI"
      }
    ],
    "image": []
  }
}