{
  "workflow": {
    "id": 6431,
    "name": "Build a support ticket analytics dashboard with ScrapeGraphAI, Google Sheets & Slack alerts",
    "views": 346,
    "recentViews": 0,
    "totalViews": 346,
    "createdAt": "2025-07-25T11:02:22.460Z",
    "description": "# Customer Support Analysis Dashboard with AI and Automated Insights\n\n## 🎯 Target Audience\n- Customer support managers and team leads\n- Customer success teams monitoring satisfaction\n- Product managers analyzing user feedback\n- Business analysts measuring support metrics\n- Operations managers optimizing support processes\n- Quality assurance teams monitoring support quality\n- Customer experience (CX) professionals\n\n## 🚀 Problem Statement\nManual analysis of customer support tickets and feedback is time-consuming and often misses critical patterns or emerging issues. This template solves the challenge of automatically collecting, analyzing, and visualizing customer support data to identify trends, improve response times, and enhance overall customer satisfaction.\n\n## 🔧 How it Works\n\nThis workflow automatically monitors customer support channels using AI-powered analysis, processes tickets and feedback, and provides actionable insights for improving customer support operations.\n\n### Key Components\n\n1. **Scheduled Trigger** - Runs the workflow at specified intervals to maintain real-time monitoring\n2. **AI-Powered Ticket Analysis** - Uses advanced NLP to categorize, prioritize, and analyze support tickets\n3. **Multi-Channel Integration** - Monitors email, chat, help desk systems, and social media\n4. **Automated Insights** - Generates reports on trends, response times, and satisfaction scores\n5. **Dashboard Integration** - Stores all data in Google Sheets for comprehensive analysis and reporting\n\n## 📊 Google Sheets Column Specifications\n\nThe template creates the following columns in your Google Sheets:\n\n| Column | Data Type | Description | Example |\n|--------|-----------|-------------|---------|\n| **timestamp** | DateTime | When the ticket was processed | \"2024-01-15T10:30:00Z\" |\n| **ticket_id** | String | Unique ticket identifier | \"SUP-2024-001234\" |\n| **customer_email** | String | Customer contact information | \"john@example.com\" |\n| **subject** | String | Ticket subject line | \"Login issues with new app\" |\n| **description** | String | Full ticket description | \"I can't log into the mobile app...\" |\n| **category** | String | AI-categorized ticket type | \"Technical Issue\" |\n| **priority** | String | Calculated priority level | \"High\" |\n| **sentiment_score** | Number | Customer sentiment (-1 to 1) | -0.3 |\n| **urgency_indicator** | String | Urgency classification | \"Immediate\" |\n| **response_time** | Number | Time to first response (hours) | 2.5 |\n| **resolution_time** | Number | Time to resolution (hours) | 8.0 |\n| **satisfaction_score** | Number | Customer satisfaction rating | 4.2 |\n| **agent_assigned** | String | Support agent name | \"Sarah Johnson\" |\n| **status** | String | Current ticket status | \"Resolved\" |\n\n## 🛠️ Setup Instructions\n\n**Estimated setup time: 20-25 minutes**\n\n### Prerequisites\n- n8n instance with community nodes enabled\n- ScrapeGraphAI API account and credentials\n- Google Sheets account with API access\n- Help desk system API access (Zendesk, Freshdesk, etc.)\n- Email service integration (optional)\n\n### Step-by-Step Configuration\n\n#### 1. Install Community Nodes\n```bash\n# Install required community nodes\nnpm install n8n-nodes-scrapegraphai\nnpm install n8n-nodes-slack\n```\n\n#### 2. Configure ScrapeGraphAI Credentials\n- Navigate to Credentials in your n8n instance\n- Add new ScrapeGraphAI API credentials\n- Enter your API key from ScrapeGraphAI dashboard\n- Test the connection to ensure it's working\n\n#### 3. Set up Google Sheets Connection\n- Add Google Sheets OAuth2 credentials\n- Grant necessary permissions for spreadsheet access\n- Create a new spreadsheet for customer support analysis\n- Configure the sheet name (default: \"Support Analysis\")\n\n#### 4. Configure Support System Integration\n- Update the `websiteUrl` parameters in ScrapeGraphAI nodes\n- Add URLs for your help desk system or support portal\n- Customize the user prompt to extract specific ticket data\n- Set up categories and priority thresholds\n\n#### 5. Set up Notification Channels\n- Configure Slack webhook or API credentials for alerts\n- Set up email service credentials for critical issues\n- Define alert thresholds for different priority levels\n- Test notification delivery\n\n#### 6. Configure Schedule Trigger\n- Set analysis frequency (hourly, daily, etc.)\n- Choose appropriate time zones for your business hours\n- Consider support system rate limits\n\n#### 7. Test and Validate\n- Run the workflow manually to verify all connections\n- Check Google Sheets for proper data formatting\n- Test ticket analysis with sample data\n\n## 🔄 Workflow Customization Options\n\n### Modify Analysis Targets\n- Add or remove support channels (email, chat, social media)\n- Change ticket categories and priority criteria\n- Adjust analysis frequency based on ticket volume\n\n### Extend Analysis Capabilities\n- Add more sophisticated sentiment analysis\n- Implement customer churn prediction models\n- Include agent performance analytics\n- Add automated response suggestions\n\n### Customize Alert System\n- Set different thresholds for different ticket types\n- Create tiered alert systems (info, warning, critical)\n- Add SLA breach notifications\n- Include trend analysis alerts\n\n### Output Customization\n- Add data visualization and reporting features\n- Implement support trend charts and graphs\n- Create executive dashboards with key metrics\n- Add customer satisfaction trend analysis\n\n## 📈 Use Cases\n\n- **Support Ticket Management**: Automatically categorize and prioritize tickets\n- **Response Time Optimization**: Identify bottlenecks in support processes\n- **Customer Satisfaction Monitoring**: Track and improve satisfaction scores\n- **Agent Performance Analysis**: Monitor and improve agent productivity\n- **Product Issue Detection**: Identify recurring problems and feature requests\n- **SLA Compliance**: Ensure support teams meet service level agreements\n\n## 🚨 Important Notes\n\n- Respect support system API rate limits and terms of service\n- Implement appropriate delays between requests to avoid rate limiting\n- Regularly review and update your analysis parameters\n- Monitor API usage to manage costs effectively\n- Keep your credentials secure and rotate them regularly\n- Consider data privacy and GDPR compliance for customer data\n\n## 🔧 Troubleshooting\n\n**Common Issues:**\n- ScrapeGraphAI connection errors: Verify API key and account status\n- Google Sheets permission errors: Check OAuth2 scope and permissions\n- Ticket parsing errors: Review the Code node's JavaScript logic\n- Rate limiting: Adjust analysis frequency and implement delays\n- Alert delivery failures: Check notification service credentials\n\n**Support Resources:**\n- ScrapeGraphAI documentation and API reference\n- n8n community forums for workflow assistance\n- Google Sheets API documentation for advanced configurations\n- Help desk system API documentation\n- Customer support analytics best practices\n",
    "workflow": {
      "id": "VhEwspDqzu7ssFVE",
      "meta": {
        "instanceId": "f4b0efaa33080e7774e0d9285c40c7abcd2c6f7cf1a8b901fa7106170dd4cda3"
      },
      "name": "My workflow 2",
      "tags": [],
      "nodes": [
        {
          "id": "3b4ed448-99f2-41f3-b7fc-e5397dc6fac8",
          "name": "Automated Support Monitor Trigger",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            -288,
            608
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "hours"
                }
              ]
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "51925e8e-1ff5-435a-8454-1511b9e94f52",
          "name": "Support Ticket Webhook Trigger",
          "type": "n8n-nodes-base.webhook",
          "position": [
            -288,
            400
          ],
          "webhookId": "support-ticket-webhook",
          "parameters": {
            "path": "support-ticket-webhook",
            "options": {
              "noResponseBody": false
            },
            "httpMethod": "POST"
          },
          "typeVersion": 1.1
        },
        {
          "id": "1216484d-7002-4116-a265-70ef1f20fe65",
          "name": "AI Support Dashboard Scraper",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            128,
            304
          ],
          "parameters": {
            "userPrompt": "Extract all open support tickets from this support dashboard. Focus on ticket details, customer information, and current status. Use this schema for response: { \"request_id\": \"unique_id\", \"status\": \"completed\", \"platform\": \"Support System\", \"tickets\": [{ \"ticket_id\": \"TICKET-12345\", \"customer_name\": \"John Smith\", \"customer_email\": \"user@example.com\", \"customer_tier\": \"Premium\", \"subject\": \"Login Issues\", \"description\": \"Full ticket description here\", \"category\": \"Technical\", \"priority\": \"High\", \"status\": \"Open\", \"created_date\": \"2024-01-15T10:30:00Z\", \"last_updated\": \"2024-01-15T14:20:00Z\", \"assigned_agent\": \"Agent Name\", \"tags\": [\"login\", \"authentication\"], \"customer_satisfaction_score\": null, \"response_count\": 3, \"escalated\": false, \"sla_breach\": false, \"estimated_resolution_time\": \"2024-01-16T10:30:00Z\" }] }",
            "websiteUrl": "https://your-support-system.com/tickets/dashboard?status=open"
          },
          "typeVersion": 1
        },
        {
          "id": "ca23168f-68a1-48a3-af78-493f32b57270",
          "name": "AI Closed Tickets Analyzer",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            128,
            512
          ],
          "parameters": {
            "userPrompt": "Extract recently closed support tickets for performance analysis. Focus on resolution metrics and customer feedback. Use this schema: { \"request_id\": \"unique_id\", \"status\": \"completed\", \"platform\": \"Support System\", \"tickets\": [{ \"ticket_id\": \"TICKET-67890\", \"customer_name\": \"Jane Doe\", \"customer_email\": \"user@example.com\", \"customer_tier\": \"Standard\", \"subject\": \"Billing Question\", \"description\": \"Full ticket description\", \"category\": \"Billing\", \"priority\": \"Medium\", \"status\": \"Closed\", \"created_date\": \"2024-01-14T09:00:00Z\", \"closed_date\": \"2024-01-15T11:30:00Z\", \"resolution_time_hours\": 26.5, \"assigned_agent\": \"Agent Name\", \"customer_satisfaction_score\": 4.5, \"resolution_summary\": \"Issue resolved by updating billing information\", \"tags\": [\"billing\", \"account\"], \"first_response_time_minutes\": 15, \"total_responses\": 5, \"escalated\": false }] }",
            "websiteUrl": "https://your-support-system.com/tickets/closed?period=24h"
          },
          "typeVersion": 1
        },
        {
          "id": "b0e5acf3-809a-4fcf-9600-a6174525f282",
          "name": "AI Knowledge Base Analyzer",
          "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
          "position": [
            128,
            704
          ],
          "parameters": {
            "userPrompt": "Extract knowledge base articles and FAQ data to identify common issues and self-service opportunities. Use this schema: { \"request_id\": \"unique_id\", \"status\": \"completed\", \"platform\": \"Knowledge Base\", \"articles\": [{ \"article_id\": \"KB-001\", \"title\": \"How to Reset Password\", \"category\": \"Account Management\", \"views_count\": 1250, \"helpful_votes\": 89, \"not_helpful_votes\": 12, \"last_updated\": \"2024-01-10T00:00:00Z\", \"tags\": [\"password\", \"account\"], \"related_tickets_count\": 45, \"self_service_success_rate\": 0.75 }] }",
            "websiteUrl": "https://your-support-system.com/knowledge-base/search?q=frequently-asked"
          },
          "typeVersion": 1
        },
        {
          "id": "1e7fc7c7-1c39-4708-b46a-ad29aaf8cbac",
          "name": "Advanced Support Analytics & Intelligence",
          "type": "n8n-nodes-base.code",
          "notes": "Processes support tickets with\nadvanced analytics, SLA monitoring,\nand escalation intelligence",
          "position": [
            720,
            512
          ],
          "parameters": {
            "jsCode": "// Advanced Customer Support Analytics & Intelligence Processing\nconst inputData = $input.all();\nconst processedTickets = [];\nconst analyticsData = [];\n\n// Configuration for support analytics and escalation rules\nconst supportConfig = {\n  slaThresholds: {\n    'Critical': { first_response_minutes: 15, resolution_hours: 4 },\n    'High': { first_response_minutes: 30, resolution_hours: 8 },\n    'Medium': { first_response_minutes: 120, resolution_hours: 24 },\n    'Low': { first_response_minutes: 480, resolution_hours: 72 }\n  },\n  customerTiers: {\n    'Enterprise': { priority_multiplier: 1.5, escalation_threshold: 0.5 },\n    'Premium': { priority_multiplier: 1.2, escalation_threshold: 0.7 },\n    'Standard': { priority_multiplier: 1.0, escalation_threshold: 1.0 },\n    'Basic': { priority_multiplier: 0.8, escalation_threshold: 1.2 }\n  },\n  categoryPatterns: {\n    'Technical': {\n      keywords: ['error', 'bug', 'not working', 'crash', 'performance', 'integration'],\n      avg_resolution_hours: 12,\n      escalation_rate: 0.15\n    },\n    'Billing': {\n      keywords: ['payment', 'invoice', 'charge', 'refund', 'subscription', 'billing'],\n      avg_resolution_hours: 6,\n      escalation_rate: 0.08\n    },\n    'Account': {\n      keywords: ['login', 'password', 'access', 'permissions', 'account', 'profile'],\n      avg_resolution_hours: 4,\n      escalation_rate: 0.05\n    },\n    'Feature Request': {\n      keywords: ['feature', 'enhancement', 'improvement', 'suggestion', 'request'],\n      avg_resolution_hours: 48,\n      escalation_rate: 0.03\n    },\n    'General Inquiry': {\n      keywords: ['question', 'information', 'how to', 'help', 'support'],\n      avg_resolution_hours: 8,\n      escalation_rate: 0.04\n    }\n  },\n  escalationTriggers: {\n    sla_breach: true,\n    high_priority_long_wait: true,\n    customer_tier_violation: true,\n    multiple_responses_no_resolution: true,\n    negative_sentiment: true\n  }\n};\n\n// Advanced ticket categorization using AI-like pattern matching\nfunction categorizeTicket(subject, description) {\n  const fullText = `${subject} ${description}`.toLowerCase();\n  let bestMatch = { category: 'General Inquiry', confidence: 0 };\n  \n  Object.entries(supportConfig.categoryPatterns).forEach(([category, config]) => {\n    let matchScore = 0;\n    config.keywords.forEach(keyword => {\n      if (fullText.includes(keyword)) {\n        matchScore += 1;\n      }\n    });\n    \n    const confidence = matchScore / config.keywords.length;\n    if (confidence > bestMatch.confidence) {\n      bestMatch = { category, confidence: Math.round(confidence * 100) };\n    }\n  });\n  \n  return bestMatch;\n}\n\n// Calculate SLA compliance and breach detection\nfunction calculateSLAMetrics(ticket) {\n  const priority = ticket.priority || 'Medium';\n  const slaConfig = supportConfig.slaThresholds[priority] || supportConfig.slaThresholds['Medium'];\n  const customerTier = supportConfig.customerTiers[ticket.customer_tier] || supportConfig.customerTiers['Standard'];\n  \n  // Adjust SLA based on customer tier\n  const adjustedSLA = {\n    first_response_minutes: Math.floor(slaConfig.first_response_minutes * customerTier.escalation_threshold),\n    resolution_hours: Math.floor(slaConfig.resolution_hours * customerTier.escalation_threshold)\n  };\n  \n  const createdTime = new Date(ticket.created_date);\n  const currentTime = new Date();\n  const lastUpdatedTime = new Date(ticket.last_updated || ticket.created_date);\n  \n  // Calculate time metrics\n  const ageInMinutes = (currentTime - createdTime) / (1000 * 60);\n  const ageInHours = ageInMinutes / 60;\n  const timeSinceLastUpdate = (currentTime - lastUpdatedTime) / (1000 * 60);\n  \n  // SLA breach detection\n  const slaBreaches = {\n    first_response_breach: ticket.response_count === 0 && ageInMinutes > adjustedSLA.first_response_minutes,\n    resolution_breach: ticket.status !== 'Closed' && ageInHours > adjustedSLA.resolution_hours,\n    update_breach: timeSinceLastUpdate > (adjustedSLA.first_response_minutes * 2)\n  };\n  \n  const overallSLABreach = Object.values(slaBreaches).some(breach => breach);\n  \n  return {\n    age_minutes: Math.round(ageInMinutes),\n    age_hours: Math.round(ageInHours * 100) / 100,\n    time_since_last_update_minutes: Math.round(timeSinceLastUpdate),\n    sla_thresholds: adjustedSLA,\n    sla_breaches: slaBreaches,\n    overall_sla_breach: overallSLABreach,\n    sla_status: overallSLABreach ? 'Breached' : 'On Track'\n  };\n}\n\n// Advanced escalation logic\nfunction calculateEscalationScore(ticket, slaMetrics, categorization) {\n  let escalationScore = 0;\n  const escalationReasons = [];\n  \n  // SLA breach escalation\n  if (slaMetrics.overall_sla_breach) {\n    escalationScore += 25;\n    escalationReasons.push('SLA Breach Detected');\n  }\n  \n  // Priority-based escalation\n  const priorityScores = { 'Critical': 20, 'High': 15, 'Medium': 5, 'Low': 0 };\n  escalationScore += priorityScores[ticket.priority] || 0;\n  \n  // Customer tier escalation\n  const tierScores = { 'Enterprise': 15, 'Premium': 10, 'Standard': 5, 'Basic': 0 };\n  escalationScore += tierScores[ticket.customer_tier] || 0;\n  \n  // Age-based escalation\n  if (slaMetrics.age_hours > 48) {\n    escalationScore += 15;\n    escalationReasons.push('Ticket Age Exceeds 48 Hours');\n  } else if (slaMetrics.age_hours > 24) {\n    escalationScore += 10;\n    escalationReasons.push('Ticket Age Exceeds 24 Hours');\n  }\n  \n  // Response pattern analysis\n  if (ticket.response_count > 5 && ticket.status !== 'Closed') {\n    escalationScore += 12;\n    escalationReasons.push('Multiple Responses Without Resolution');\n  }\n  \n  // Already escalated penalty\n  if (ticket.escalated) {\n    escalationScore += 20;\n    escalationReasons.push('Previously Escalated');\n  }\n  \n  // Technical complexity\n  if (categorization.category === 'Technical' && slaMetrics.age_hours > 8) {\n    escalationScore += 8;\n    escalationReasons.push('Complex Technical Issue');\n  }\n  \n  // Determine escalation level\n  let escalationLevel = 'None';\n  let requiresEscalation = false;\n  \n  if (escalationScore >= 50) {\n    escalationLevel = 'Critical - Immediate Manager Attention';\n    requiresEscalation = true;\n  } else if (escalationScore >= 35) {\n    escalationLevel = 'High - Team Lead Review';\n    requiresEscalation = true;\n  } else if (escalationScore >= 20) {\n    escalationLevel = 'Medium - Senior Agent Assignment';\n    requiresEscalation = true;\n  }\n  \n  return {\n    escalation_score: escalationScore,\n    escalation_level: escalationLevel,\n    requires_escalation: requiresEscalation,\n    escalation_reasons: escalationReasons\n  };\n}\n\n// Performance analytics calculation\nfunction calculatePerformanceMetrics(tickets) {\n  const totalTickets = tickets.length;\n  if (totalTickets === 0) return {};\n  \n  const closedTickets = tickets.filter(t => t.status === 'Closed');\n  const openTickets = tickets.filter(t => t.status !== 'Closed');\n  \n  // Resolution time analysis\n  const resolutionTimes = closedTickets\n    .filter(t => t.resolution_time_hours)\n    .map(t => t.resolution_time_hours);\n  \n  const avgResolutionTime = resolutionTimes.length > 0 \n    ? resolutionTimes.reduce((a, b) => a + b, 0) / resolutionTimes.length \n    : 0;\n  \n  // Customer satisfaction analysis\n  const satisfactionScores = closedTickets\n    .filter(t => t.customer_satisfaction_score)\n    .map(t => t.customer_satisfaction_score);\n  \n  const avgSatisfactionScore = satisfactionScores.length > 0\n    ? satisfactionScores.reduce((a, b) => a + b, 0) / satisfactionScores.length\n    : 0;\n  \n  // Category distribution\n  const categoryDistribution = {};\n  tickets.forEach(ticket => {\n    const category = ticket.ai_category || ticket.category || 'Unknown';\n    categoryDistribution[category] = (categoryDistribution[category] || 0) + 1;\n  });\n  \n  return {\n    total_tickets: totalTickets,\n    open_tickets: openTickets.length,\n    closed_tickets: closedTickets.length,\n    resolution_rate: Math.round((closedTickets.length / totalTickets) * 100),\n    avg_resolution_time_hours: Math.round(avgResolutionTime * 100) / 100,\n    avg_satisfaction_score: Math.round(avgSatisfactionScore * 100) / 100,\n    category_distribution: categoryDistribution,\n    escalation_rate: Math.round((tickets.filter(t => t.requires_escalation).length / totalTickets) * 100)\n  };\n}\n\n// Process each input (open tickets, closed tickets, knowledge base)\ninputData.forEach(input => {\n  if (input.json.result && input.json.result.tickets) {\n    const platform = input.json.result.platform || 'Support System';\n    \n    input.json.result.tickets.forEach(ticket => {\n      const categorization = categorizeTicket(ticket.subject, ticket.description);\n      const slaMetrics = calculateSLAMetrics(ticket);\n      const escalationAnalysis = calculateEscalationScore(ticket, slaMetrics, categorization);\n      \n      processedTickets.push({\n        json: {\n          // Ticket Identification\n          ticket_id: ticket.ticket_id,\n          platform: platform,\n          status: ticket.status,\n          created_date: ticket.created_date,\n          last_updated: ticket.last_updated,\n          closed_date: ticket.closed_date,\n          \n          // Customer Information\n          customer_name: ticket.customer_name,\n          customer_email: ticket.customer_email,\n          customer_tier: ticket.customer_tier || 'Standard',\n          \n          // Ticket Details\n          subject: ticket.subject,\n          description: ticket.description,\n          priority: ticket.priority || 'Medium',\n          original_category: ticket.category,\n          ai_category: categorization.category,\n          ai_categorization_confidence: categorization.confidence,\n          \n          // Agent and Assignment\n          assigned_agent: ticket.assigned_agent,\n          response_count: ticket.response_count || 0,\n          \n          // Time and SLA Metrics\n          age_minutes: slaMetrics.age_minutes,\n          age_hours: slaMetrics.age_hours,\n          time_since_last_update_minutes: slaMetrics.time_since_last_update_minutes,\n          sla_status: slaMetrics.sla_status,\n          sla_breach: slaMetrics.overall_sla_breach,\n          first_response_time_minutes: ticket.first_response_time_minutes,\n          resolution_time_hours: ticket.resolution_time_hours,\n          \n          // Escalation Analysis\n          escalation_score: escalationAnalysis.escalation_score,\n          escalation_level: escalationAnalysis.escalation_level,\n          requires_escalation: escalationAnalysis.requires_escalation,\n          escalation_reasons: escalationAnalysis.escalation_reasons,\n          previously_escalated: ticket.escalated || false,\n          \n          // Performance Metrics\n          customer_satisfaction_score: ticket.customer_satisfaction_score,\n          resolution_summary: ticket.resolution_summary,\n          \n          // Additional Context\n          tags: ticket.tags || [],\n          estimated_resolution_time: ticket.estimated_resolution_time,\n          \n          // Analytics Metadata\n          processed_at: new Date().toISOString(),\n          analytics_session: `analytics_${new Date().toISOString().split('T')[0].replace(/-/g, '')}`\n        }\n      });\n    });\n  }\n  \n  // Process knowledge base data\n  if (input.json.result && input.json.result.articles) {\n    const kbAnalytics = {\n      total_articles: input.json.result.articles.length,\n      high_traffic_articles: input.json.result.articles.filter(a => a.views_count > 1000).length,\n      self_service_opportunities: input.json.result.articles.filter(a => a.related_tickets_count > 20).length\n    };\n    \n    analyticsData.push({\n      json: {\n        analytics_type: 'knowledge_base',\n        data: kbAnalytics,\n        processed_at: new Date().toISOString()\n      }\n    });\n  }\n});\n\n// Generate overall performance analytics\nif (processedTickets.length > 0) {\n  const overallMetrics = calculatePerformanceMetrics(processedTickets.map(t => t.json));\n  analyticsData.push({\n    json: {\n      analytics_type: 'performance_summary',\n      data: overallMetrics,\n      processed_at: new Date().toISOString()\n    }\n  });\n}\n\n// Return both processed tickets and analytics data\nreturn [...processedTickets, ...analyticsData];"
          },
          "notesInFlow": true,
          "typeVersion": 2
        },
        {
          "id": "bdc4262f-f379-4b13-810b-d8f5c229656f",
          "name": "Google Sheets Support Analytics Dashboard",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            1520,
            512
          ],
          "parameters": {
            "columns": {
              "value": {},
              "schema": [
                {
                  "id": "ticket_id",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Ticket ID",
                  "defaultMatch": true,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "customer_name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Customer",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "customer_tier",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Customer Tier",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "subject",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Subject",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "priority",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Priority",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "ai_category",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "AI Category",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "status",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Status",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "age_hours",
                  "type": "number",
                  "display": true,
                  "required": false,
                  "displayName": "Age (Hours)",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "sla_status",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "SLA Status",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "escalation_level",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Escalation Level",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "requires_escalation",
                  "type": "boolean",
                  "display": true,
                  "required": false,
                  "displayName": "Requires Escalation",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "assigned_agent",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Assigned Agent",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "customer_satisfaction_score",
                  "type": "number",
                  "display": true,
                  "required": false,
                  "displayName": "CSAT Score",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                }
              ],
              "mappingMode": "autoMapInputData",
              "matchingColumns": [
                "ticket_id"
              ]
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit#gid=0",
              "cachedResultName": "Support Data"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit#gid=0",
              "cachedResultName": "Support Analytics Dashboard"
            },
            "authentication": "serviceAccount"
          },
          "typeVersion": 4.4
        },
        {
          "id": "8bcab229-4e1e-4733-8c15-0cad5d52790e",
          "name": "Critical Escalation Filter",
          "type": "n8n-nodes-base.if",
          "position": [
            720,
            256
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "conditions": [
                {
                  "id": "critical-escalation",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.escalation_level }}",
                  "rightValue": "Critical - Immediate Manager Attention"
                },
                {
                  "id": "sla-breach",
                  "operator": {
                    "type": "boolean",
                    "operation": "true"
                  },
                  "leftValue": "={{ $json.sla_breach }}",
                  "rightValue": true
                },
                {
                  "id": "high-tier-customer",
                  "operator": {
                    "type": "boolean",
                    "operation": "true"
                  },
                  "leftValue": "={{ $json.customer_tier === 'Enterprise' && $json.requires_escalation }}",
                  "rightValue": true
                }
              ],
              "combineOperation": "any"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "e89856d6-57c0-4045-8436-7ec0a0b7dcec",
          "name": "Slack Manager Escalation Alert",
          "type": "n8n-nodes-base.slack",
          "position": [
            1120,
            256
          ],
          "webhookId": "ebf5c02f-bca1-48ac-9347-d42e53db23ea",
          "parameters": {
            "text": "🚨 **SUPPORT ESCALATION ALERT** 🚨\n\n{% if $json.escalation_level contains 'Critical' %}🔴 **CRITICAL ESCALATION REQUIRED** 🔴{% else %}⚠️ **HIGH PRIORITY TICKET** ⚠️{% endif %}\n\n**Ticket**: {{ $json.ticket_id }}\n**Customer**: {{ $json.customer_name }} ({{ $json.customer_tier }} Tier)\n**Subject**: {{ $json.subject }}\n\n**Priority**: {{ $json.priority }}\n**Category**: {{ $json.ai_category }} ({{ $json.ai_categorization_confidence }}% confidence)\n**Assigned Agent**: {{ $json.assigned_agent || 'Unassigned' }}\n\n**Time Metrics**:\n⏰ **Ticket Age**: {{ $json.age_hours }} hours\n{% if $json.sla_breach %}🔴 **SLA STATUS**: BREACHED{% else %}🟢 **SLA STATUS**: {{ $json.sla_status }}{% endif %}\n⏱️ **Time Since Last Update**: {{ $json.time_since_last_update_minutes }} minutes\n\n**Escalation Analysis**:\n📊 **Escalation Score**: {{ $json.escalation_score }}/100\n🎯 **Escalation Level**: {{ $json.escalation_level }}\n\n**Why This Requires Attention**:\n{% for reason in $json.escalation_reasons %}- {{ reason }}\n{% endfor %}\n\n**Customer Context**:\n{% if $json.customer_satisfaction_score %}⭐ **Previous CSAT**: {{ $json.customer_satisfaction_score }}/5{% endif %}\n💬 **Response Count**: {{ $json.response_count }}\n{% if $json.previously_escalated %}⚠️ **Previously Escalated**: Yes{% endif %}\n\n**Ticket Description**:\n_{{ $json.description | truncate(200) }}_\n\n🔗 **Action Required**: Immediate manager review and assignment\n\n*Processed at {{ $json.processed_at | date('short') }} | Session: {{ $json.analytics_session }}*",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "name",
              "value": "C1234567890"
            },
            "otherOptions": {},
            "authentication": "oAuth2"
          },
          "typeVersion": 2.2
        },
        {
          "id": "4db9ad91-4584-46d5-99f2-55907fcfb5ff",
          "name": "Analytics Summary Filter",
          "type": "n8n-nodes-base.if",
          "position": [
            720,
            752
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "conditions": [
                {
                  "id": "analytics-data",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.analytics_type }}",
                  "rightValue": "performance_summary"
                }
              ],
              "combineOperation": "any"
            }
          },
          "typeVersion": 2
        },
        {
          "id": "f503cb4d-c6fb-4cd1-b9a8-be6c3414b773",
          "name": "Slack Analytics Summary Report",
          "type": "n8n-nodes-base.slack",
          "position": [
            1120,
            752
          ],
          "webhookId": "419f9429-af3c-4e4b-989c-c66e0aa1b0a0",
          "parameters": {
            "text": "📊 **SUPPORT ANALYTICS SUMMARY** 📊\n\n**Overall Performance Metrics:**\n\n**Ticket Volume:**\n🎫 **Total Tickets**: {{ $json.data.total_tickets }}\n📂 **Open Tickets**: {{ $json.data.open_tickets }}\n✅ **Closed Tickets**: {{ $json.data.closed_tickets }}\n📈 **Resolution Rate**: {{ $json.data.resolution_rate }}%\n\n**Performance Indicators:**\n⏱️ **Avg Resolution Time**: {{ $json.data.avg_resolution_time_hours }} hours\n⭐ **Avg Customer Satisfaction**: {{ $json.data.avg_satisfaction_score }}/5\n🔺 **Escalation Rate**: {{ $json.data.escalation_rate }}%\n\n**Category Breakdown:**\n{% for category, count in $json.data.category_distribution %}📋 **{{ category }}**: {{ count }} tickets\n{% endfor %}\n\n**Key Insights:**\n{% if $json.data.escalation_rate > 15 %}⚠️ High escalation rate detected - review process efficiency{% endif %}\n{% if $json.data.avg_satisfaction_score < 4.0 %}⚠️ Customer satisfaction below target - investigate common issues{% endif %}\n{% if $json.data.resolution_rate < 80 %}⚠️ Resolution rate below target - resource allocation needed{% endif %}\n\n*Generated at {{ $json.processed_at | date('short') }}*",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "name",
              "value": "C0987654321"
            },
            "otherOptions": {},
            "authentication": "oAuth2"
          },
          "typeVersion": 2.2
        },
        {
          "id": "ec369956-4844-4d70-851c-ffb1bf59b2ac",
          "name": "Sticky Note - Triggers",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -400,
            -480
          ],
          "parameters": {
            "color": 7,
            "width": 350,
            "height": 1330,
            "content": "# Step 1: Support Monitoring Triggers 🎫\n\nDual trigger system for comprehensive support ticket analytics:\n\n## Automated Schedule Trigger\n- **Frequency**: Every hour for real-time monitoring\n- **Purpose**: Continuous SLA and escalation tracking\n- **Coverage**: Ensures no tickets fall through cracks\n\n## Webhook Trigger  \n- **Purpose**: Real-time ticket notifications\n- **Usage**: Integration with support systems\n- **Endpoint**: `/support-ticket-webhook`\n\n## Benefits\n- Real-time escalation detection\n- SLA breach prevention\n- Performance monitoring\n- Automated manager notifications"
          },
          "typeVersion": 1
        },
        {
          "id": "ecade188-9b0c-4d9f-a642-36354cc3d4bb",
          "name": "Sticky Note - Data Extraction",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            32,
            -464
          ],
          "parameters": {
            "color": 7,
            "width": 350,
            "height": 1282,
            "content": "# Step 2: Multi-Source Support Data Extraction 🔍\n\nAI-powered scraping from multiple support system endpoints:\n\n## Data Sources\n- **Open Tickets**: Current active support requests\n- **Closed Tickets**: Historical performance analysis\n- **Knowledge Base**: Self-service effectiveness metrics\n\n## AI-Powered Extraction\n- Smart ticket parsing with ScrapeGraphAI\n- Structured data extraction from dashboards\n- Context-aware content analysis\n- Multi-system integration support\n\n## Extensible Design\n- Easy integration with Zendesk, Freshdesk, ServiceNow\n- Custom field extraction\n- Multi-language support\n- Real-time data synchronization"
          },
          "typeVersion": 1
        },
        {
          "id": "5a660240-1b28-4c05-9f1d-17655042bb85",
          "name": "Sticky Note - Analytics Engine",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            576,
            -592
          ],
          "parameters": {
            "color": 7,
            "width": 350,
            "height": 1090,
            "content": "# Step 3: Advanced Support Analytics 🧠\n\nSophisticated AI-powered ticket analysis and intelligence:\n\n## AI Categorization\n- **Smart Classification**: Technical, Billing, Account, etc.\n- **Confidence Scoring**: Reliability percentage\n- **Pattern Recognition**: Issue trend identification\n- **Keyword Analysis**: Automated tagging\n\n## SLA Management\n- **Multi-tier SLA Rules**: Enterprise, Premium, Standard\n- **Breach Detection**: Real-time monitoring\n- **Performance Metrics**: Response and resolution times\n- **Customer Tier Adjustments**: Priority multipliers\n\n## Escalation Intelligence\n- **Smart Scoring**: Multi-factor escalation algorithm\n- **Risk Assessment**: Crisis potential evaluation\n- **Automated Triggers**: Manager notification rules\n- **Historical Analysis**: Pattern-based predictions"
          },
          "typeVersion": 1
        },
        {
          "id": "63852bb0-38e6-441f-9b43-ad866e34e391",
          "name": "Sticky Note - Reporting & Alerts",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1008,
            -320
          ],
          "parameters": {
            "color": 7,
            "width": 782,
            "height": 1266,
            "content": "# Step 4: Smart Escalation & Reporting 📊\n\nIntelligent notification system and performance dashboard:\n\n## Escalation Management\n- **Priority Filtering**: Critical, High, Medium escalations\n- **Manager Alerts**: Immediate Slack notifications\n- **SLA Breach Warnings**: Proactive intervention\n- **Customer Tier Priorities**: VIP customer handling\n\n## Google Sheets Dashboard\n- **Live Analytics**: Real-time ticket tracking\n- **Performance KPIs**: Resolution times, CSAT scores\n- **Trend Analysis**: Historical pattern identification\n- **Export Ready**: Management reporting\n\n## Dual Reporting Channels\n- **Escalation Channel**: Critical ticket alerts\n- **Analytics Channel**: Performance summaries\n- **Rich Formatting**: Actionable insights display\n- **Automated Scheduling**: Regular report delivery"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "d6b51a9f-e1e1-4cef-87ee-3f05bc6888f7",
      "connections": {
        "Analytics Summary Filter": {
          "main": [
            [
              {
                "node": "Slack Analytics Summary Report",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Closed Tickets Analyzer": {
          "main": [
            [
              {
                "node": "Advanced Support Analytics & Intelligence",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Knowledge Base Analyzer": {
          "main": [
            [
              {
                "node": "Advanced Support Analytics & Intelligence",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Critical Escalation Filter": {
          "main": [
            [
              {
                "node": "Slack Manager Escalation Alert",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Support Dashboard Scraper": {
          "main": [
            [
              {
                "node": "Advanced Support Analytics & Intelligence",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Support Ticket Webhook Trigger": {
          "main": [
            [
              {
                "node": "AI Support Dashboard Scraper",
                "type": "main",
                "index": 0
              },
              {
                "node": "AI Closed Tickets Analyzer",
                "type": "main",
                "index": 0
              },
              {
                "node": "AI Knowledge Base Analyzer",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Automated Support Monitor Trigger": {
          "main": [
            [
              {
                "node": "AI Support Dashboard Scraper",
                "type": "main",
                "index": 0
              },
              {
                "node": "AI Closed Tickets Analyzer",
                "type": "main",
                "index": 0
              },
              {
                "node": "AI Knowledge Base Analyzer",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Advanced Support Analytics & Intelligence": {
          "main": [
            [
              {
                "node": "Google Sheets Support Analytics Dashboard",
                "type": "main",
                "index": 0
              },
              {
                "node": "Critical Escalation Filter",
                "type": "main",
                "index": 0
              },
              {
                "node": "Analytics Summary Filter",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 15,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 2
        },
        "n8n-nodes-base.code": {
          "count": 1
        },
        "n8n-nodes-base.slack": {
          "count": 2
        },
        "n8n-nodes-base.webhook": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 4
        },
        "n8n-nodes-base.googleSheets": {
          "count": 1
        },
        "n8n-nodes-base.scheduleTrigger": {
          "count": 1
        },
        "n8n-nodes-scrapegraphai.scrapegraphAi": {
          "count": 3
        }
      }
    },
    "status": "published",
    "user": {
      "name": "vinci-king-01",
      "username": "vinci-king-01",
      "bio": "",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/marco-vinciguerra-7ba365242/"
      ],
      "avatar": "https://gravatar.com/avatar/d939eeef03a5fcb5df08bee8196f12ccb248c38209487414e419032004f0c014?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/",
                  "icon": "🍔",
                  "label": "How Honest Burgers Use Automation to Save $100k per year"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 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": 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": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 839,
        "icon": "fa:clock",
        "name": "n8n-nodes-base.scheduleTrigger",
        "codex": {
          "data": {
            "alias": [
              "Time",
              "Scheduler",
              "Polling",
              "Cron",
              "Interval"
            ],
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\",\"schedule\"]",
        "defaults": {
          "name": "Schedule Trigger",
          "color": "#31C49F"
        },
        "iconData": {
          "icon": "clock",
          "type": "icon"
        },
        "displayName": "Schedule Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 41,
        "name": "Ticket Management"
      },
      {
        "id": 49,
        "name": "AI Summarization"
      }
    ],
    "image": []
  }
}