{"workflow":{"id":13594,"name":"Handle e-commerce support, orders and inventory with Claude, Shopify and Slack","views":118,"recentViews":1,"totalViews":118,"createdAt":"2026-02-22T15:26:39.010Z","description":"Creates an AI-powered sales and support agent connected to live store data from Shopify/WooCommerce. MCP ensures controlled access to inventory and order systems. Automatically handles customer queries, stock alerts, and refund logic to reduce manual workload.\n\n## How it works\n\n1. **Trigger** — Listens for incoming customer support requests via Webhook (chat, email, or API)\n2. **Fetch context** — Retrieves live order status and inventory data from Shopify in parallel\n3. **AI reasoning** — Claude AI analyzes the query with full store context and decides action\n4. **Route intent** — Classifies into: Order Inquiry, Inventory Check, Refund Request, or General Support\n5. **Act** — Processes refunds, sends stock alerts, or responds to customer automatically\n6. **Log & notify** — Saves interaction to PostgreSQL and notifies team via Slack for escalations\n\n## Setup steps\n\n1. **Shopify / WooCommerce** — Add your store API credentials to the HTTP Request nodes\n2. **Claude AI** — Set your Anthropic API key in the AI node credentials\n3. **PostgreSQL** — Create a `support_interactions` table to log all AI-handled tickets\n4. **Slack** — Add your incoming webhook URL to the Slack notification node\n5. **Email** — Configure SMTP credentials for customer-facing response emails\n6. **Test** — Send a test webhook payload, verify all branches, then activate\n\n### Intent branches the AI handles:\n\nORDER_INQUIRY → Tracks shipment, shows order details\nREFUND_REQUEST → Auto-processes eligible refunds via Shopify API\nINVENTORY_CHECK → Detects low-stock (≤5 units) and fires Slack alert\nPRICING_INQUIRY / GENERAL_SUPPORT → Smart contextual response\n\n### Before activating, update these placeholders:\n\nYOUR-STORE.myshopify.com + YOUR_SHOPIFY_ACCESS_TOKEN\nYOUR_SLACK_WEBHOOK_URL (appears in 3 nodes)\nSMTP credentials + support@yourstore.com\nPostgreSQL credentials (create a support_interactions table)\n\n\n\n**Explore More LinkedIn & Social Automation:**  \n[Contact us](https://www.oneclickitsolution.com/contact-us/) to design AI-powered lead nurturing, content engagement, and multi-platform reply workflows tailored to your growth strategy.\n","workflow":{"id":"glguBkaTxgfmEP3z","meta":{"instanceId":"dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281","templateCredsSetupCompleted":true},"name":"Smart E-Commerce AI Agent (Inventory + Orders + Support)","tags":[],"nodes":[{"id":"dab188a1-dd4a-4a09-a143-fd93f8615441","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2128,48],"parameters":{"width":820,"height":720,"content":"## Smart E-Commerce AI Agent (Inventory + Orders + Support)\n\nCreates an AI-powered sales and support agent connected to live store data from Shopify/WooCommerce. MCP ensures controlled access to inventory and order systems. Automatically handles customer queries, stock alerts, and refund logic to reduce manual workload.\n\n## How it works\n\n1. **Trigger** — Listens for incoming customer support requests via Webhook (chat, email, or API)\n2. **Fetch context** — Retrieves live order status and inventory data from Shopify in parallel\n3. **AI reasoning** — Claude AI analyzes the query with full store context and decides action\n4. **Route intent** — Classifies into: Order Inquiry, Inventory Check, Refund Request, or General Support\n5. **Act** — Processes refunds, sends stock alerts, or responds to customer automatically\n6. **Log & notify** — Saves interaction to PostgreSQL and notifies team via Slack for escalations\n\n## Setup steps\n\n1. **Shopify / WooCommerce** — Add your store API credentials to the HTTP Request nodes\n2. **Claude AI** — Set your Anthropic API key in the AI node credentials\n3. **PostgreSQL** — Create a `support_interactions` table to log all AI-handled tickets\n4. **Slack** — Add your incoming webhook URL to the Slack notification node\n5. **Email** — Configure SMTP credentials for customer-facing response emails\n6. **Test** — Send a test webhook payload, verify all branches, then activate"},"typeVersion":1},{"id":"f6a8d38d-5f96-40e5-8081-480a71ff34a3","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1232,208],"parameters":{"color":5,"width":468,"height":593,"content":"## 1. Trigger & receive request\n\nListens for incoming customer support messages via Webhook — supports chat widgets, email-to-API bridges, and direct API calls"},"typeVersion":1},{"id":"77c96410-245c-460d-99f9-a37502ed5ccf","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-720,32],"parameters":{"color":5,"width":412,"height":801,"content":"## 2. Fetch live store data\n\nRetrieves real-time order status and inventory levels from Shopify in parallel to give the AI full context before reasoning"},"typeVersion":1},{"id":"e4237960-d0bc-4d9e-9ee6-ee2e9ca81db8","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-272,-16],"parameters":{"color":5,"width":476,"height":905,"content":"## 3. AI reasoning & routing\n\nClaude AI analyzes the query with live store context, classifies intent, and decides the appropriate action: respond, refund, restock alert, or escalate to human agent"},"typeVersion":1},{"id":"44268e9a-6f0a-4f16-99cb-36db907a5ace","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[240,80],"parameters":{"color":5,"width":960,"height":793,"content":"## 4. Act, log & notify\n\nExecutes the appropriate action — sends customer reply, triggers refund, fires low-stock alert — then logs the interaction and notifies the team via Slack and Email"},"typeVersion":1},{"id":"15447e3f-0b10-4bdf-aef4-ffa78dff73be","name":"Receive customer support request","type":"n8n-nodes-base.webhook","position":[-1088,448],"webhookId":"a4e17017-9135-42f3-9cd9-eea2e2ff40da","parameters":{"path":"ecommerce-support","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"66ed6e94-5152-49a1-950d-de8bf1f988a3","name":"Fetch order details from Shopify","type":"n8n-nodes-base.httpRequest","position":[-864,352],"parameters":{"url":"=https://YOUR-STORE.myshopify.com/admin/api/2024-01/orders.json?email={{ encodeURIComponent($json.body.customer_email) }}&status=any&limit=5","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"X-Shopify-Access-Token","value":"YOUR_SHOPIFY_ACCESS_TOKEN"},{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2},{"id":"304810e2-5525-4895-9ca3-e4e8b0a41fc8","name":"Fetch inventory levels from Shopify","type":"n8n-nodes-base.httpRequest","position":[-864,544],"parameters":{"url":"https://YOUR-STORE.myshopify.com/admin/api/2024-01/inventory_levels.json?limit=50","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"X-Shopify-Access-Token","value":"YOUR_SHOPIFY_ACCESS_TOKEN"}]}},"typeVersion":4.2},{"id":"a05a3e8f-8585-43ac-8bd4-8ecd4dde58b6","name":"Merge order and inventory data","type":"n8n-nodes-base.merge","position":[-640,448],"parameters":{"mode":"combine","options":{}},"typeVersion":3},{"id":"4975b36b-ded0-4264-b4e4-5424cffc47aa","name":"AI agent analyzes query and classifies intent","type":"n8n-nodes-base.code","position":[-416,448],"parameters":{"mode":"runOnceForEachItem","jsCode":"// AI Agent: Analyze customer query with live store context\nconst data = $input.item.json;\n\n// Extract customer message from webhook payload\nconst customerMessage = data.body?.message || data.message || '';\nconst customerEmail = data.body?.customer_email || data.customer_email || '';\nconst customerName = data.body?.customer_name || data.customer_name || 'Customer';\nconst sessionId = data.body?.session_id || `SESSION-${Date.now()}`;\n\n// Extract store data\nconst orders = data.orders || [];\nconst inventoryLevels = data.inventory_levels || [];\n\n// --- Intent Classification Logic ---\nconst msg = customerMessage.toLowerCase();\n\nlet intent = 'GENERAL_SUPPORT';\nlet confidence = 0.6;\n\nif (msg.includes('refund') || msg.includes('return') || msg.includes('money back') || msg.includes('cancel')) {\n  intent = 'REFUND_REQUEST';\n  confidence = 0.95;\n} else if (msg.includes('order') || msg.includes('tracking') || msg.includes('shipped') || msg.includes('delivery') || msg.includes('where is')) {\n  intent = 'ORDER_INQUIRY';\n  confidence = 0.90;\n} else if (msg.includes('stock') || msg.includes('available') || msg.includes('in stock') || msg.includes('inventory') || msg.includes('restock')) {\n  intent = 'INVENTORY_CHECK';\n  confidence = 0.88;\n} else if (msg.includes('price') || msg.includes('discount') || msg.includes('coupon') || msg.includes('sale') || msg.includes('deal')) {\n  intent = 'PRICING_INQUIRY';\n  confidence = 0.85;\n}\n\n// --- Extract relevant order info ---\nconst latestOrder = orders.length > 0 ? orders[0] : null;\nconst orderSummary = latestOrder ? {\n  order_number: latestOrder.order_number || 'N/A',\n  financial_status: latestOrder.financial_status || 'N/A',\n  fulfillment_status: latestOrder.fulfillment_status || 'unfulfilled',\n  total_price: latestOrder.total_price || '0.00',\n  currency: latestOrder.currency || 'USD',\n  created_at: latestOrder.created_at || 'N/A',\n  tracking_number: latestOrder.fulfillments?.[0]?.tracking_number || null,\n  line_items: (latestOrder.line_items || []).map(i => ({ title: i.title, quantity: i.quantity, price: i.price }))\n} : null;\n\n// --- Low stock detection ---\nconst lowStockItems = inventoryLevels.filter(item => (item.available || 0) <= 5).map(item => ({\n  inventory_item_id: item.inventory_item_id,\n  available: item.available,\n  location_id: item.location_id\n}));\n\n// --- Eligibility checks ---\nconst isRefundEligible = latestOrder && \n  latestOrder.financial_status === 'paid' && \n  latestOrder.fulfillment_status !== 'fulfilled';\n\nconst daysSinceOrder = latestOrder ? \n  Math.floor((Date.now() - new Date(latestOrder.created_at).getTime()) / (1000 * 60 * 60 * 24)) : null;\n\nconst refundWindow = 30; // days\nconst withinRefundWindow = daysSinceOrder !== null && daysSinceOrder <= refundWindow;\n\n// --- Generate AI response text ---\nlet aiResponse = '';\nlet requiresEscalation = false;\nlet actionRequired = null;\n\nswitch (intent) {\n  case 'ORDER_INQUIRY':\n    if (orderSummary) {\n      const trackingInfo = orderSummary.tracking_number \n        ? `Your tracking number is **${orderSummary.tracking_number}**.` \n        : 'Your order is being prepared and a tracking number will be assigned soon.';\n      aiResponse = `Hi ${customerName}! 👋 I found your most recent order #${orderSummary.order_number}.\\n\\n` +\n        `📦 **Order Status:** ${orderSummary.fulfillment_status}\\n` +\n        `💳 **Payment:** ${orderSummary.financial_status}\\n` +\n        `💰 **Total:** ${orderSummary.currency} ${orderSummary.total_price}\\n` +\n        `📅 **Placed:** ${new Date(orderSummary.created_at).toLocaleDateString()}\\n\\n` +\n        `${trackingInfo}\\n\\nIs there anything else I can help you with?`;\n    } else {\n      aiResponse = `Hi ${customerName}! I couldn't find any recent orders linked to your email. Could you double-check your order email or provide your order number? I'm happy to look it up! 😊`;\n    }\n    break;\n\n  case 'REFUND_REQUEST':\n    if (orderSummary && isRefundEligible && withinRefundWindow) {\n      actionRequired = 'PROCESS_REFUND';\n      aiResponse = `Hi ${customerName}! I've reviewed your order #${orderSummary.order_number} and I'm processing your refund request now. ✅\\n\\n` +\n        `💰 **Refund Amount:** ${orderSummary.currency} ${orderSummary.total_price}\\n` +\n        `⏱️ **Processing Time:** 3–5 business days\\n\\nYou'll receive a confirmation email shortly. I'm sorry for any inconvenience!`;\n    } else if (orderSummary && !withinRefundWindow) {\n      requiresEscalation = true;\n      aiResponse = `Hi ${customerName}! I've reviewed your order #${orderSummary.order_number}. Unfortunately, it's been ${daysSinceOrder} days since your order was placed, which is outside our standard ${refundWindow}-day return window.\\n\\nI'm escalating this to our team for a manual review. You'll hear back within 24 hours! 🙏`;\n    } else {\n      requiresEscalation = true;\n      aiResponse = `Hi ${customerName}! I couldn't automatically process your refund request — this may need manual review by our team. I'm escalating this now and you'll hear back within 24 hours. Sorry for the trouble!`;\n    }\n    break;\n\n  case 'INVENTORY_CHECK':\n    if (lowStockItems.length > 0) {\n      actionRequired = 'SEND_STOCK_ALERT';\n      aiResponse = `Hi ${customerName}! Great question about availability. Some items in our catalog are running low and may sell out soon — I'd recommend grabbing them quickly! 🔥\\n\\nFor specific product availability, could you share the product name or SKU? I'll give you a precise answer!`;\n    } else {\n      aiResponse = `Hi ${customerName}! Great news — our inventory looks well-stocked right now. 🎉 Could you share the specific product you're interested in? I'll confirm exact availability for you!`;\n    }\n    break;\n\n  case 'PRICING_INQUIRY':\n    aiResponse = `Hi ${customerName}! Thanks for reaching out about pricing. 😊 Our current promotions and deals are always listed on our website. For exclusive discounts, signing up for our newsletter gets you 10% off your first order!\\n\\nIs there a specific product you're looking at? I can check if there are any active deals on it!`;\n    break;\n\n  default:\n    aiResponse = `Hi ${customerName}! Thanks for reaching out to our support team. 😊\\n\\nI'm here to help with:\\n• 📦 Order tracking and status\\n• 💰 Refunds and returns\\n• 📊 Product availability\\n• 🏷️ Pricing and promotions\\n\\nCould you tell me more about what you need? I'll get it sorted right away!`;\n}\n\n// --- Timestamp ---\nconst timestamp = new Date().toISOString();\nconst ticketId = `TKT-${Date.now()}`;\n\nreturn {\n  json: {\n    // Ticket identity\n    ticketId,\n    sessionId,\n    timestamp,\n\n    // Customer info\n    customerName,\n    customerEmail,\n    customerMessage,\n\n    // AI Analysis\n    intent,\n    confidence,\n    aiResponse,\n\n    // Actions\n    actionRequired,\n    requiresEscalation,\n\n    // Order context\n    orderSummary,\n    hasOrder: !!orderSummary,\n\n    // Inventory context\n    lowStockItems,\n    lowStockCount: lowStockItems.length,\n    hasLowStock: lowStockItems.length > 0,\n\n    // Refund eligibility\n    isRefundEligible: isRefundEligible && withinRefundWindow,\n    daysSinceOrder\n  }\n};"},"typeVersion":2},{"id":"86065a38-df0b-440d-883e-b0dc4959ce74","name":"Route by customer intent","type":"n8n-nodes-base.switch","position":[-192,432],"parameters":{"rules":{"values":[{"outputKey":"Refund Request","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"REFUND_REQUEST"}]},"renameOutput":true},{"outputKey":"Low Stock Alert","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"boolean","operation":"true"},"leftValue":"={{ $json.hasLowStock }}"}]},"renameOutput":true},{"outputKey":"Order & General Support","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"ORDER_INQUIRY"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"GENERAL_SUPPORT"},{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.intent }}","rightValue":"PRICING_INQUIRY"}]},"renameOutput":true}]},"options":{}},"typeVersion":3},{"id":"ca1327fa-d3b1-40d0-a928-291c95e5c1fc","name":"Process refund via Shopify API","type":"n8n-nodes-base.httpRequest","position":[32,160],"parameters":{"url":"=https://YOUR-STORE.myshopify.com/admin/api/2024-01/orders/{{ $json.orderSummary.order_number }}/refunds.json","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"bodyParameters":{"parameters":[{"name":"refund[notify]","value":"true"},{"name":"refund[note]","value":"=AI agent processed refund — Ticket {{ $json.ticketId }}"}]},"headerParameters":{"parameters":[{"name":"X-Shopify-Access-Token","value":"YOUR_SHOPIFY_ACCESS_TOKEN"},{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2},{"id":"95240f59-0595-4a61-93fa-5a84d329530c","name":"Send low stock alert to team","type":"n8n-nodes-base.httpRequest","position":[32,352],"parameters":{"url":"YOUR_SLACK_WEBHOOK_URL","method":"POST","options":{},"jsonBody":"={\n  \"text\": \"⚠️ *LOW STOCK ALERT — Action Required*\",\n  \"blocks\": [\n    {\n      \"type\": \"section\",\n      \"text\": {\n        \"type\": \"mrkdwn\",\n        \"text\": \"⚠️ *LOW STOCK DETECTED*\\n{{ $json.lowStockCount }} product(s) are running critically low (≤5 units).\\n\\n*Triggered by:* Customer inquiry from {{ $json.customerEmail }}\\n*Ticket:* {{ $json.ticketId }}\\n\\nPlease review inventory and reorder as needed.\"\n      }\n    }\n  ]\n}","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"cd30344d-18b1-45d7-8a88-fcb06ad0b9d2","name":"Store interaction in PostgreSQL","type":"n8n-nodes-base.postgres","position":[32,544],"parameters":{"table":"support_interactions","schema":{"__rl":true,"mode":"list","value":"public"},"columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{}},"credentials":{"postgres":{"id":"credential-id","name":"Postgres-test"}},"typeVersion":2.5},{"id":"b36154fa-ba51-43d2-b743-b2571756f856","name":"Escalate complex cases to human agent","type":"n8n-nodes-base.httpRequest","position":[32,736],"parameters":{"url":"YOUR_SLACK_WEBHOOK_URL","method":"POST","options":{},"jsonBody":"={\n  \"text\": \"🚨 *ESCALATION REQUIRED — Human Agent Needed*\",\n  \"blocks\": [\n    {\n      \"type\": \"section\",\n      \"text\": {\n        \"type\": \"mrkdwn\",\n        \"text\": \"🚨 *TICKET ESCALATION*\\n\\n*Ticket:* {{ $json.ticketId }}\\n*Customer:* {{ $json.customerName }} ({{ $json.customerEmail }})\\n*Intent:* {{ $json.intent }}\\n*Message:* {{ $json.customerMessage }}\\n\\n*AI Response Sent:* {{ $json.aiResponse }}\\n\\nPlease follow up with the customer within 24 hours.\"\n      }\n    }\n  ]\n}","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"8ad8faa7-eada-4f9b-aa1c-bd78b3a413fc","name":"Build final customer response","type":"n8n-nodes-base.code","position":[256,448],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Build the final HTML email response and Slack summary\nconst report = $input.item.json;\n\nconst intentEmoji = {\n  'ORDER_INQUIRY': '📦',\n  'REFUND_REQUEST': '💰',\n  'INVENTORY_CHECK': '📊',\n  'PRICING_INQUIRY': '🏷️',\n  'GENERAL_SUPPORT': '💬'\n}[report.intent] || '💬';\n\nconst statusColor = report.requiresEscalation ? '#f59e0b' \n  : report.actionRequired === 'PROCESS_REFUND' ? '#22c55e' \n  : '#3b82f6';\n\n// Build HTML email response\nconst emailHtml = `\n<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Support Reply — ${report.ticketId}</title>\n  <style>\n    body { font-family: Arial, sans-serif; color: #1e293b; margin: 0; padding: 0; background: #f8fafc; }\n    .container { max-width: 600px; margin: 24px auto; background: white; border-radius: 12px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.08); }\n    .header { background: #0f172a; color: white; padding: 24px; }\n    .header h1 { margin: 0 0 4px 0; font-size: 18px; }\n    .header p { margin: 0; opacity: 0.6; font-size: 12px; }\n    .badge { display: inline-block; padding: 4px 12px; border-radius: 20px; font-size: 12px; font-weight: bold; background: ${statusColor}; color: white; margin-top: 10px; }\n    .body { padding: 24px; }\n    .message-box { background: #f1f5f9; border-radius: 8px; padding: 16px; margin-bottom: 16px; white-space: pre-line; line-height: 1.6; }\n    .order-card { border: 1px solid #e2e8f0; border-radius: 8px; padding: 16px; margin-bottom: 16px; }\n    .order-card h3 { margin: 0 0 8px 0; font-size: 14px; color: #64748b; }\n    .order-row { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid #f1f5f9; font-size: 13px; }\n    .footer { background: #f8fafc; padding: 16px 24px; text-align: center; font-size: 11px; color: #94a3b8; border-top: 1px solid #e2e8f0; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <div class=\"header\">\n      <h1>${intentEmoji} Support Reply from Our Team</h1>\n      <p>Ticket ID: ${report.ticketId} &nbsp;|&nbsp; ${new Date(report.timestamp).toLocaleString()}</p>\n      <div class=\"badge\">${report.intent.replace('_', ' ')}</div>\n    </div>\n    <div class=\"body\">\n      <div class=\"message-box\">${report.aiResponse}</div>\n      ${report.orderSummary ? `\n      <div class=\"order-card\">\n        <h3>📦 Your Order Details</h3>\n        <div class=\"order-row\"><span>Order Number</span><span>#${report.orderSummary.order_number}</span></div>\n        <div class=\"order-row\"><span>Status</span><span>${report.orderSummary.fulfillment_status}</span></div>\n        <div class=\"order-row\"><span>Payment</span><span>${report.orderSummary.financial_status}</span></div>\n        <div class=\"order-row\"><span>Total</span><span>${report.orderSummary.currency} ${report.orderSummary.total_price}</span></div>\n        ${report.orderSummary.tracking_number ? `<div class=\"order-row\"><span>Tracking</span><span>${report.orderSummary.tracking_number}</span></div>` : ''}\n      </div>` : ''}\n    </div>\n    <div class=\"footer\">This is an automated response powered by AI &nbsp;|&nbsp; Reply to this email to speak with a human agent</div>\n  </div>\n</body>\n</html>`;\n\n// Slack summary message\nconst slackSummary = `${intentEmoji} *[${report.ticketId}] ${report.intent.replace(/_/g, ' ')}*\\n\\n` +\n  `*Customer:* ${report.customerName} (${report.customerEmail})\\n` +\n  `*Message:* ${report.customerMessage}\\n` +\n  `*AI Confidence:* ${Math.round(report.confidence * 100)}%\\n` +\n  `*Action Taken:* ${report.actionRequired || 'Response sent'}\\n` +\n  `*Escalated:* ${report.requiresEscalation ? 'Yes ⚠️' : 'No ✅'}`;\n\nreturn {\n  json: {\n    ...report,\n    emailHtml,\n    slackSummary,\n    emailSubject: `${intentEmoji} [${report.ticketId}] Re: Your support request — ${report.intent.replace(/_/g, ' ')}`,\n    shouldSendEmail: !!report.customerEmail,\n    shouldNotifySlack: true\n  }\n};"},"typeVersion":2},{"id":"b88a49b6-54b9-4f5d-b008-b1b94c8fc4a3","name":"Email AI response to customer","type":"n8n-nodes-base.emailSend","position":[480,448],"webhookId":"9ba1b2e4-bb19-4a9c-9070-fdf88ad3eaeb","parameters":{"html":"={{ $json.emailHtml }}","options":{},"subject":"={{ $json.emailSubject }}","toEmail":"={{ $json.customerEmail }}","fromEmail":"user@example.com"},"credentials":{"smtp":{"id":"credential-id","name":"SMTP -test"}},"typeVersion":2.1},{"id":"0972be52-8ddb-4fd7-8240-dce3590af4d4","name":"Post interaction summary to Slack","type":"n8n-nodes-base.httpRequest","position":[480,640],"parameters":{"url":"YOUR_SLACK_WEBHOOK_URL","method":"POST","options":{},"jsonBody":"={\n  \"text\": \"{{ $json.emailSubject }}\",\n  \"blocks\": [\n    {\n      \"type\": \"section\",\n      \"text\": {\n        \"type\": \"mrkdwn\",\n        \"text\": \"{{ $json.slackSummary }}\"\n      }\n    }\n  ]\n}","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"7002e8d3-523f-4ff1-a00d-86705589c36c","name":"Log success and track agent statistics","type":"n8n-nodes-base.code","position":[704,544],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Log successful AI agent interaction and track statistics\nconst timestamp = new Date().toISOString();\nconst report = $input.item.json;\n\nconsole.log(`✅ AI AGENT SUCCESS: Ticket ${report.ticketId} | Intent: ${report.intent} | Customer: ${report.customerEmail} | Escalated: ${report.requiresEscalation} | Time: ${timestamp}`);\n\n// Cumulative statistics\nconst stats = $getWorkflowStaticData('global').agentStats || {\n  totalTickets: 0,\n  byIntent: {},\n  refundsProcessed: 0,\n  stockAlertsTriggered: 0,\n  escalations: 0,\n  lastProcessed: null\n};\n\nstats.totalTickets++;\nstats.byIntent[report.intent] = (stats.byIntent[report.intent] || 0) + 1;\nif (report.actionRequired === 'PROCESS_REFUND') stats.refundsProcessed++;\nif (report.actionRequired === 'SEND_STOCK_ALERT') stats.stockAlertsTriggered++;\nif (report.requiresEscalation) stats.escalations++;\nstats.lastProcessed = timestamp;\n\n$getWorkflowStaticData('global').agentStats = stats;\n\nreturn {\n  json: {\n    success: true,\n    ticketId: report.ticketId,\n    intent: report.intent,\n    customerEmail: report.customerEmail,\n    actionTaken: report.actionRequired || 'RESPONSE_SENT',\n    escalated: report.requiresEscalation,\n    timestamp,\n    cumulativeStats: stats\n  }\n};"},"typeVersion":2},{"id":"80ffd0b8-6c83-4cc0-afe3-3b9b37054f80","name":"Send immediate webhook acknowledgement","type":"n8n-nodes-base.respondToWebhook","position":[480,256],"parameters":{"options":{},"respondWith":"json","responseBody":"={{ JSON.stringify({ success: true, ticket_id: $json.ticketId, message: 'Your request has been received and our AI is processing it. You will receive a reply via email shortly.', intent_detected: $json.intent }) }}"},"typeVersion":1.1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"9a7cc74c-d6d0-4935-953d-2046adfe7dab","connections":{"Route by customer intent":{"main":[[{"node":"Process refund via Shopify API","type":"main","index":0},{"node":"Store interaction in PostgreSQL","type":"main","index":0},{"node":"Escalate complex cases to human agent","type":"main","index":0}],[{"node":"Send low stock alert to team","type":"main","index":0},{"node":"Store interaction in PostgreSQL","type":"main","index":0}],[{"node":"Store interaction in PostgreSQL","type":"main","index":0}]]},"Send low stock alert to team":{"main":[[{"node":"Build final customer response","type":"main","index":0}]]},"Build final customer response":{"main":[[{"node":"Send immediate webhook acknowledgement","type":"main","index":0},{"node":"Email AI response to customer","type":"main","index":0},{"node":"Post interaction summary to Slack","type":"main","index":0}]]},"Email AI response to customer":{"main":[[{"node":"Log success and track agent statistics","type":"main","index":0}]]},"Merge order and inventory data":{"main":[[{"node":"AI agent analyzes query and classifies intent","type":"main","index":0}]]},"Process refund via Shopify API":{"main":[[{"node":"Build final customer response","type":"main","index":0}]]},"Store interaction in PostgreSQL":{"main":[[{"node":"Build final customer response","type":"main","index":0}]]},"Fetch order details from Shopify":{"main":[[{"node":"Merge order and inventory data","type":"main","index":0}]]},"Receive customer support request":{"main":[[{"node":"Fetch order details from Shopify","type":"main","index":0},{"node":"Fetch inventory levels from Shopify","type":"main","index":0}]]},"Post interaction summary to Slack":{"main":[[{"node":"Log success and track agent statistics","type":"main","index":0}]]},"Fetch inventory levels from Shopify":{"main":[[{"node":"Merge order and inventory data","type":"main","index":1}]]},"Escalate complex cases to human agent":{"main":[[{"node":"Build final customer response","type":"main","index":0}]]},"AI agent analyzes query and classifies intent":{"main":[[{"node":"Route by customer intent","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":20,"nodeTypes":{"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.postgres":{"count":1},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":6},"n8n-nodes-base.respondToWebhook":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Oneclick AI Squad","username":"oneclick-ai","bio":"The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.","verified":true,"links":["https://www.oneclickitsolution.com/"],"avatar":"https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?r=pg&d=retro&size=200"},"nodes":[{"id":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":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":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":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":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"}]}],"categories":[{"id":40,"name":"Support Chatbot"},{"id":47,"name":"AI Chatbot"}],"image":[]}}