{
  "workflow": {
    "id": 10356,
    "name": "Shopify & WooCommerce inventory sync with Google Sheets alerts",
    "views": 88,
    "recentViews": 0,
    "totalViews": 88,
    "createdAt": "2025-10-30T15:44:46.078Z",
    "description": "## How It Works\nA webhook or timer triggers the workflow to automatically fetch inventory data from multiple platforms. Stock levels are compared across stores to identify discrepancies, and any inconsistencies are updated on the respective platforms in real time. All changes and updates are recorded in Google Sheets for easy tracking, and email alerts are sent to notify relevant team members of any exceptions or issues that require attention. This ensures inventory accuracy and timely response to stock mismatches.\n\n## Setup Steps\n1. Add Shopify and/or WooCommerce API credentials to enable secure data access.\n2. Connect Google Sheets for comprehensive logging of all inventory updates and Gmail for sending timely email alerts.\n3. Configure the sync frequency within the Function nodes to control how often inventory data is fetched, compared, and updated.\n\n## Prerequisites\n- Shopify/WooCommerce API keys\n- Google Sheets access\n- Gmail credentials\n- n8n instance\n- \n## Customization\n- Add ERPNext or custom APIs\n- Enable Slack notifications\n- AI discrepancy detection\n\n## Benefits\n- Real-time inventory accuracy\n- Automated cross-platform updates\n- Centralized audit logging\n",
    "workflow": {
      "id": "flk0u88HjAaG2LEf",
      "meta": {
        "instanceId": "b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"
      },
      "name": "Multi-Warehouse Inventory Sync with Google Sheets & Email Alerts",
      "tags": [],
      "nodes": [
        {
          "id": "01889a3e-2114-48d1-b95c-d15f544888bb",
          "name": "⏰ Hourly Reconciliation Trigger",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            -2080,
            0
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "hours"
                }
              ]
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "8ddc77f0-6103-4f44-a9d4-c24ea2b109bc",
          "name": "📥 Platform Webhook Receiver",
          "type": "n8n-nodes-base.webhook",
          "position": [
            -2752,
            -272
          ],
          "webhookId": "inventory-sync-webhook",
          "parameters": {
            "path": "inventory-webhook",
            "options": {},
            "httpMethod": "POST",
            "responseMode": "responseNode"
          },
          "typeVersion": 2
        },
        {
          "id": "e85773c1-3541-41aa-9fd5-3b962ca4f224",
          "name": "📝 Parse Trigger Data",
          "type": "n8n-nodes-base.set",
          "position": [
            -1888,
            192
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "triggerType",
                  "name": "triggerType",
                  "type": "string",
                  "value": "={{ $json.body ? 'webhook' : 'schedule' }}"
                },
                {
                  "id": "sku",
                  "name": "sku",
                  "type": "string",
                  "value": "={{ $json.body?.sku || 'ALL' }}"
                },
                {
                  "id": "platform",
                  "name": "platform",
                  "type": "string",
                  "value": "={{ $json.body?.platform || 'ALL' }}"
                },
                {
                  "id": "syncMode",
                  "name": "syncMode",
                  "type": "string",
                  "value": "={{ $json.body?.sku ? 'single' : 'full' }}"
                }
              ]
            }
          },
          "typeVersion": 3.3
        },
        {
          "id": "1400a211-e04c-4a41-916d-0d7857de5cb6",
          "name": "🛍️ Fetch Shopify Inventory",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -1664,
            16
          ],
          "parameters": {
            "url": "https://{{ $env.SHOPIFY_STORE }}.myshopify.com/admin/api/2024-01/products.json",
            "options": {
              "timeout": 30000
            },
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "limit",
                  "value": "250"
                },
                {
                  "name": "fields",
                  "value": "id,title,variants"
                }
              ]
            }
          },
          "typeVersion": 4.2,
          "continueOnFail": true
        },
        {
          "id": "48d97f0b-ab09-40cb-b6d1-63f0413a3f0f",
          "name": "🛒 Fetch WooCommerce Inventory",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -1648,
            192
          ],
          "parameters": {
            "url": "={{ $env.WOOCOMMERCE_URL }}/wp-json/wc/v3/products",
            "options": {
              "timeout": 30000
            },
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpBasicAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "per_page",
                  "value": "100"
                },
                {
                  "name": "status",
                  "value": "publish"
                }
              ]
            }
          },
          "typeVersion": 4.2,
          "continueOnFail": true
        },
        {
          "id": "a0c14f75-e5d6-4f93-9e00-099b90fd4ce1",
          "name": "🔀 Merge All Platform Data",
          "type": "n8n-nodes-base.merge",
          "position": [
            -1408,
            176
          ],
          "parameters": {
            "mode": "combine",
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "55b1e266-2955-4278-8c10-7aa6db851e12",
          "name": "🔍 Compare & Identify Discrepancies",
          "type": "n8n-nodes-base.code",
          "position": [
            -1184,
            176
          ],
          "parameters": {
            "jsCode": "// Inventory Data Normalization & Comparison Engine\n// Standardizes data from all platforms and identifies discrepancies\n\nconst inputData = $input.all();\n\n// Initialize storage\nconst inventoryByPlatform = {\n  shopify: [],\n  woocommerce: [],\n  magento: [],\n  erpnext: [],\n  customdb: []\n};\n\n// Parse and normalize data from each platform\nfor (const item of inputData) {\n  const json = item.json;\n  \n  // Shopify data\n  if (json.products) {\n    for (const product of json.products) {\n      for (const variant of product.variants || []) {\n        inventoryByPlatform.shopify.push({\n          sku: variant.sku || variant.id.toString(),\n          quantity: variant.inventory_quantity || 0,\n          productName: product.title,\n          variantId: variant.id,\n          platform: 'shopify',\n          lastUpdated: variant.updated_at\n        });\n      }\n    }\n  }\n  \n  // WooCommerce data\n  if (json.id && json.sku && json.stock_quantity !== undefined) {\n    inventoryByPlatform.woocommerce.push({\n      sku: json.sku,\n      quantity: parseInt(json.stock_quantity) || 0,\n      productName: json.name,\n      productId: json.id,\n      platform: 'woocommerce',\n      lastUpdated: json.date_modified\n    });\n  }\n  \n  // Magento data\n  if (json.items) {\n    for (const product of json.items) {\n      if (product.extension_attributes?.stock_item) {\n        inventoryByPlatform.magento.push({\n          sku: product.sku,\n          quantity: parseInt(product.extension_attributes.stock_item.qty) || 0,\n          productName: product.name,\n          productId: product.id,\n          platform: 'magento',\n          lastUpdated: product.updated_at\n        });\n      }\n    }\n  }\n  \n  // ERPNext data (Master source)\n  if (json.data) {\n    for (const item of json.data) {\n      inventoryByPlatform.erpnext.push({\n        sku: item.item_code,\n        quantity: parseInt(item.stock_qty) || 0,\n        productName: item.name,\n        platform: 'erpnext',\n        isMaster: true,\n        lastUpdated: item.modified\n      });\n    }\n  }\n  \n  // Custom Database data\n  if (json.sku && json.quantity !== undefined) {\n    inventoryByPlatform.customdb.push({\n      sku: json.sku,\n      quantity: parseInt(json.quantity) || 0,\n      warehouseLocation: json.warehouse_location,\n      platform: 'customdb',\n      lastUpdated: json.last_updated\n    });\n  }\n}\n\n// Consolidate all SKUs\nconst allSKUs = new Set();\nfor (const platform in inventoryByPlatform) {\n  for (const item of inventoryByPlatform[platform]) {\n    if (item.sku) allSKUs.add(item.sku);\n  }\n}\n\n// Compare inventory across platforms for each SKU\nconst discrepancies = [];\nconst consistentItems = [];\n\nfor (const sku of allSKUs) {\n  const skuData = {\n    sku: sku,\n    platforms: {}\n  };\n  \n  // Collect data from each platform\n  for (const platform in inventoryByPlatform) {\n    const platformItem = inventoryByPlatform[platform].find(item => item.sku === sku);\n    if (platformItem) {\n      skuData.platforms[platform] = {\n        quantity: platformItem.quantity,\n        lastUpdated: platformItem.lastUpdated,\n        productName: platformItem.productName,\n        isMaster: platformItem.isMaster || false,\n        productId: platformItem.productId,\n        variantId: platformItem.variantId\n      };\n    }\n  }\n  \n  // Calculate statistics\n  const quantities = Object.values(skuData.platforms).map(p => p.quantity);\n  const avgQuantity = quantities.reduce((a, b) => a + b, 0) / quantities.length;\n  const maxQuantity = Math.max(...quantities);\n  const minQuantity = Math.min(...quantities);\n  const variance = maxQuantity - minQuantity;\n  const variancePercent = avgQuantity > 0 ? (variance / avgQuantity) * 100 : 0;\n  \n  skuData.statistics = {\n    average: avgQuantity,\n    max: maxQuantity,\n    min: minQuantity,\n    variance: variance,\n    variancePercent: variancePercent.toFixed(2),\n    platformCount: Object.keys(skuData.platforms).length\n  };\n  \n  // Determine if there's a discrepancy\n  if (variance > 0 && variancePercent > 5) {\n    // Significant discrepancy found\n    skuData.hasDiscrepancy = true;\n    skuData.severity = variancePercent > 20 ? 'critical' : variancePercent > 10 ? 'warning' : 'info';\n    skuData.recommendedAction = 'ai_review';\n    \n    // Use ERPNext as source of truth if available\n    if (skuData.platforms.erpnext) {\n      skuData.sourceOfTruth = 'erpnext';\n      skuData.correctQuantity = skuData.platforms.erpnext.quantity;\n      skuData.recommendedAction = 'sync_to_erpnext';\n    } else {\n      // Use most recently updated platform\n      let mostRecent = null;\n      let mostRecentTime = null;\n      \n      for (const [platform, data] of Object.entries(skuData.platforms)) {\n        const updateTime = new Date(data.lastUpdated);\n        if (!mostRecentTime || updateTime > mostRecentTime) {\n          mostRecentTime = updateTime;\n          mostRecent = platform;\n        }\n      }\n      \n      skuData.sourceOfTruth = mostRecent;\n      skuData.correctQuantity = skuData.platforms[mostRecent].quantity;\n      skuData.recommendedAction = `sync_to_${mostRecent}`;\n    }\n    \n    discrepancies.push(skuData);\n  } else {\n    // Inventory is consistent\n    skuData.hasDiscrepancy = false;\n    skuData.severity = 'none';\n    consistentItems.push(skuData);\n  }\n}\n\n// Sort discrepancies by severity\ndiscrepancies.sort((a, b) => {\n  const severityOrder = { critical: 0, warning: 1, info: 2 };\n  return severityOrder[a.severity] - severityOrder[b.severity];\n});\n\n// Return comprehensive analysis\nreturn [{\n  json: {\n    summary: {\n      totalSKUs: allSKUs.size,\n      discrepanciesFound: discrepancies.length,\n      consistentItems: consistentItems.length,\n      criticalDiscrepancies: discrepancies.filter(d => d.severity === 'critical').length,\n      warningDiscrepancies: discrepancies.filter(d => d.severity === 'warning').length,\n      platformsConnected: Object.keys(inventoryByPlatform).filter(p => inventoryByPlatform[p].length > 0).length,\n      timestamp: new Date().toISOString()\n    },\n    discrepancies: discrepancies,\n    consistentItems: consistentItems.slice(0, 10), // Sample of consistent items\n    platformData: inventoryByPlatform\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "148d6a37-1d40-453e-a682-f2afcb90931c",
          "name": "❓ Has Discrepancies?",
          "type": "n8n-nodes-base.if",
          "position": [
            -960,
            176
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "has-discrepancies",
                  "operator": {
                    "type": "number",
                    "operation": "gt"
                  },
                  "leftValue": "={{ $json.summary.discrepanciesFound }}",
                  "rightValue": 0
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "ab9dd3c3-8a6a-4fbf-b715-31852d9d63a0",
          "name": "📋 Split Discrepancies for AI Review",
          "type": "n8n-nodes-base.code",
          "position": [
            -704,
            80
          ],
          "parameters": {
            "jsCode": "// Split discrepancies into individual items for AI analysis\nconst data = $input.first().json;\nconst discrepancies = data.discrepancies || [];\n\n// Return each discrepancy as separate item for AI processing\nreturn discrepancies.map(item => ({\n  json: {\n    sku: item.sku,\n    platforms: item.platforms,\n    statistics: item.statistics,\n    severity: item.severity,\n    sourceOfTruth: item.sourceOfTruth,\n    correctQuantity: item.correctQuantity,\n    recommendedAction: item.recommendedAction,\n    originalData: item\n  }\n}));"
          },
          "typeVersion": 2
        },
        {
          "id": "b9ca15c4-4ad0-4ca5-8aaa-c63805a2b3d0",
          "name": "📝 Prepare Update Actions",
          "type": "n8n-nodes-base.code",
          "position": [
            -2624,
            -400
          ],
          "parameters": {
            "jsCode": "// Parse AI response and prepare update actions\nconst item = $input.first().json;\n\nlet aiDecision;\ntry {\n  // Extract JSON from AI response\n  const responseText = item.response || item.text || JSON.stringify(item);\n  const jsonMatch = responseText.match(/\\{[\\s\\S]*\\}/);\n  if (jsonMatch) {\n    aiDecision = JSON.parse(jsonMatch[0]);\n  } else {\n    throw new Error('No JSON found in AI response');\n  }\n} catch (error) {\n  console.error('Failed to parse AI response:', error);\n  // Fallback to original recommendation\n  aiDecision = {\n    decision: 'approve',\n    sourceOfTruth: item.sourceOfTruth,\n    correctQuantity: item.correctQuantity,\n    reasoning: 'Using original recommendation due to AI parse error',\n    confidence: 'low',\n    requiresManualReview: true\n  };\n}\n\n// Prepare update instructions for each platform\nconst updates = [];\n\nif (aiDecision.decision === 'approve' && !aiDecision.requiresManualReview) {\n  for (const [platform, data] of Object.entries(item.platforms)) {\n    if (platform !== aiDecision.sourceOfTruth && data.quantity !== aiDecision.correctQuantity) {\n      updates.push({\n        platform: platform,\n        sku: item.sku,\n        currentQuantity: data.quantity,\n        newQuantity: aiDecision.correctQuantity,\n        productId: data.productId,\n        variantId: data.variantId,\n        action: 'update',\n        reason: aiDecision.reasoning\n      });\n    }\n  }\n}\n\nreturn [{\n  json: {\n    sku: item.sku,\n    aiDecision: aiDecision,\n    updates: updates,\n    originalData: item,\n    timestamp: new Date().toISOString(),\n    requiresManualReview: aiDecision.requiresManualReview || aiDecision.decision !== 'approve'\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "0870838d-5ca8-4692-bd7b-784bdb5a0b68",
          "name": "🚨 Needs Manual Review?",
          "type": "n8n-nodes-base.if",
          "position": [
            -2464,
            -400
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": false,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "needs-manual-review",
                  "operator": {
                    "type": "boolean",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.requiresManualReview }}",
                  "rightValue": true
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "f6bf18e8-b3e4-48ab-9fdc-b4feeb8295e9",
          "name": "🔀 Split Updates by Platform",
          "type": "n8n-nodes-base.code",
          "position": [
            -2304,
            -224
          ],
          "parameters": {
            "jsCode": "// Split updates by platform for parallel execution\nconst item = $input.first().json;\nconst updates = item.updates || [];\n\nif (updates.length === 0) {\n  return [{ json: { message: 'No updates needed', sku: item.sku } }];\n}\n\nreturn updates.map(update => ({\n  json: {\n    ...update,\n    sku: item.sku,\n    aiDecision: item.aiDecision\n  }\n}));"
          },
          "typeVersion": 2
        },
        {
          "id": "7345be2f-446c-44a8-a51c-edfc70aab70d",
          "name": "🔀 Route Updates to Platforms",
          "type": "n8n-nodes-base.switch",
          "position": [
            -2080,
            -224
          ],
          "parameters": {
            "rules": {
              "values": [
                {
                  "outputKey": "shopify",
                  "conditions": {
                    "options": {
                      "version": 1,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "5b747c86-4713-42ff-9ec6-a5e64dd1ef8a",
                        "operator": {
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.platform }}",
                        "rightValue": "shopify"
                      }
                    ]
                  },
                  "renameOutput": true
                },
                {
                  "outputKey": "woocommerce",
                  "conditions": {
                    "options": {
                      "version": 1,
                      "leftValue": "",
                      "caseSensitive": true,
                      "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                      {
                        "id": "2d5fbb50-7488-4e14-83a6-9abce83cfc78",
                        "operator": {
                          "type": "string",
                          "operation": "equals"
                        },
                        "leftValue": "={{ $json.platform }}",
                        "rightValue": "woocommerce"
                      }
                    ]
                  },
                  "renameOutput": true
                }
              ]
            },
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "2dbb54af-3007-40ec-88ce-c61c9efb7662",
          "name": "🛍️ Update Shopify",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -1856,
            -320
          ],
          "parameters": {
            "url": "=https://{{ $env.SHOPIFY_STORE }}.myshopify.com/admin/api/2024-01/inventory_levels/set.json",
            "method": "PUT",
            "options": {},
            "sendBody": true,
            "authentication": "genericCredentialType",
            "bodyParameters": {
              "parameters": [
                {
                  "name": "location_id",
                  "value": "={{ $env.SHOPIFY_LOCATION_ID }}"
                },
                {
                  "name": "inventory_item_id",
                  "value": "={{ $json.variantId }}"
                },
                {
                  "name": "available",
                  "value": "={{ $json.newQuantity }}"
                }
              ]
            },
            "genericAuthType": "httpHeaderAuth"
          },
          "credentials": {
            "httpHeaderAuth": {
              "id": "credential-id",
              "name": "httpHeaderAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "925d0b5f-3040-4118-b2ab-90d19c9747c0",
          "name": "🛒 Update WooCommerce",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -1856,
            -144
          ],
          "parameters": {
            "url": "={{ $env.WOOCOMMERCE_URL }}/wp-json/wc/v3/products/{{ $json.productId }}",
            "method": "PUT",
            "options": {},
            "jsonBody": "={\n  \"stock_quantity\": {{ $json.newQuantity }}\n}",
            "sendBody": true,
            "specifyBody": "json",
            "authentication": "genericCredentialType",
            "genericAuthType": "httpBasicAuth"
          },
          "typeVersion": 4.2
        },
        {
          "id": "af4349e9-c55d-4136-ac7c-c8bea746c26c",
          "name": "🔀 Merge Update Results",
          "type": "n8n-nodes-base.merge",
          "position": [
            -1632,
            -224
          ],
          "parameters": {
            "mode": "combine",
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "4147cc43-a94d-4645-a6c2-aa4b67e23b2d",
          "name": "📊 Log to Google Sheets Audit",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            -1376,
            -352
          ],
          "parameters": {
            "columns": {
              "value": {
                "sku": "={{ $json.sku }}",
                "action": "={{ $json.action }}",
                "reason": "={{ $json.reason }}",
                "platform": "={{ $json.platform }}",
                "timestamp": "={{ $now.toISO() }}",
                "confidence": "={{ $json.aiDecision?.confidence }}",
                "newQuantity": "={{ $json.newQuantity }}",
                "oldQuantity": "={{ $json.currentQuantity }}",
                "manualReview": "={{ $json.requiresManualReview }}"
              },
              "mappingMode": "defineBelow"
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "name",
              "value": "Audit Log"
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "={{ $env.GOOGLE_SHEETS_AUDIT_ID }}"
            }
          },
          "typeVersion": 4.5
        },
        {
          "id": "6861a3f1-bb62-4cc5-ab13-8193aa4465d6",
          "name": "📧 Send Notification?",
          "type": "n8n-nodes-base.if",
          "position": [
            -1216,
            -352
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": false,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "is-critical",
                  "operator": {
                    "type": "boolean",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.aiDecision?.requiresManualReview || $json.severity === 'critical' }}",
                  "rightValue": true
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "38882834-1ccc-496a-b5e2-a84d79b91fba",
          "name": "✉️ Send Alert Email",
          "type": "n8n-nodes-base.gmail",
          "position": [
            -1008,
            -368
          ],
          "webhookId": "80d4e67a-5013-44ee-b974-f010e230221a",
          "parameters": {
            "sendTo": "={{ $env.NOTIFICATION_EMAIL }}",
            "message": "=<html>\n<body style=\"font-family: Arial, sans-serif;\">\n  <h2>Inventory Synchronization Alert</h2>\n  \n  <div style=\"background: #fff3cd; padding: 15px; border-radius: 5px; margin: 20px 0;\">\n    <h3>⚠️ Manual Review Required</h3>\n    <p><strong>SKU:</strong> {{ $json.sku }}</p>\n    <p><strong>Severity:</strong> {{ $json.severity }}</p>\n  </div>\n  \n  <h3>Current Inventory Status:</h3>\n  <table style=\"border-collapse: collapse; width: 100%;\">\n    <tr style=\"background: #f8f9fa;\">\n      <th style=\"border: 1px solid #ddd; padding: 8px;\">Platform</th>\n      <th style=\"border: 1px solid #ddd; padding: 8px;\">Quantity</th>\n      <th style=\"border: 1px solid #ddd; padding: 8px;\">Last Updated</th>\n    </tr>\n    {{ Object.entries($json.platforms).map(([platform, data]) => `\n    <tr>\n      <td style=\"border: 1px solid #ddd; padding: 8px;\">${platform}</td>\n      <td style=\"border: 1px solid #ddd; padding: 8px;\">${data.quantity}</td>\n      <td style=\"border: 1px solid #ddd; padding: 8px;\">${data.lastUpdated}</td>\n    </tr>\n    `).join('') }}\n  </table>\n  \n  <h3>AI Analysis:</h3>\n  <p><strong>Recommended Action:</strong> {{ $json.aiDecision?.reasoning }}</p>\n  <p><strong>Confidence:</strong> {{ $json.aiDecision?.confidence }}</p>\n  \n  <p style=\"margin-top: 30px; color: #6c757d; font-size: 12px;\">\n    Timestamp: {{ $now.toISO() }}<br>\n    This is an automated message from the Inventory Sync System.\n  </p>\n</body>\n</html>",
            "options": {},
            "subject": "=🚨 Inventory Sync Alert: {{ $json.sku }}"
          },
          "typeVersion": 2.1
        },
        {
          "id": "3a7c80d3-b584-4f0d-9e56-133835759f2b",
          "name": "📤 Return Response",
          "type": "n8n-nodes-base.respondToWebhook",
          "position": [
            -720,
            -192
          ],
          "parameters": {
            "options": {},
            "respondWith": "json",
            "responseBody": "={{ {\n  \"success\": true,\n  \"summary\": $('🔍 Compare & Identify Discrepancies').item.json.summary,\n  \"discrepanciesProcessed\": $('📝 Prepare Update Actions').all().length,\n  \"updatesApplied\": $('🔀 Merge Update Results').all().length,\n  \"timestamp\": $now.toISO()\n} }}"
          },
          "typeVersion": 1.1
        },
        {
          "id": "99763021-7179-4d4a-b37b-35d5cf2d03a4",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -2784,
            -784
          ],
          "parameters": {
            "width": 448,
            "height": 256,
            "content": "## How It Works\nA webhook or timer triggers the workflow to automatically fetch inventory data from multiple platforms. Stock levels are compared across stores to identify discrepancies, and any inconsistencies are updated on the respective platforms in real time. All changes and updates are recorded in Google Sheets for easy tracking, and email alerts are sent to notify relevant team members of any exceptions or issues that require attention. This ensures inventory accuracy and timely response to stock mismatches.\n\n"
          },
          "typeVersion": 1
        },
        {
          "id": "36d24781-1b5a-4d91-9001-0682255e8a35",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1824,
            -784
          ],
          "parameters": {
            "color": 4,
            "width": 400,
            "height": 272,
            "content": "## Setup Instructions\n1. Add Shopify/WooCommerce API credentials.\n2. Link Google Sheets and Gmail.\n3. Adjust sync frequency in Function nodes.\n\n## Prerequisites\n- Shopify/WooCommerce API keys\n- Google Sheets access\n- Gmail credentials\n- n8n instance\n\n"
          },
          "typeVersion": 1
        },
        {
          "id": "3f2a21ab-a4b3-4728-9e2b-722c86e29d48",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1392,
            -784
          ],
          "parameters": {
            "color": 3,
            "width": 304,
            "height": 256,
            "content": "## Customization\n- Add ERPNext or custom APIs\n- Enable Slack notifications\n- AI discrepancy detection\n\n## Benefits\n- Real-time inventory accuracy\n- Automated cross-platform updates\n"
          },
          "typeVersion": 1
        },
        {
          "id": "f647ebf9-8bf3-46ea-adb6-defc4c7ebca8",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -2304,
            -784
          ],
          "parameters": {
            "width": 448,
            "height": 208,
            "content": "## Setup Steps\n1. Add Shopify and/or WooCommerce API credentials to enable secure data access.\n2. Connect Google Sheets for comprehensive logging of all inventory updates and Gmail for sending timely email alerts.\n3. Configure the sync frequency within the Function nodes to control how often inventory data is fetched, compared, and updated."
          },
          "typeVersion": 1
        },
        {
          "id": "d8b80508-910b-4a02-ba69-25f0e97f5047",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -2784,
            -512
          ],
          "parameters": {
            "color": 7,
            "width": 608,
            "height": 528,
            "content": "## Data Collection\nFetches current inventory from Shopify and WooCommerce APIs, then normalizes product data into a consistent format for comparison."
          },
          "typeVersion": 1
        },
        {
          "id": "0d490778-6491-4c03-801f-b5e754c14658",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1424,
            -96
          ],
          "parameters": {
            "color": 7,
            "width": 640,
            "height": 448,
            "content": "## Discrepancy Detection\nCompares stock levels by SKU across platforms. Flags mismatches and determines which platform has the authoritative count.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "f2b64093-ddd3-4618-ba92-3083d48b2dbc",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -2160,
            -512
          ],
          "parameters": {
            "color": 7,
            "width": 720,
            "height": 896,
            "content": "## Platform Updates\nPushes corrected inventory values back to Shopify and WooCommerce to maintain sync across both stores."
          },
          "typeVersion": 1
        },
        {
          "id": "2a8cb55f-7e37-450a-a7a7-ee071d95f0cb",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -768,
            -512
          ],
          "parameters": {
            "color": 7,
            "width": 288,
            "height": 864,
            "content": "## Logging & Alerts\nRecords all sync operations to Google Sheets with timestamps. Sends email notifications for discrepancies or sync failures.\n\n"
          },
          "typeVersion": 1
        },
        {
          "id": "e9a33c02-317b-4922-970f-787d277b9a48",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1424,
            -512
          ],
          "parameters": {
            "color": 7,
            "width": 640,
            "height": 384,
            "content": "## Error Handling\nCatches API failures, connection issues, or data format problems. Ensures partial failures don't break the entire sync process."
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "a8bfad8f-43f0-4527-bf3e-33d9759dd9bc",
      "connections": {
        "❓ Has Discrepancies?": {
          "main": [
            [
              {
                "node": "📋 Split Discrepancies for AI Review",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "📤 Return Response",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🛍️ Update Shopify": {
          "main": [
            [
              {
                "node": "🔀 Merge Update Results",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "✉️ Send Alert Email": {
          "main": [
            [
              {
                "node": "📤 Return Response",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "📝 Parse Trigger Data": {
          "main": [
            [
              {
                "node": "🛍️ Fetch Shopify Inventory",
                "type": "main",
                "index": 0
              },
              {
                "node": "🛒 Fetch WooCommerce Inventory",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "📧 Send Notification?": {
          "main": [
            [
              {
                "node": "✉️ Send Alert Email",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "📤 Return Response",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🛒 Update WooCommerce": {
          "main": [
            [
              {
                "node": "🔀 Merge Update Results",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "🔀 Merge Update Results": {
          "main": [
            [
              {
                "node": "📊 Log to Google Sheets Audit",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🚨 Needs Manual Review?": {
          "main": [
            [
              {
                "node": "📊 Log to Google Sheets Audit",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "🔀 Split Updates by Platform",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "📝 Prepare Update Actions": {
          "main": [
            [
              {
                "node": "🚨 Needs Manual Review?",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🔀 Merge All Platform Data": {
          "main": [
            [
              {
                "node": "🔍 Compare & Identify Discrepancies",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "📥 Platform Webhook Receiver": {
          "main": [
            [
              {
                "node": "📝 Parse Trigger Data",
                "type": "main",
                "index": 0
              },
              {
                "node": "📝 Prepare Update Actions",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🔀 Split Updates by Platform": {
          "main": [
            [
              {
                "node": "🔀 Route Updates to Platforms",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "📊 Log to Google Sheets Audit": {
          "main": [
            [
              {
                "node": "📧 Send Notification?",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🔀 Route Updates to Platforms": {
          "main": [
            [
              {
                "node": "🛍️ Update Shopify",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "🛒 Update WooCommerce",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🛍️ Fetch Shopify Inventory": {
          "main": [
            [
              {
                "node": "🔀 Merge All Platform Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🛒 Fetch WooCommerce Inventory": {
          "main": [
            [
              {
                "node": "🔀 Merge All Platform Data",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "⏰ Hourly Reconciliation Trigger": {
          "main": [
            [
              {
                "node": "📝 Parse Trigger Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🔍 Compare & Identify Discrepancies": {
          "main": [
            [
              {
                "node": "❓ Has Discrepancies?",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 29,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 3
        },
        "n8n-nodes-base.set": {
          "count": 1
        },
        "n8n-nodes-base.code": {
          "count": 4
        },
        "n8n-nodes-base.gmail": {
          "count": 1
        },
        "n8n-nodes-base.merge": {
          "count": 2
        },
        "n8n-nodes-base.switch": {
          "count": 1
        },
        "n8n-nodes-base.webhook": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 9
        },
        "n8n-nodes-base.httpRequest": {
          "count": 4
        },
        "n8n-nodes-base.googleSheets": {
          "count": 1
        },
        "n8n-nodes-base.scheduleTrigger": {
          "count": 1
        },
        "n8n-nodes-base.respondToWebhook": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Cheng Siong Chin",
      "username": "cschin",
      "bio": "Dr. Cheng Siong CHIN is an n8n workflow creator specializing in AI-powered automation, agent orchestration, and intelligent system integrations. He designs and builds end-to-end workflows that combine LLMs, APIs, and data pipelines to streamline complex processes and deliver production-ready automation solutions. Contact me to discuss custom AI workflows and agent architectures.\n",
      "verified": true,
      "links": [
        "https://gravatar.com/mysticluminary9fa255f7f5"
      ],
      "avatar": "https://gravatar.com/avatar/54544f98e839bb9dd9a764ad1e6823eeddb6db5138d201e42f291a7b0a73303f?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "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": 19,
        "icon": "file:httprequest.svg",
        "name": "n8n-nodes-base.httpRequest",
        "codex": {
          "data": {
            "alias": [
              "API",
              "Request",
              "URL",
              "Build",
              "cURL"
            ],
            "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/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-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "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/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "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/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/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "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/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/",
                  "icon": "🧰",
                  "label": "How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "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/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/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/automations-for-activists/",
                  "icon": "✨",
                  "label": "How Common Knowledge use workflow automation for activism"
                },
                {
                  "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"
                },
                {
                  "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.httprequest/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "HTTP Request",
          "color": "#0004F5"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "HTTP Request",
        "typeVersion": 4,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "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": 24,
        "icon": "file:merge.svg",
        "name": "n8n-nodes-base.merge",
        "codex": {
          "data": {
            "alias": [
              "Join",
              "Concatenate",
              "Wait"
            ],
            "resources": {
              "generic": [
                {
                  "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/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "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/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"
                },
                {
                  "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/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.merge/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Merge"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Merge",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 38,
        "icon": "fa:pen",
        "name": "n8n-nodes-base.set",
        "codex": {
          "data": {
            "alias": [
              "Set",
              "JS",
              "JSON",
              "Filter",
              "Transform",
              "Map"
            ],
            "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/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/",
                  "icon": "📡",
                  "label": "Database Monitoring and Alerting with n8n"
                },
                {
                  "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/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/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/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "url": "https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "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/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "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/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/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/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "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.set/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Edit Fields"
        },
        "iconData": {
          "icon": "pen",
          "type": "icon"
        },
        "displayName": "Edit Fields (Set)",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 47,
        "icon": "file:webhook.svg",
        "name": "n8n-nodes-base.webhook",
        "codex": {
          "data": {
            "alias": [
              "HTTP",
              "API",
              "Build",
              "WH"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "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/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "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/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/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/",
                  "icon": "👏",
                  "label": "How to automatically give kudos to contributors with GitHub, Slack, and n8n"
                },
                {
                  "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/creating-custom-incident-response-workflows-with-n8n/",
                  "label": "How to automate every step of an incident response workflow"
                },
                {
                  "url": "https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "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.webhook/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Webhook"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"
        },
        "displayName": "Webhook",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 112,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.switch",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "If",
              "Path",
              "Filter",
              "Condition",
              "Logic",
              "Branch",
              "Case"
            ],
            "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/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/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"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Switch",
          "color": "#506000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "Switch",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 356,
        "icon": "file:gmail.svg",
        "name": "n8n-nodes-base.gmail",
        "codex": {
          "data": {
            "alias": [
              "email",
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "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/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "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-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/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/using-automation-to-boost-productivity-in-the-workplace/",
                  "icon": "💪",
                  "label": "Using Automation to Boost Productivity in the Workplace"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Gmail"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"
        },
        "displayName": "Gmail",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 535,
        "icon": "file:webhook.svg",
        "name": "n8n-nodes-base.respondToWebhook",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"
                }
              ]
            },
            "categories": [
              "Core Nodes",
              "Utility"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Respond to Webhook"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"
        },
        "displayName": "Respond to Webhook",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 7,
            "name": "Utility"
          },
          {
            "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": 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": 839,
        "icon": "fa:clock",
        "name": "n8n-nodes-base.scheduleTrigger",
        "codex": {
          "data": {
            "alias": [
              "Time",
              "Scheduler",
              "Polling",
              "Cron",
              "Interval"
            ],
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\",\"schedule\"]",
        "defaults": {
          "name": "Schedule Trigger",
          "color": "#31C49F"
        },
        "iconData": {
          "icon": "clock",
          "type": "icon"
        },
        "displayName": "Schedule Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 39,
        "name": "CRM"
      }
    ],
    "image": []
  }
}