{"workflow":{"id":12791,"name":"Forecast demand, optimize pricing, and engage customers with GPT‑4.1, Postgres, email, and Slack","views":80,"recentViews":0,"totalViews":80,"createdAt":"2026-01-18T15:16:43.226Z","description":"## How It Works\nThis workflow automates inventory management and customer engagement for e-commerce businesses and retail operations managing multiple product categories. It solves the critical challenge of maintaining optimal stock levels while personalizing customer communications across order fulfillment, product recommendations, and support interactions. The system processes webhook-triggered data across four parallel streams (orders, reviews, inventory, social media), applies AI-powered analysis for sentiment extraction, pricing optimization, promotion targeting, and demand forecasting, then distributes personalized communications through email campaigns and Slack/Microsoft Teams notifications. This eliminates manual inventory tracking, reduces stockouts, and delivers data-driven customer engagement.\n\n## Setup Steps\n1. Configure webhook URLs for orders, reviews, inventory systems, and social media platforms\n2. Add AI model API credentials (OpenAI/Anthropic) for sentiment, pricing\n3. Connect CRM database for customer profile management and segmentation\n4. Set up email service (Gmail/SendGrid) with campaign templates for personalized communications\n5. Integrate Slack workspace or Microsoft Teams channels for internal inventory alerts\n\n## Prerequisites\nActive e-commerce platform with webhook support, AI service API keys\n## Use Cases\nMulti-channel retailers optimizing stock across locations, subscription box services  \n## Customization\nAdjust AI prompts for industry-specific sentiment rules, modify inventory thresholds for restocking alerts\n## Benefits\nReduces inventory management overhead by 70%, prevents stockouts through predictive forecasting","workflow":{"id":"XJkO31tm0GLmkHN1","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"E-commerce Intelligence & Automated Customer Engagement Platform","tags":[],"nodes":[{"id":"7fdc5d93-218c-4ad3-863e-9101ff48bc5e","name":"Webhook - Ingest Data","type":"n8n-nodes-base.webhook","position":[-1824,1132],"webhookId":"6814ef31-f883-4c79-8b7d-219d40237141","parameters":{"path":"ecommerce-data","options":{},"httpMethod":"POST","responseData":"firstEntryBinary","responseMode":"lastNode"},"typeVersion":2.1},{"id":"9113fb5a-bacd-44f5-9211-cc61b6583b13","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[-1600,1132],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"lowStockThreshold","type":"number","value":10},{"id":"id-2","name":"negativeSentimentThreshold","type":"number","value":-0.5},{"id":"id-3","name":"highDemandThreshold","type":"number","value":100},{"id":"id-4","name":"apiRateLimit","type":"number","value":100},{"id":"id-5","name":"batchSize","type":"number","value":50},{"id":"id-6","name":"retryAttempts","type":"number","value":3},{"id":"id-7","name":"retryDelay","type":"number","value":5000}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"3258f3f5-55d1-40a3-aa93-669e605d3038","name":"Route by Data Type","type":"n8n-nodes-base.switch","position":[-1376,1100],"parameters":{"rules":{"values":[{"outputKey":"orders","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.dataType }}","rightValue":"order"}]},"renameOutput":true},{"outputKey":"reviews","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.dataType }}","rightValue":"review"}]},"renameOutput":true},{"outputKey":"inventory","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.dataType }}","rightValue":"inventory"}]},"renameOutput":true},{"outputKey":"social","conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.dataType }}","rightValue":"social_media"}]},"renameOutput":true}]},"options":{}},"typeVersion":3.4},{"id":"85d21012-c743-416b-9a35-5fa9a2705e3b","name":"Normalize Orders","type":"n8n-nodes-base.set","position":[-1152,384],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"orderId","type":"string","value":"={{ $json.id || $json.order_id }}"},{"id":"id-2","name":"customerId","type":"string","value":"={{ $json.customer_id || $json.customerId }}"},{"id":"id-3","name":"orderDate","type":"string","value":"={{ $json.created_at || $json.orderDate || $now }}"},{"id":"id-4","name":"totalAmount","type":"number","value":"={{ $json.total || $json.amount || 0 }}"},{"id":"id-5","name":"status","type":"string","value":"={{ $json.status || 'pending' }}"},{"id":"id-6","name":"products","type":"array","value":"={{ $json.items || $json.products || [] }}"},{"id":"id-7","name":"dataType","type":"string","value":"order"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"be411153-3f10-455b-a05e-9d7ef23124f4","name":"Normalize Reviews","type":"n8n-nodes-base.set","position":[-1152,984],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"reviewId","type":"string","value":"={{ $json.id || $json.review_id }}"},{"id":"id-2","name":"productId","type":"string","value":"={{ $json.product_id || $json.productId }}"},{"id":"id-3","name":"customerId","type":"string","value":"={{ $json.customer_id || $json.customerId }}"},{"id":"id-4","name":"rating","type":"number","value":"={{ $json.rating || $json.stars || 0 }}"},{"id":"id-5","name":"reviewText","type":"string","value":"={{ $json.text || $json.comment || $json.review || '' }}"},{"id":"id-6","name":"reviewDate","type":"string","value":"={{ $json.created_at || $json.date || $now }}"},{"id":"id-7","name":"dataType","type":"string","value":"review"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"74c31f34-bec6-43c2-b76a-86d250319229","name":"Normalize Inventory","type":"n8n-nodes-base.set","position":[-1152,1280],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"productId","type":"string","value":"={{ $json.id || $json.product_id || $json.sku }}"},{"id":"id-2","name":"productName","type":"string","value":"={{ $json.name || $json.product_name || '' }}"},{"id":"id-3","name":"currentStock","type":"number","value":"={{ $json.stock || $json.quantity || 0 }}"},{"id":"id-4","name":"reorderPoint","type":"number","value":"={{ $json.reorder_point || $json.minStock || 20 }}"},{"id":"id-5","name":"lastUpdated","type":"string","value":"={{ $json.updated_at || $now }}"},{"id":"id-6","name":"warehouseLocation","type":"string","value":"={{ $json.location || $json.warehouse || 'default' }}"},{"id":"id-7","name":"dataType","type":"string","value":"inventory"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"0e2ca03a-fbd9-479f-b92f-76e7f280f7e9","name":"Normalize Social Media","type":"n8n-nodes-base.set","position":[-1152,1472],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"postId","type":"string","value":"={{ $json.id || $json.post_id }}"},{"id":"id-2","name":"platform","type":"string","value":"={{ $json.platform || $json.source || 'unknown' }}"},{"id":"id-3","name":"content","type":"string","value":"={{ $json.text || $json.message || $json.content || '' }}"},{"id":"id-4","name":"author","type":"string","value":"={{ $json.author || $json.username || $json.user || '' }}"},{"id":"id-5","name":"timestamp","type":"string","value":"={{ $json.created_at || $json.timestamp || $now }}"},{"id":"id-6","name":"engagement","type":"number","value":"={{ $json.likes + $json.shares + $json.comments || 0 }}"},{"id":"id-7","name":"dataType","type":"string","value":"social_media"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"93eb893b-6903-43a3-8002-be19d240a591","name":"Validate Orders","type":"n8n-nodes-base.filter","position":[-928,384],"parameters":{"options":{},"conditions":{"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"string","operation":"notEmpty"},"leftValue":"={{ $json.orderId }}","rightValue":""},{"id":"id-2","operator":{"type":"string","operation":"notEmpty"},"leftValue":"={{ $json.customerId }}","rightValue":""},{"id":"id-3","operator":{"type":"number","operation":"gt"},"leftValue":"={{ $json.totalAmount }}","rightValue":0}]}},"typeVersion":2.3},{"id":"d3394dfa-400a-47aa-9152-708bf770b8fd","name":"Validate Reviews","type":"n8n-nodes-base.filter","position":[-928,984],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"string","operation":"notEmpty"},"leftValue":"={{ $json.reviewId }}","rightValue":""},{"id":"id-2","operator":{"type":"string","operation":"notEmpty"},"leftValue":"={{ $json.productId }}","rightValue":""},{"id":"id-3","operator":{"type":"string","operation":"notEmpty"},"leftValue":"={{ $json.reviewText }}","rightValue":""}]}},"typeVersion":2.3},{"id":"264fbc46-7020-43c9-88a5-5e28c8c75a8b","name":"Validate Inventory","type":"n8n-nodes-base.filter","position":[-928,1280],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"condition-1","operator":{"type":"string","operation":"notEmpty"},"leftValue":"={{ $json.productId }}","rightValue":""},{"id":"condition-2","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.currentStock }}","rightValue":0}]}},"typeVersion":2.3},{"id":"3d263e0d-bd10-4996-a7aa-c1dc7abc9394","name":"Validate Social Media","type":"n8n-nodes-base.filter","position":[-928,1472],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"string","operation":"notEmpty"},"leftValue":"={{ $json.postId }}","rightValue":""},{"id":"id-2","operator":{"type":"string","operation":"notEmpty"},"leftValue":"={{ $json.content }}","rightValue":""}]}},"typeVersion":2.3},{"id":"05d33403-da1f-4c47-9ff5-b79960a7e37d","name":"AI Agent - Sentiment Analysis","type":"@n8n/n8n-nodes-langchain.agent","position":[-704,880],"parameters":{"text":"=Review: {{ $json.reviewText }}\nRating: {{ $json.rating }}/5","options":{"systemMessage":"You are a sentiment analysis expert for e-commerce product reviews.\n\nYour task is to:\n1. Analyze the sentiment of customer reviews\n2. Classify sentiment as positive, neutral, or negative\n3. Extract key themes and topics mentioned\n4. Identify specific product features discussed\n5. Assess urgency of any issues raised\n\nProvide structured output with sentiment score (-1 to 1), classification, key themes, and urgency level."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"61cd1314-9b39-4506-80eb-00366c9b1f92","name":"AI Agent - Demand Forecasting","type":"@n8n/n8n-nodes-langchain.agent","position":[-704,128],"parameters":{"text":"=Order Data: {{ JSON.stringify($json) }}","options":{"systemMessage":"You are a demand forecasting specialist for e-commerce operations.\n\nYour task is to:\n1. Analyze order patterns and trends\n2. Predict future demand for products\n3. Identify seasonal patterns and anomalies\n4. Calculate recommended stock levels\n5. Flag products with unusual demand spikes or drops\n\nProvide structured output with demand forecast, confidence level, recommended actions, and risk factors."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"22aa936d-eb33-4b5c-b6b6-15aeadde8583","name":"AI Agent - Product Recommendations","type":"@n8n/n8n-nodes-langchain.agent","position":[-704,480],"parameters":{"text":"=Customer Order: {{ JSON.stringify($json) }}","options":{"systemMessage":"You are a personalized product recommendation engine for e-commerce.\n\nYour task is to:\n1. Analyze customer purchase history and preferences\n2. Generate personalized product recommendations\n3. Consider product compatibility and complementary items\n4. Factor in current promotions and inventory availability\n5. Rank recommendations by relevance and likelihood of purchase\n\nProvide structured output with top 5 product recommendations, reasoning, expected conversion probability, and upsell opportunities."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"d69ab9bc-6cc0-46d1-aca4-b9bac2e97f59","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-696,304],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"875ab010-179c-43b9-9f27-d20e3fd11e38","name":"Structured Output - Sentiment","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-632,1104],"parameters":{"jsonSchemaExample":"{\n\t\"sentimentScore\": 0.85,\n\t\"classification\": \"positive\",\n\t\"keyThemes\": [\"product quality\", \"customer service\", \"delivery speed\"],\n\t\"urgency\": \"low\",\n\t\"actionRequired\": false\n}"},"typeVersion":1.3},{"id":"ab3c9a3e-856d-46ee-8d07-0498699d6449","name":"Structured Output - Forecast","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-568,304],"parameters":{"jsonSchemaExample":"{\n\t\"forecastedDemand\": 1500,\n\t\"confidenceLevel\": 0.85,\n\t\"recommendedStockLevel\": 2000,\n\t\"trendDirection\": \"increasing\",\n\t\"riskFactors\": [\"seasonal variation\", \"supply chain delays\"]\n}"},"typeVersion":1.3},{"id":"cb59cf2f-5bb8-4135-892d-9c50a6e65aca","name":"Structured Output - Recommendations","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-632,704],"parameters":{"schemaType":"manual","inputSchema":"{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"recommendations\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"productId\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"productName\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"score\": {\n\t\t\t\t\t\t\"type\": \"number\"\n\t\t\t\t\t},\n\t\t\t\t\t\"reasoning\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"conversionProbability\": {\n\t\t\t\"type\": \"number\"\n\t\t},\n\t\t\"upsellOpportunities\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t}\n}"},"typeVersion":1.3},{"id":"92ea6225-686b-4ae9-b1fc-cabb5e47afa7","name":"Apply Pricing Rules","type":"n8n-nodes-base.code","position":[80,208],"parameters":{"jsCode":"// Apply Dynamic Pricing Rules\n// Based on demand forecast, inventory levels, and competitor pricing with margin protection\n\nconst items = $input.all();\nconst processedItems = [];\n\nfor (const item of items) {\n  const data = item.json;\n  \n  // Extract relevant data\n  const basePrice = data.basePrice || data.price || 0;\n  const demandForecast = data.demandForecast || data.forecast || 'medium';\n  const inventoryLevel = data.inventoryLevel || data.inventory || 0;\n  const competitorPrice = data.competitorPrice || basePrice;\n  const minMargin = data.minMargin || 0.15; // 15% minimum margin\n  const cost = data.cost || basePrice * 0.6; // Assume 40% margin if cost not provided\n  \n  let finalPrice = basePrice;\n  let priceAdjustment = 0;\n  let adjustmentReason = [];\n  \n  // Rule 1: Demand-based pricing\n  if (demandForecast === 'high' || demandForecast > 0.7) {\n    priceAdjustment += basePrice * 0.10; // Increase by 10%\n    adjustmentReason.push('High demand forecast');\n  } else if (demandForecast === 'low' || demandForecast < 0.3) {\n    priceAdjustment -= basePrice * 0.08; // Decrease by 8%\n    adjustmentReason.push('Low demand forecast');\n  }\n  \n  // Rule 2: Inventory-based pricing\n  if (inventoryLevel < 10) {\n    priceAdjustment += basePrice * 0.05; // Increase by 5% for low stock\n    adjustmentReason.push('Low inventory');\n  } else if (inventoryLevel > 100) {\n    priceAdjustment -= basePrice * 0.10; // Decrease by 10% for overstock\n    adjustmentReason.push('Overstock clearance');\n  }\n  \n  // Rule 3: Competitor pricing adjustment\n  if (competitorPrice < basePrice * 0.95) {\n    const competitivePrice = competitorPrice * 0.98; // Price slightly below competitor\n    priceAdjustment = competitivePrice - basePrice;\n    adjustmentReason.push('Competitive pricing match');\n  }\n  \n  // Calculate proposed price\n  finalPrice = basePrice + priceAdjustment;\n  \n  // Rule 4: Margin protection - ensure minimum margin is maintained\n  const minPrice = cost / (1 - minMargin);\n  if (finalPrice < minPrice) {\n    finalPrice = minPrice;\n    adjustmentReason.push('Margin protection applied');\n  }\n  \n  // Calculate final metrics\n  const margin = ((finalPrice - cost) / finalPrice) * 100;\n  const priceChangePercent = ((finalPrice - basePrice) / basePrice) * 100;\n  \n  processedItems.push({\n    json: {\n      ...data,\n      basePrice: basePrice,\n      finalPrice: Math.round(finalPrice * 100) / 100,\n      priceAdjustment: Math.round(priceAdjustment * 100) / 100,\n      priceChangePercent: Math.round(priceChangePercent * 100) / 100,\n      margin: Math.round(margin * 100) / 100,\n      adjustmentReason: adjustmentReason.join(', '),\n      pricingTimestamp: new Date().toISOString()\n    }\n  });\n}\n\nreturn processedItems;"},"typeVersion":2},{"id":"01ec4551-0a55-41dc-8bed-9537e2498a4d","name":"Apply Promotion Rules","type":"n8n-nodes-base.code","position":[304,208],"parameters":{"jsCode":"// Apply Promotion Rules based on customer segments, product categories, seasonal campaigns, and inventory clearance\n\nconst items = $input.all();\nconst promotionalItems = [];\n\nfor (const item of items) {\n  const data = item.json;\n  \n  // Initialize promotion fields\n  let promotionType = 'none';\n  let discountPercentage = 0;\n  let promotionReason = [];\n  \n  // Extract relevant data\n  const customerSegment = data.customerSegment || data.customer_segment || 'standard';\n  const productCategory = data.productCategory || data.category || 'general';\n  const inventoryLevel = data.inventoryLevel || data.stock_level || 100;\n  const productPrice = data.price || data.product_price || 0;\n  const purchaseHistory = data.purchaseHistory || data.total_purchases || 0;\n  \n  // Get current date for seasonal campaigns\n  const currentDate = new Date();\n  const currentMonth = currentDate.getMonth() + 1; // 1-12\n  const currentDay = currentDate.getDate();\n  \n  // Rule 1: Customer Segment-based Promotions\n  if (customerSegment === 'vip' || customerSegment === 'premium') {\n    discountPercentage = Math.max(discountPercentage, 15);\n    promotionType = 'vip_discount';\n    promotionReason.push('VIP Customer Loyalty Discount');\n  } else if (customerSegment === 'loyal' && purchaseHistory > 5) {\n    discountPercentage = Math.max(discountPercentage, 10);\n    promotionType = 'loyalty_discount';\n    promotionReason.push('Loyal Customer Appreciation');\n  } else if (customerSegment === 'new' || purchaseHistory === 0) {\n    discountPercentage = Math.max(discountPercentage, 20);\n    promotionType = 'new_customer_welcome';\n    promotionReason.push('New Customer Welcome Offer');\n  }\n  \n  // Rule 2: Product Category Promotions\n  if (productCategory === 'electronics') {\n    discountPercentage = Math.max(discountPercentage, 12);\n    promotionType = 'category_promo';\n    promotionReason.push('Electronics Flash Sale');\n  } else if (productCategory === 'fashion' || productCategory === 'clothing') {\n    discountPercentage = Math.max(discountPercentage, 25);\n    promotionType = 'category_promo';\n    promotionReason.push('Fashion Week Special');\n  } else if (productCategory === 'home' || productCategory === 'furniture') {\n    discountPercentage = Math.max(discountPercentage, 18);\n    promotionType = 'category_promo';\n    promotionReason.push('Home Makeover Sale');\n  }\n  \n  // Rule 3: Seasonal Campaign Promotions\n  // Black Friday (November)\n  if (currentMonth === 11 && currentDay >= 20 && currentDay <= 30) {\n    discountPercentage = Math.max(discountPercentage, 40);\n    promotionType = 'seasonal_campaign';\n    promotionReason.push('Black Friday Mega Sale');\n  }\n  // Holiday Season (December)\n  else if (currentMonth === 12) {\n    discountPercentage = Math.max(discountPercentage, 30);\n    promotionType = 'seasonal_campaign';\n    promotionReason.push('Holiday Season Special');\n  }\n  // Summer Sale (June-August)\n  else if (currentMonth >= 6 && currentMonth <= 8) {\n    discountPercentage = Math.max(discountPercentage, 20);\n    promotionType = 'seasonal_campaign';\n    promotionReason.push('Summer Clearance Sale');\n  }\n  // Spring Sale (March-May)\n  else if (currentMonth >= 3 && currentMonth <= 5) {\n    discountPercentage = Math.max(discountPercentage, 15);\n    promotionType = 'seasonal_campaign';\n    promotionReason.push('Spring Refresh Sale');\n  }\n  \n  // Rule 4: Inventory Clearance (High Priority)\n  if (inventoryLevel > 200) {\n    discountPercentage = Math.max(discountPercentage, 35);\n    promotionType = 'clearance';\n    promotionReason.push('Overstock Clearance - Limited Time');\n  } else if (inventoryLevel > 100) {\n    discountPercentage = Math.max(discountPercentage, 25);\n    promotionType = 'clearance';\n    promotionReason.push('Inventory Reduction Sale');\n  } else if (inventoryLevel < 10) {\n    // Low stock - no discount, create urgency\n    promotionType = 'urgency';\n    promotionReason.push('Low Stock Alert - Order Now');\n  }\n  \n  // Calculate final price\n  const discountAmount = (productPrice * discountPercentage) / 100;\n  const finalPrice = productPrice - discountAmount;\n  \n  // Build promotional item\n  promotionalItems.push({\n    json: {\n      ...data,\n      promotion: {\n        applied: discountPercentage > 0,\n        type: promotionType,\n        discountPercentage: discountPercentage,\n        discountAmount: Math.round(discountAmount * 100) / 100,\n        originalPrice: productPrice,\n        finalPrice: Math.round(finalPrice * 100) / 100,\n        reasons: promotionReason,\n        campaignDate: currentDate.toISOString(),\n        urgency: inventoryLevel < 10 ? 'high' : inventoryLevel < 50 ? 'medium' : 'low'\n      },\n      promotionApplied: true,\n      processedAt: new Date().toISOString()\n    }\n  });\n}\n\nreturn promotionalItems;"},"typeVersion":2},{"id":"d20b248d-1673-4dd7-a2d7-12bf28cd046b","name":"Apply Replenishment Rules","type":"n8n-nodes-base.code","position":[528,208],"parameters":{"jsCode":"// Calculate replenishment quantities based on demand forecast, lead times, safety stock levels, and supplier constraints\n\nconst items = $input.all();\nconst replenishmentResults = [];\n\nfor (const item of items) {\n  const data = item.json;\n  \n  // Extract relevant data\n  const currentStock = data.currentStock || 0;\n  const demandForecast = data.demandForecast || 0;\n  const leadTimeDays = data.leadTimeDays || 7;\n  const safetyStockLevel = data.safetyStockLevel || 0;\n  const supplierMinOrder = data.supplierMinOrder || 1;\n  const supplierMaxOrder = data.supplierMaxOrder || 10000;\n  const productId = data.productId || data.id;\n  \n  // Calculate daily demand rate\n  const dailyDemand = demandForecast / 30; // Assuming monthly forecast\n  \n  // Calculate lead time demand\n  const leadTimeDemand = dailyDemand * leadTimeDays;\n  \n  // Calculate reorder point (lead time demand + safety stock)\n  const reorderPoint = leadTimeDemand + safetyStockLevel;\n  \n  // Calculate optimal order quantity\n  let orderQuantity = 0;\n  \n  if (currentStock <= reorderPoint) {\n    // Calculate quantity needed to reach target stock level\n    const targetStock = reorderPoint + (dailyDemand * 30); // 30 days of stock\n    orderQuantity = Math.max(0, targetStock - currentStock);\n    \n    // Apply supplier constraints\n    orderQuantity = Math.max(orderQuantity, supplierMinOrder);\n    orderQuantity = Math.min(orderQuantity, supplierMaxOrder);\n    \n    // Round up to nearest whole number\n    orderQuantity = Math.ceil(orderQuantity);\n  }\n  \n  // Calculate days until stockout\n  const daysUntilStockout = currentStock > 0 ? currentStock / dailyDemand : 0;\n  \n  // Determine urgency level\n  let urgency = 'low';\n  if (currentStock <= safetyStockLevel) {\n    urgency = 'critical';\n  } else if (currentStock <= reorderPoint) {\n    urgency = 'high';\n  } else if (daysUntilStockout <= leadTimeDays * 2) {\n    urgency = 'medium';\n  }\n  \n  replenishmentResults.push({\n    json: {\n      ...data,\n      replenishment: {\n        productId,\n        currentStock,\n        demandForecast,\n        dailyDemand: Math.round(dailyDemand * 100) / 100,\n        reorderPoint: Math.ceil(reorderPoint),\n        safetyStockLevel,\n        orderQuantity,\n        leadTimeDays,\n        daysUntilStockout: Math.round(daysUntilStockout * 10) / 10,\n        urgency,\n        shouldReorder: orderQuantity > 0,\n        supplierConstraints: {\n          minOrder: supplierMinOrder,\n          maxOrder: supplierMaxOrder\n        },\n        calculatedAt: new Date().toISOString()\n      }\n    }\n  });\n}\n\nreturn replenishmentResults;"},"typeVersion":2},{"id":"745fbd00-297b-433b-bea7-f16504a1dbe6","name":"Check for Exceptions","type":"n8n-nodes-base.if","position":[752,208],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"or","conditions":[{"id":"id-1","operator":{"type":"number","operation":"lt"},"leftValue":"={{ $json.currentStock }}","rightValue":"={{ $('Workflow Configuration').first().json.lowStockThreshold }}"},{"id":"id-2","operator":{"type":"number","operation":"lt"},"leftValue":"={{ $json.sentimentScore }}","rightValue":"={{ $('Workflow Configuration').first().json.negativeSentimentThreshold }}"},{"id":"id-3","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.actionRequired }}","rightValue":"true"}]}},"typeVersion":2.3},{"id":"b03bb460-1c02-4089-b1ac-009eb6340461","name":"Merge Analysis Results","type":"n8n-nodes-base.merge","position":[-368,560],"parameters":{"numberInputs":3},"typeVersion":3.2},{"id":"45c21d19-bed5-4f6c-a85c-862c0fd8ec8e","name":"Wait for Manual Review","type":"n8n-nodes-base.wait","position":[976,128],"webhookId":"9997ddc9-b792-425b-992b-4ac6a787e79d","parameters":{"resume":"webhook","options":{},"resumeAmount":24,"limitWaitTime":true},"typeVersion":1.1},{"id":"8aff2f23-83a6-4c6c-82ad-5a2755d425bf","name":"Store in CRM Database","type":"n8n-nodes-base.postgres","position":[1200,208],"parameters":{"table":{"__rl":true,"mode":"name","value":"<__PLACEHOLDER_VALUE__CRM table name__>"},"schema":{"__rl":true,"mode":"list","value":"public"},"columns":{"value":{"status":"={{ $json.status }}","orderId":"={{ $json.orderId }}","orderDate":"={{ $json.orderDate }}","customerId":"={{ $json.customerId }}","totalAmount":"={{ $json.totalAmount }}","sentimentScore":"={{ $json.sentimentScore }}","recommendations":"={{ $json.recommendations }}"},"mappingMode":"defineBelow"},"options":{}},"typeVersion":2.6},{"id":"5bb5f1fe-4015-443c-921f-c12cf35a42e9","name":"Store in Inventory Database","type":"n8n-nodes-base.postgres","position":[-640,1280],"parameters":{"table":{"__rl":true,"mode":"name","value":"<__PLACEHOLDER_VALUE__Inventory table name__>"},"schema":{"__rl":true,"mode":"list","value":"public"},"columns":{"value":{"productId":"={{ $json.productId }}","lastUpdated":"={{ $json.lastUpdated }}","currentStock":"={{ $json.currentStock }}","reorderPoint":"={{ $json.reorderPoint }}","forecastedDemand":"={{ $json.forecastedDemand }}"},"schema":[{"id":"productId","type":"string","display":true,"required":false,"displayName":"productId","defaultMatch":true,"canBeUsedToMatch":true},{"id":"currentStock","type":"string","display":true,"required":false,"displayName":"currentStock","defaultMatch":false,"canBeUsedToMatch":false},{"id":"reorderPoint","type":"string","display":true,"required":false,"displayName":"reorderPoint","defaultMatch":false,"canBeUsedToMatch":false},{"id":"lastUpdated","type":"string","display":true,"required":false,"displayName":"lastUpdated","defaultMatch":false,"canBeUsedToMatch":false},{"id":"forecastedDemand","type":"string","display":true,"required":false,"displayName":"forecastedDemand","defaultMatch":false,"canBeUsedToMatch":false}],"mappingMode":"defineBelow","matchingColumns":["productId"]},"options":{},"operation":"update"},"typeVersion":2.6},{"id":"bdd3564a-f903-4ae7-a263-6afab58b2b8b","name":"Notify Supply Chain Team","type":"n8n-nodes-base.slack","position":[-432,1296],"webhookId":"a85f2b01-b2a8-4fb6-b299-14764f7ba011","parameters":{"text":"=⚠️ Inventory Alert\n\nProduct: {{ $json.productName }}\nCurrent Stock: {{ $json.currentStock }}\nReorder Point: {{ $json.reorderPoint }}\nForecasted Demand: {{ $json.forecastedDemand }}\n\nAction: Replenishment order recommended","select":"channel","channelId":{"__rl":true,"mode":"id","value":"<__PLACEHOLDER_VALUE__Supply Chain Slack channel ID__>"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"d34b1ayEBbvZm2lT","name":"Slack account"}},"typeVersion":2.4},{"id":"53674ff3-8c07-4a66-b90a-f2afa3823006","name":"Notify Customer Support Team","type":"n8n-nodes-base.slack","position":[-640,1472],"webhookId":"da245461-7de7-4c22-a6b2-45c738c90820","parameters":{"text":"=🔔 Social Media Mention\n\nPlatform: {{ $json.platform }}\nAuthor: {{ $json.author }}\nContent: {{ $json.content }}\nEngagement: {{ $json.engagement }}\n\nRequires monitoring and potential response","select":"channel","channelId":{"__rl":true,"mode":"id","value":"<__PLACEHOLDER_VALUE__Customer Support Slack channel ID__>"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"d34b1ayEBbvZm2lT","name":"Slack account"}},"typeVersion":2.4},{"id":"53973b60-c07c-4728-8206-b4d5b96cbb11","name":"Send Email Campaign","type":"n8n-nodes-base.emailSend","position":[1648,208],"webhookId":"82a05d7d-919e-4bfb-819f-3e9f0e883ea4","parameters":{"html":"=<h1>Hello {{ $json.customerName }}!</h1>\n\n<p>We've curated some special recommendations just for you based on your recent activity:</p>\n\n<h2>Recommended Products</h2>\n<ul>\n{{ $json.recommendations }}\n</ul>\n\n<h2>Exclusive Offers</h2>\n<p>{{ $json.promotionalOffers }}</p>\n\n<p>Thank you for being a valued customer!</p>\n\n<p>Best regards,<br>Your E-commerce Team</p>","options":{},"subject":"Personalized Recommendations Just for You","toEmail":"={{ $json.customerEmail }}","fromEmail":"<__PLACEHOLDER_VALUE__Sender email address__>"},"typeVersion":2.1},{"id":"93bb9492-a6db-4805-9818-8d041f5eb0e7","name":"Prepare Campaign Data","type":"n8n-nodes-base.set","position":[1424,208],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"customerEmail","type":"string","value":"={{ $json.email || $json.customerEmail }}"},{"id":"id-2","name":"customerName","type":"string","value":"={{ $json.name || $json.customerName }}"},{"id":"id-3","name":"recommendationsList","type":"string","value":"={{ $json.recommendations }}"},{"id":"id-4","name":"campaignId","type":"string","value":"={{ $now.toFormat('yyyyMMdd') }}-personalized"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"3c704851-32cd-4393-87f1-6ec899f0d238","name":"Remove Duplicate Records","type":"n8n-nodes-base.removeDuplicates","position":[-144,208],"parameters":{"compare":"selectedFields","options":{},"fieldsToCompare":"orderId, customerId"},"typeVersion":2},{"id":"11098ffc-acf5-480c-a0c1-28b2df720d12","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1824,-288],"parameters":{"width":752,"height":224,"content":"## How It Works\nThis workflow automates inventory management and customer engagement for e-commerce businesses and retail operations managing multiple product categories. It solves the critical challenge of maintaining optimal stock levels while personalizing customer communications across order fulfillment, product recommendations, and support interactions. The system processes webhook-triggered data across four parallel streams (orders, reviews, inventory, social media), applies AI-powered analysis for sentiment extraction, pricing optimization, promotion targeting, and demand forecasting, then distributes personalized communications through email campaigns and Slack/Microsoft Teams notifications. This eliminates manual inventory tracking, reduces stockouts, and delivers data-driven customer engagement.\n"},"typeVersion":1},{"id":"f9d43e23-e427-4f48-941c-197362a7bbdd","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1008,-304],"parameters":{"width":496,"height":256,"content":"## Setup Steps\n1. Configure webhook URLs for orders, reviews, inventory systems, and social media platforms\n2. Add AI model API credentials (OpenAI/Anthropic) for sentiment, pricing\n3. Connect CRM database for customer profile management and segmentation\n4. Set up email service (Gmail/SendGrid) with campaign templates for personalized communications\n5. Integrate Slack workspace or Microsoft Teams channels for internal inventory alerts"},"typeVersion":1},{"id":"a9fe5806-bfe7-4fe5-86e1-e62443e98c12","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-448,-416],"parameters":{"color":4,"width":400,"height":368,"content":"## Prerequisites\nActive e-commerce platform with webhook support, AI service API keys\n## Use Cases\nMulti-channel retailers optimizing stock across locations, subscription box services  \n## Customization\nAdjust AI prompts for industry-specific sentiment rules, modify inventory thresholds for restocking alerts\n## Benefits\nReduces inventory management overhead by 70%, prevents stockouts through predictive forecasting"},"typeVersion":1},{"id":"8d0b01bc-faf7-45d6-a4f6-554eb2e8b298","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-192,0],"parameters":{"color":7,"width":2208,"height":512,"content":"## Automated Engagement Distribution\n**Why:** Coordinated delivery through CRM, email campaigns, and team notifications ensures stakeholders receive relevant updates while customers experience personalized interactions."},"typeVersion":1},{"id":"56751703-bd02-4237-b685-c8a60276cbe6","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-768,0],"parameters":{"color":7,"width":544,"height":1680,"content":"## AI-Powered Intelligence Analysis\n**Why:** Parallel AI agents process data for sentiment analysis, pricing strategy, promotional targeting, and inventory forecasting, transforming raw data into actionable insights."},"typeVersion":1},{"id":"512f5dc0-57ea-43bf-b01c-a11e5b91d829","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-1856,16],"parameters":{"color":7,"width":1056,"height":1584,"content":"## Multi-Channel Data Ingestion\n**Why:** Webhook triggers capture real-time events from orders, reviews, inventory, and social platforms, ensuring immediate response to business-critical changes."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"93f013e0-9e94-41c3-9f7c-6a868ce4a840","connections":{"Validate Orders":{"main":[[{"node":"AI Agent - Demand Forecasting","type":"main","index":0},{"node":"AI Agent - Product Recommendations","type":"main","index":0}]]},"Normalize Orders":{"main":[[{"node":"Validate Orders","type":"main","index":0}]]},"Validate Reviews":{"main":[[{"node":"AI Agent - Sentiment Analysis","type":"main","index":0}]]},"Normalize Reviews":{"main":[[{"node":"Validate Reviews","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"AI Agent - Sentiment Analysis","type":"ai_languageModel","index":0},{"node":"AI Agent - Demand Forecasting","type":"ai_languageModel","index":0},{"node":"AI Agent - Product Recommendations","type":"ai_languageModel","index":0}]]},"Route by Data Type":{"main":[[{"node":"Normalize Orders","type":"main","index":0}],[{"node":"Normalize Reviews","type":"main","index":0}],[{"node":"Normalize Inventory","type":"main","index":0}],[{"node":"Normalize Social Media","type":"main","index":0}]]},"Validate Inventory":{"main":[[{"node":"Store in Inventory Database","type":"main","index":0}]]},"Apply Pricing Rules":{"main":[[{"node":"Apply Promotion Rules","type":"main","index":0}]]},"Normalize Inventory":{"main":[[{"node":"Validate Inventory","type":"main","index":0}]]},"Check for Exceptions":{"main":[[{"node":"Wait for Manual Review","type":"main","index":0}],[{"node":"Store in CRM Database","type":"main","index":0}]]},"Apply Promotion Rules":{"main":[[{"node":"Apply Replenishment Rules","type":"main","index":0}]]},"Prepare Campaign Data":{"main":[[{"node":"Send Email Campaign","type":"main","index":0}]]},"Store in CRM Database":{"main":[[{"node":"Prepare Campaign Data","type":"main","index":0}]]},"Validate Social Media":{"main":[[{"node":"Notify Customer Support Team","type":"main","index":0}]]},"Webhook - Ingest Data":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Merge Analysis Results":{"main":[[{"node":"Remove Duplicate Records","type":"main","index":0}]]},"Normalize Social Media":{"main":[[{"node":"Validate Social Media","type":"main","index":0}]]},"Wait for Manual Review":{"main":[[{"node":"Store in CRM Database","type":"main","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Route by Data Type","type":"main","index":0}]]},"Remove Duplicate Records":{"main":[[{"node":"Apply Pricing Rules","type":"main","index":0}]]},"Apply Replenishment Rules":{"main":[[{"node":"Check for Exceptions","type":"main","index":0}]]},"Store in Inventory Database":{"main":[[{"node":"Notify Supply Chain Team","type":"main","index":0}]]},"Structured Output - Forecast":{"ai_outputParser":[[{"node":"AI Agent - Demand Forecasting","type":"ai_outputParser","index":0}]]},"AI Agent - Demand Forecasting":{"main":[[{"node":"Merge Analysis Results","type":"main","index":1}]]},"AI Agent - Sentiment Analysis":{"main":[[{"node":"Merge Analysis Results","type":"main","index":0}]]},"Structured Output - Sentiment":{"ai_outputParser":[[{"node":"AI Agent - Sentiment Analysis","type":"ai_outputParser","index":0}]]},"AI Agent - Product Recommendations":{"main":[[{"node":"Merge Analysis Results","type":"main","index":2}]]},"Structured Output - Recommendations":{"ai_outputParser":[[{"node":"AI Agent - Product Recommendations","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":37,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":6},"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.slack":{"count":2},"n8n-nodes-base.filter":{"count":4},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.postgres":{"count":2},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"@n8n/n8n-nodes-langchain.agent":{"count":3},"n8n-nodes-base.removeDuplicates":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":3}}},"status":"published","readyToDemo":null,"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":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"id":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":30,"icon":"file:postgres.svg","name":"n8n-nodes-base.postgres","codex":{"data":{"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-i-chose-n8n-over-zapier-in-2020/","icon":"😍","label":"Why I chose n8n over Zapier in 2020"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting 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/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-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/postgres/"}]},"categories":["Development","Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Postgres"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNzkgODEiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTc3LjM5MSA0Ny45MjJjLS40NjYtMS40MTItMS42ODgtMi4zOTYtMy4yNjgtMi42MzItLjc0NS0uMTExLTEuNTk4LS4wNjQtMi42MDguMTQ0LTEuNzYuMzYzLTMuMDY1LjUwMS00LjAxOC41MjggMy41OTYtNi4wNzIgNi41MjEtMTIuOTk3IDguMjA0LTE5LjUxNSAyLjcyMi0xMC41NCAxLjI2OC0xNS4zNDEtLjQzMi0xNy41MTNDNzAuNzcgMy4xODUgNjQuMjA2LjA5NyA1Ni4yODcuMDAyYy00LjIyNC0uMDUyLTcuOTMzLjc4Mi05Ljg2NyAxLjM4MmEzNyAzNyAwIDAgMC01Ljc3LS41MjhjLTMuODA5LS4wNjEtNy4xNzQuNzctMTAuMDUgMi40NzZhNDYgNDYgMCAwIDAtNy4wOTgtMS43ODJDMTYuNTYxLjQxMSAxMC45NjggMS4yOTkgNi44NzYgNC4xOSAxLjkyMiA3LjY4OS0uMzc1IDEzLjc3LjA1IDIyLjI2MmMuMTM1IDIuNjk2IDEuNjQzIDEwLjkgNC4wMTggMTguNjggMS4zNjUgNC40NzIgMi44MiA4LjE4NSA0LjMyNiAxMS4wMzggMi4xMzUgNC4wNDYgNC40MTkgNi40MjggNi45ODQgNy4yODQgMS40MzguNDc5IDQuMDQ5LjgxNCA2Ljc5Ny0xLjQ3M2E2IDYgMCAwIDAgMS40MjkgMS4yM2MuNzgzLjQ5NCAxLjc0Ljg5NyAyLjY5NiAxLjEzNiAzLjQ0Ni44NjIgNi42NzQuNjQ2IDkuNDI3LS41NjFsLjA0MSAxLjM2Mi4wNiAxLjg5OWMuMTYzIDQuMDY0LjQ0IDcuMjIzIDEuMjU5IDkuNDM0LjA0NS4xMjIuMTA1LjMwNy4xNjkuNTAzLjQwOSAxLjI1MSAxLjA5MiAzLjM0NiAyLjgzIDQuOTg3IDEuOCAxLjY5OSAzLjk3OCAyLjIyIDUuOTcyIDIuMjIgMSAwIDEuOTU1LS4xMzEgMi43OTItLjMxMSAyLjk4NC0uNjM5IDYuMzczLTEuNjE0IDguODI0LTUuMTA0IDIuMzE4LTMuMyAzLjQ0NC04LjI3IDMuNjQ4LTE2LjEwMWwuMDc0LS42MzQuMDQ4LS40MTQuNTQ2LjA0OC4xNDEuMDFjMy4wMzkuMTM4IDYuNzU1LS41MDYgOS4wMzctMS41NjYgMS44MDMtLjgzNyA3LjU4Mi0zLjg4OCA2LjIyMS04LjAwNyIvPjxwYXRoIGZpbGw9IiMzMzY3OTEiIGQ9Ik03Mi4xOTUgNDguNzIzYy05LjAzNiAxLjg2NC05LjY1Ny0xLjE5NS05LjY1Ny0xLjE5NSA5LjU0MS0xNC4xNTcgMTMuNTI5LTMyLjEyNyAxMC4wODctMzYuNTI1QzYzLjIzNS0uOTk0IDQ2Ljk4MSA0LjY4IDQ2LjcxIDQuODI3bC0uMDg3LjAxNmMtMS43ODUtLjM3MS0zLjc4My0uNTkxLTYuMDI5LS42MjgtNC4wODktLjA2Ny03LjE5IDEuMDcyLTkuNTQ0IDIuODU3IDAgMC0yOC45OTUtMTEuOTQ1LTI3LjY0NyAxNS4wMjMuMjg3IDUuNzM3IDguMjIzIDQzLjQxIDE3LjY4OSAzMi4wMzEgMy40Ni00LjE2MSA2LjgwMy03LjY3OSA2LjgwMy03LjY3OSAxLjY2IDEuMTAzIDMuNjQ4IDEuNjY2IDUuNzMyIDEuNDYzbC4xNjItLjEzN2E2LjMgNi4zIDAgMCAwIC4wNjUgMS42MmMtMi40MzkgMi43MjUtMS43MjIgMy4yMDMtNi41OTcgNC4yMDYtNC45MzMgMS4wMTctMi4wMzUgMi44MjYtLjE0MyAzLjI5OSAyLjI5NC41NzQgNy42IDEuMzg2IDExLjE4NS0zLjYzM2wtLjE0My41NzNjLjk1Ni43NjUgMS42MjYgNC45NzggMS41MTQgOC43OTdzLS4xODggNi40NDEuNTY1IDguNDg5IDEuNTAzIDYuNjU2IDcuOTEyIDUuMjgyYzUuMzU1LTEuMTQ4IDguMTMtNC4xMjEgOC41MTYtOS4wODEuMjc0LTMuNTI2Ljg5NC0zLjAwNS45MzMtNi4xNThsLjQ5Ny0xLjQ5M2MuNTczLTQuNzguMDkxLTYuMzIyIDMuMzktNS42MDVsLjgwMi4wN2MyLjQyOC4xMSA1LjYwNi0uMzkxIDcuNDcxLTEuMjU3IDQuMDE2LTEuODY0IDYuMzk4LTQuOTc2IDIuNDM4LTQuMTU4Ii8+PHBhdGggZD0iTTMyLjc0NyAyNC42NmMtLjgxNC0uMTEzLTEuNTUyLS4wMDgtMS45MjUuMjc0YS43LjcgMCAwIDAtLjI5Mi40N2MtLjA0Ny4zMzYuMTg4LjcwNy4zMzMuODk4LjQwOS41NDIgMS4wMDYuOTE1IDEuNTk4Ljk5N2EyIDIgMCAwIDAgLjI1Ni4wMThjLjk4NiAwIDEuODgzLS43NjggMS45NjItMS4zMzUuMDk5LS43MS0uOTMyLTEuMTgzLTEuOTMxLTEuMzIybTI2Ljk3NS4wMjJjLS4wNzgtLjU1Ni0xLjA2OC0uNzE1LTIuMDA3LS41ODRzLTEuODQ4LjU1NC0xLjc3MiAxLjExMmMuMDYxLjQzNC44NDQgMS4xNzQgMS43NzEgMS4xNzRxLjExNyAwIC4yMzctLjAxNmMuNjE5LS4wODYgMS4wNzMtLjQ3OSAxLjI4OC0uNzA1LjMyOS0uMzQ1LjUxOC0uNzMuNDg0LS45OG0xNS40NzcgMjMuODI4Yy0uMzQ1LTEuMDQyLTEuNDUzLTEuMzc3LTMuMjk2LS45OTctNS40NzEgMS4xMjktNy40My4zNDctOC4wNzMtLjEyNyA0LjI1Mi02LjQ3OCA3Ljc1LTE0LjMwOCA5LjYzNy0yMS42MTQuODk0LTMuNDYxIDEuMzg4LTYuNjc1IDEuNDI4LTkuMjk0LjA0NS0yLjg3Ni0uNDQ1LTQuOTg4LTEuNDU1LTYuMjc5LTQuMDcyLTUuMjAzLTEwLjA0OC03Ljk5NC0xNy4yODMtOC4wNy00Ljk3My0uMDU2LTkuMTc1IDEuMjE3LTkuOTkgMS41NzVhMjUgMjUgMCAwIDAtNS42MjItLjcyMmMtMy43MzQtLjA2LTYuOTYxLjgzNC05LjYzMyAyLjY1NWE0MyA0MyAwIDAgMC03LjgyOC0yLjA1MmMtNi4zNDItMS4wMjEtMTEuMzgxLS4yNDgtMTQuOTc4IDIuMy00LjI5MSAzLjA0LTYuMjcyIDguNDc1LTUuODg4IDE2LjE1Mi4xMjkgMi41ODMgMS42MDEgMTAuNTI5IDMuOTIzIDE4LjEzOSAzLjA1NyAxMC4wMTYgNi4zOCAxNS42ODYgOS44NzcgMTYuODUyYTQuNCA0LjQgMCAwIDAgMS40MDIuMjMyYzEuMjc2IDAgMi44MzktLjU3NSA0LjQ2Ni0yLjUzMWExNjEgMTYxIDAgMCAxIDYuMTU2LTYuOTY2IDkuOSA5LjkgMCAwIDAgNC40MjkgMS4xOTFsLjAxLjEyMWMtLjMxLjM2OC0uNTY0LjY5LS43ODEuOTY1LTEuMDcgMS4zNTgtMS4yOTMgMS42NDEtNC43MzggMi4zNTEtLjk4LjIwMi0zLjU4Mi43MzgtMy42MiAyLjU2My0uMDQxIDEuOTkzIDMuMDc2IDIuODMgMy40MzEgMi45MTkgMS4yMzguMzEgMi40My40NjMgMy41NjguNDYzIDIuNzY2IDAgNS4yLS45MDkgNy4xNDUtMi42NjgtLjA2IDcuMTA2LjIzNiAxNC4xMDcgMS4wODkgMTYuMjQxLjY5OSAxLjc0NiAyLjQwNiA2LjAxNCA3Ljc5OCA2LjAxNC43OTEgMCAxLjY2Mi0uMDkyIDIuNjItLjI5NyA1LjYyNy0xLjIwNyA4LjA3MS0zLjY5NCA5LjAxNi05LjE3Ny41MDYtMi45MyAxLjM3NC05LjkyOCAxLjc4Mi0xMy42ODIuODYyLjI2OSAxLjk3MS4zOTIgMy4xNy4zOTIgMi41MDEgMCA1LjM4Ny0uNTMxIDcuMTk3LTEuMzcyIDIuMDMzLS45NDQgNS43MDItMy4yNjEgNS4wMzctNS4yNzR6TTYxLjggMjMuMTQ3Yy0uMDE5IDEuMTA4LS4xNzEgMi4xMTQtLjMzMyAzLjE2NC0uMTc0IDEuMTI5LS4zNTQgMi4yOTctLjM5OSAzLjcxNS0uMDQ1IDEuMzc5LjEyOCAyLjgxNC4yOTQgNC4yLjMzNyAyLjgwMS42ODIgNS42ODUtLjY1NSA4LjUzMWExMSAxMSAwIDAgMS0uNTkyLTEuMjE4Yy0uMTY2LS40MDMtLjUyNy0xLjA1LTEuMDI3LTEuOTQ2LTEuOTQ0LTMuNDg3LTYuNDk3LTExLjY1Mi00LjE2Ny0xNC45ODQuNjk0LS45OTIgMi40NTYtMi4wMTEgNi44NzktMS40NjN6TTU2LjQzOSA0LjM3NGM2LjQ4Mi4xNDMgMTEuNjA5IDIuNTY4IDE1LjI0IDcuMjA3IDIuNzg0IDMuNTU4LS4yODIgMTkuNzQ5LTkuMTU4IDMzLjcxNmwtLjI2OS0uMzM5LS4xMTItLjE0YzIuMjk0LTMuNzg4IDEuODQ1LTcuNTM2IDEuNDQ2LTEwLjg1OS0uMTY0LTEuMzY0LS4zMTktMi42NTItLjI4LTMuODYxLjA0MS0xLjI4My4yMS0yLjM4Mi4zNzQtMy40NDYuMjAyLTEuMzExLjQwNy0yLjY2Ny4zNS00LjI2NWExLjggMS44IDAgMCAwIC4wMzctLjYwMWMtLjE0NC0xLjUzMy0xLjg5NC02LjEyLTUuNDYyLTEwLjI3My0xLjk1MS0yLjI3MS00Ljc5Ny00LjgxMy04LjY4Mi02LjUyN2EyOS4zIDI5LjMgMCAwIDEgNi41MTUtLjYxMnpNMjAuMTY3IDUzLjI5OGMtMS43OTMgMi4xNTUtMy4wMzEgMS43NDItMy40MzggMS42MDctMi42NTMtLjg4NS01LjczLTYuNDkxLTguNDQ0LTE1LjM4Mi0yLjM0OC03LjY5My0zLjcyLTE1LjQyOC0zLjgyOS0xNy41OTctLjM0My02Ljg2IDEuMzItMTEuNjQxIDQuOTQzLTE0LjIxIDUuODk2LTQuMTgxIDE1LjU4OS0xLjY3OSAxOS40ODQtLjQwOWwtLjE3LjE2M2MtNi4zOTEgNi40NTUtNi4yNCAxNy40ODMtNi4yMjQgMTguMTU3YTIyIDIyIDAgMCAwIC4wNTEgMS4xMzVjLjExIDEuODU1LjMxNSA1LjMwNy0uMjMyIDkuMjE3LS41MDggMy42MzMuNjEyIDcuMTg5IDMuMDcyIDkuNzU2cS4zODMuMzk4Ljc5NS43NWExNjQgMTY0IDAgMCAwLTYuMDA4IDYuODE0em02LjgzLTkuMTEzYy0xLjk4My0yLjA2OS0yLjg4NC00Ljk0Ny0yLjQ3MS03Ljg5Ni41NzctNC4xMy4zNjQtNy43MjcuMjUtOS42NTlsLS4wMzktLjY5NGMuOTM0LS44MjggNS4yNjEtMy4xNDYgOC4zNDYtMi40MzkgMS40MDguMzIzIDIuMjY2IDEuMjgxIDIuNjIzIDIuOTMxIDEuODQ2IDguNTM5LjI0NCAxMi4wOTgtMS4wNDMgMTQuOTU3LS4yNjUuNTg5LS41MTYgMS4xNDYtLjczIDEuNzIybC0uMTY2LjQ0NWMtLjQyIDEuMTI2LS44MTEgMi4xNzMtMS4wNTMgMy4xNjctMi4xMDgtLjAwNi00LjE1OS0uOTA3LTUuNzE4LTIuNTM0em0uMzI0IDExLjUxNmE1IDUgMCAwIDEtMS40OTQtLjY0MmMuMjcxLS4xMjguNzU0LS4zMDEgMS41OTEtLjQ3NCA0LjA1Mi0uODM0IDQuNjc4LTEuNDIzIDYuMDQ1LTMuMTU4LjMxMy0uMzk4LjY2OS0uODQ5IDEuMTYtMS4zOTguNzMzLS44MjEgMS4wNjgtLjY4MiAxLjY3Ni0uNDMuNDkzLjIwNC45NzIuODIxIDEuMTY3IDEuNTAxLjA5Mi4zMjEuMTk1LjkzLS4xNDMgMS40MDQtMi44NTUgMy45OTctNy4wMTUgMy45NDYtMTAuMDAzIDMuMTk4em0yMS4yMDcgMTkuNzM1Yy00Ljk1NyAxLjA2Mi02LjcxMy0xLjQ2Ny03Ljg2OS00LjM1OS0uNzQ3LTEuODY3LTEuMTEzLTEwLjI4NS0uODUzLTE5LjU4MmExLjEgMS4xIDAgMCAwLS4wNDgtLjM1NiA1IDUgMCAwIDAtLjEzOS0uNjU3Yy0uMzg3LTEuMzUzLTEuMzMxLTIuNDg0LTIuNDYyLTIuOTUzLS40NS0uMTg2LTEuMjc1LS41MjgtMi4yNjctLjI3NC4yMTItLjg3MS41NzgtMS44NTUuOTc2LTIuOTIxbC4xNjctLjQ0OGMuMTg4LS41MDUuNDIzLTEuMDI5LjY3My0xLjU4MyAxLjM0Ny0yLjk5MiAzLjE5Mi03LjA5MSAxLjE5LTE2LjM1LS43NS0zLjQ2OC0zLjI1NC01LjE2MS03LjA1LTQuNzY4LTIuMjc2LjIzNS00LjM1OCAxLjE1NC01LjM5NiAxLjY4cS0uMzM0LjE2OS0uNjE4LjMyOWMuMjktMy40OTQgMS4zODUtMTAuMDI0IDUuNDgxLTE0LjE1NiAyLjU3OS0yLjYwMSA2LjAxNC0zLjg4NiAxMC4xOTktMy44MTcgOC4yNDYuMTM1IDEzLjUzNCA0LjM2NyAxNi41MTggNy44OTMgMi41NzEgMy4wMzkgMy45NjQgNi4xIDQuNTIgNy43NTEtNC4xNzktLjQyNS03LjAyMi40LTguNDYzIDIuNDYtMy4xMzUgNC40ODEgMS43MTUgMTMuMTc4IDQuMDQ2IDE3LjM1OC40MjcuNzY2Ljc5NiAxLjQyOC45MTIgMS43MDkuNzU5IDEuODM5IDEuNzQyIDMuMDY3IDIuNDU5IDMuOTY0LjIyLjI3NS40MzMuNTQxLjU5Ni43NzQtMS4yNjYuMzY1LTMuNTM5IDEuMjA4LTMuMzMyIDUuNDIyLS4xNjcgMi4xMTUtMS4zNTYgMTIuMDE2LTEuOTU5IDE1LjUxNC0uNzk3IDQuNjIxLTIuNDk3IDYuMzQzLTcuMjc5IDcuMzY4em0yMC42OTMtMjMuNjhjLTEuMjk0LjYwMS0zLjQ2IDEuMDUyLTUuNTE4IDEuMTQ4LTIuMjczLjEwNy0zLjQzLS4yNTUtMy43MDItLjQ3Ny0uMTI4LTIuNjI2Ljg1LTIuOTAxIDEuODg0LTMuMTkxLjE2My0uMDQ2LjMyMS0uMDkuNDc0LS4xNDRhNCA0IDAgMCAwIC4zMTMuMjNjMS44MjcgMS4yMDYgNS4wODUgMS4zMzYgOS42ODUuMzg2bC4wNS0uMDFjLS42Mi41OC0xLjY4MiAxLjM1OS0zLjE4NyAyLjA1OHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Postgres","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":5,"name":"Development"}]},{"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":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/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/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/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"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":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":844,"icon":"fa:filter","name":"n8n-nodes-base.filter","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The Filter node can be used to filter items based on a condition. If the condition is met, the item will be passed on to the next node. If the condition is not met, the item will be omitted. Conditions can be combined together by AND(meet all conditions), or OR(meet at least one condition).","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Filter","color":"#229eff"},"iconData":{"icon":"filter","type":"icon"},"displayName":"Filter","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1238,"icon":"file:removeDuplicates.svg","name":"n8n-nodes-base.removeDuplicates","codex":{"data":{"alias":["Dedupe","Deduplicate","Duplicates","Remove","Unique","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.removeduplicates/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Remove Duplicates"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjNTRCOEM5IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGQ9Ik0xMzQuMDk3IDExMWgzOC44Mjl2MzIuNTA4SDEzOC4xNnYzNC42MzVoLTMyLjUwOHYtMzguNjk5YzAtMTUuNzA5IDEyLjczNS0yOC40NDQgMjguNDQ1LTI4LjQ0NG03Ny42NTggMzIuNTA4VjExMWg3Ny42NTd2MzIuNTA4em0xMTYuNDg2IDBWMTExaDc3LjY1OHYzMi41MDh6bTExNi40ODcgMFYxMTFoMzguODI5YzE1LjcxIDAgMjguNDQ1IDEyLjczNSAyOC40NDUgMjguNDQ0djM4LjY5OWgtMzIuNTA4di0zNC42MzV6bTM0Ljc2NiA3My4yMzhoMzIuNTA4djM4LjY5OGMwIDE1LjcxLTEyLjczNSAyOC40NDUtMjguNDQ1IDI4LjQ0NWgtMzguODI5di0zMi41MDhoMzQuNzY2ek0wIDI0NC41MzdDMCAyMjkuMzI5IDEyLjczNSAyMTcgMjguNDQ0IDIxN2gzNDkuNDYxYzE1LjcwOSAwIDI4LjQ0NCAxMi4zMjkgMjguNDQ0IDI3LjUzN3YxMjkuODE1YzAgMTUuMjA4LTEyLjczNSAyNy41MzctMjguNDQ0IDI3LjUzN0gyOC40NDVDMTIuNzM0IDQwMS44ODkgMCAzODkuNTYgMCAzNzQuMzUyeiIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoNTEydjUxMkgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg=="},"displayName":"Remove Duplicates","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":39,"name":"CRM"},{"id":49,"name":"AI Summarization"}],"image":[]}}