{
  "workflow": {
    "id": 8743,
    "name": "Zendesk pending ticket follow-up system with Gmail, Google Sheets & ClickUp",
    "views": 126,
    "recentViews": 0,
    "totalViews": 126,
    "createdAt": "2025-09-19T06:48:54.147Z",
    "description": "##  Description\nAutomate Zendesk ticket follow-up management by fetching pending tickets daily, enriching and logging them into Google Sheets, creating ClickUp tasks for team reminders, and sending professional follow-up emails to customers. Keeps your support pipeline clean and ensures no pending tickets fall through the cracks. 🎫📊📧✅\n\n## What This Template Does\n- Triggers daily (Mon–Fri at 8 PM) to check Zendesk for pending tickets. ⏰\n- Filters only \"pending\" status tickets to reduce noise. 🔍\n- Formats ticket data with priority, age, and attention flags. 🧠\n- Logs all tickets into Google Sheets for reporting and analytics. 📊\n- Creates ClickUp tasks for team follow-up and accountability. 📋\n- Generates professional HTML follow-up emails grouped by customer. 🎨\n- Sends emails via Gmail with ticket details and next steps. 📧\n\n## Key Benefits\n- Ensures no pending Zendesk tickets are forgotten. ⏱️\n- Builds a historical log for analytics and audit trails. 🧾\n- Keeps your support team accountable with ClickUp tasks. ✅\n- Delivers personalized, branded follow-up emails to customers. 💡\n- Reduces manual effort in tracking and responding to tickets. 🔄\n\n## Features\n- Schedule Trigger – Runs Mon–Fri at 8:00 PM. 🗓️\n- Zendesk Integration – Fetches pending tickets automatically. 🎫\n- Smart Data Processing – Cleans descriptions, calculates age, flags urgent tickets. ⚡\n- Google Sheets Logging – Maintains a structured log with Ticket ID, URL, tags, status, etc. 📈\n- ClickUp Tasks – Automatically creates tasks per pending ticket. 📋\n- Email Generation – Groups tickets per customer, builds professional HTML follow-ups. 🎨\n- Gmail Delivery – Sends personalized follow-ups directly to customers. 📧\n\n## Requirements\n- n8n instance (cloud or self-hosted).\n- Zendesk API credentials with read access.\n- Google Sheets OAuth2 credentials with write access.\n- ClickUp API credentials for task creation.\n- Gmail OAuth2 credentials for sending emails.\n- Pre-configured Google Sheet for pending ticket tracking.\n\n## Target Audience\n- Customer support teams managing Zendesk tickets. 🎧\n- SaaS companies wanting automated follow-ups. 🚀\n- CS managers ensuring accountability in ticket handling. 🛠️\n- SMBs reducing customer wait time with proactive follow-ups. 🏢\n- Remote support teams needing automated reminders and logs. 🌐\n\n## Step-by-Step Setup Instructions\n\n- Connect Zendesk, Google Sheets, ClickUp, and Gmail credentials in n8n. 🔑\n- Update the schedule trigger (default: Mon–Fri at 8:00 PM). ⏰\n- Replace the Google Sheet ID with your pending ticket log sheet. 📊\n- Configure your ClickUp space/list IDs for task creation. 📋\n- Update email branding and sender address in the email generator. 🎨\n- Test with sample tickets to validate Sheets logging, ClickUp tasks, and Gmail delivery. ✅",
    "workflow": {
      "id": "zBLlqGzoj4ODSM0v",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
        "templateCredsSetupCompleted": true
      },
      "name": "Automate follow-ups for pending tickets in Zendesk",
      "tags": [],
      "nodes": [
        {
          "id": "616e5acf-cab7-4ef6-a01a-68f158495148",
          "name": "Workflow Overview",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -912,
            -80
          ],
          "parameters": {
            "width": 300,
            "height": 304,
            "content": "## 🎯 Workflow Overview\n\nThis workflow automates Zendesk support ticket management:\n- Fetches pending tickets daily\n- Logs them to Google Sheets for tracking\n- Sends follow-up emails to customers\n- Creates ClickUp tasks for team reminders\n\n**Schedule**: Runs Monday-Friday at 8 PM"
          },
          "typeVersion": 1
        },
        {
          "id": "4023e848-11cd-4b1e-aa2c-591c83a337cb",
          "name": "Schedule Trigger",
          "type": "n8n-nodes-base.cron",
          "position": [
            -576,
            -16
          ],
          "parameters": {
            "triggerTimes": {
              "item": [
                {
                  "mode": "custom",
                  "cronExpression": "0 0 20 * * 1-5"
                }
              ]
            }
          },
          "typeVersion": 1
        },
        {
          "id": "8033211b-22c8-4cc8-89cf-863df591cbfc",
          "name": "Data Retrieval Info",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -416,
            144
          ],
          "parameters": {
            "width": 280,
            "height": 240,
            "content": "## 📊 Data Retrieval\n\nFetches all pending tickets from Zendesk using the API.\n\n**Configuration Required**:\n- Zendesk API credentials\n- Filter: status = 'pending'\n- Returns all matching tickets"
          },
          "typeVersion": 1
        },
        {
          "id": "59b8a5f0-f5be-4e72-b06e-db5eb64d2047",
          "name": "Get Pending Tickets",
          "type": "n8n-nodes-base.zendesk",
          "position": [
            -352,
            -16
          ],
          "parameters": {
            "options": {
              "status": "pending"
            },
            "operation": "getAll",
            "returnAll": true
          },
          "credentials": {
            "zendeskApi": {
              "id": "credential-id",
              "name": "zendeskApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "39631916-8779-4cf8-b25b-28d0a6aec0ff",
          "name": "Filtering Logic",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -224,
            -288
          ],
          "parameters": {
            "width": 280,
            "height": 256,
            "content": "## 🔍 Smart Filtering\n\nFilters tickets based on status and age:\n- Only processes 'pending' status tickets\n- Helps reduce noise and focus on actionable items\n\n**Logic**: status === 'pending'"
          },
          "typeVersion": 1
        },
        {
          "id": "47f63b74-86d7-4548-80ce-dedacbe5c2e8",
          "name": "Filter Pending Tickets",
          "type": "n8n-nodes-base.if",
          "position": [
            -128,
            -16
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "condition1",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.status }}",
                  "rightValue": "pending"
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "d536f781-1ad8-45e5-a935-76bf15893c32",
          "name": "Data Processing",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            0,
            128
          ],
          "parameters": {
            "width": 280,
            "height": 256,
            "content": "## 🛠️ Data Processing\n\nFormats and enriches ticket data:\n- Standardizes field names\n- Calculates ticket age and priority levels\n- Adds computed fields for better analysis\n- Prepares data for downstream nodes"
          },
          "typeVersion": 1
        },
        {
          "id": "41703a6c-69a3-4b5b-ad23-8c3355a4dee1",
          "name": "Format Ticket Data",
          "type": "n8n-nodes-base.code",
          "position": [
            96,
            -16
          ],
          "parameters": {
            "jsCode": "// N8N Code Node - Zendesk Ticket Formatter\n// This code processes Zendesk ticket data and formats it into clean JSON structure\n\n// Function to format individual ticket data\nfunction formatTicketData(ticketData) {\n  const createdAt = new Date(ticketData.created_at);\n  const updatedAt = new Date(ticketData.updated_at);\n  const now = new Date();\n  \n  return {\n    ticket_id: ticketData.id,\n    ticket_url: `https://your-domain.zendesk.com/agent/tickets/${ticketData.id}`,\n    subject: ticketData.subject || \"No Subject\",\n    priority: ticketData.priority || \"normal\",\n    status: ticketData.status,\n    created_timestamp: createdAt.toISOString(),\n    zendesk_created_at: ticketData.created_at,\n    description_preview: cleanDescription(ticketData.description),\n    tags: Array.isArray(ticketData.tags) ? ticketData.tags.join(', ') : '',\n    requester_id: ticketData.requester_id,\n    assignee_id: ticketData.assignee_id || 'Unassigned',\n    channel: ticketData.via?.channel || \"unknown\",\n    ticket_age_hours: Math.round((now - createdAt) / (1000 * 60 * 60)),\n    priority_level: getPriorityLevel(ticketData.priority),\n    needs_attention: checkNeedsAttention(ticketData, now, createdAt),\n    description: ticketData.description || \"No Description\"\n  };\n}\n\n// Helper function to get priority level\nfunction getPriorityLevel(priority) {\n  const levels = {\n    'low': 1,\n    'normal': 2,\n    'high': 3,\n    'urgent': 4\n  };\n  return levels[priority] || 2;\n}\n\n// Helper function to clean description for preview\nfunction cleanDescription(description) {\n  if (!description) return \"No description available\";\n  \n  const cleaned = description\n    .replace(/<[^>]*>/g, '')\n    .replace(/\\s+/g, ' ')\n    .trim();\n  \n  return cleaned.length > 100 ? cleaned.substring(0, 100) + '...' : cleaned;\n}\n\n// Helper function to check if ticket needs attention\nfunction checkNeedsAttention(ticketData, now, createdAt) {\n  const ageHours = Math.round((now - createdAt) / (1000 * 60 * 60));\n  const hasUrgentTag = (ticketData.tags || []).includes('urgent');\n  const isHighPriority = ['high', 'urgent'].includes(ticketData.priority);\n  \n  return ageHours > 24 || hasUrgentTag || isHighPriority;\n}\n\n// Process all input items\nconst processedItems = [];\n\nfor (const item of $input.all()) {\n  const originalTicket = item.json;\n  const formattedTicket = formatTicketData(originalTicket);\n  \n  processedItems.push({\n    json: formattedTicket\n  });\n}\n\nreturn processedItems;"
          },
          "typeVersion": 2
        },
        {
          "id": "2525d374-d35a-4c26-8cb0-8b73dcb5c26c",
          "name": "Data Logging",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            240,
            -368
          ],
          "parameters": {
            "width": 280,
            "height": 240,
            "content": "## 📊 Data Logging\n\nLogs formatted ticket data to Google Sheets:\n- Maintains historical record\n- Enables reporting and analytics\n- Updates existing tickets or creates new entries\n- Uses Ticket ID as matching column"
          },
          "typeVersion": 1
        },
        {
          "id": "9a884edc-ba8b-43db-954b-3af4a9787af9",
          "name": "Log to Google Sheets",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            320,
            -112
          ],
          "parameters": {
            "columns": {
              "value": {
                "Tags": "={{ $json.tags }}",
                "Status": "={{ $json.status }}",
                "Subject": "={{ $json.subject }}",
                "Priority": "={{ $json.priority }}",
                "Ticket ID": "={{ $json.ticket_id }}",
                "Ticket URL": "={{ $json.ticket_url }}",
                "Age (Hours)": "={{ $json.ticket_age_hours }}",
                "Needs Attention": "={{ $json.needs_attention }}",
                "Created Timestamp": "={{ $json.created_timestamp }}",
                "Zendesk Created At": "={{ $json.zendesk_created_at }}",
                "Description Preview": "={{ $json.description_preview }}"
              },
              "schema": [
                {
                  "id": "Ticket ID",
                  "type": "string",
                  "display": true,
                  "removed": false,
                  "required": true,
                  "displayName": "Ticket ID",
                  "defaultMatch": true,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Ticket URL",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Ticket URL",
                  "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": "Status",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Status",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "Created Timestamp",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Created Timestamp",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "Zendesk Created At",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Zendesk Created At",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "Description Preview",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Description Preview",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "Tags",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Tags",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "Age (Hours)",
                  "type": "number",
                  "display": true,
                  "required": false,
                  "displayName": "Age (Hours)",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                },
                {
                  "id": "Needs Attention",
                  "type": "boolean",
                  "display": true,
                  "required": false,
                  "displayName": "Needs Attention",
                  "defaultMatch": false,
                  "canBeUsedToMatch": false
                }
              ],
              "mappingMode": "autoMapInputData",
              "matchingColumns": [
                "Ticket ID"
              ],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "appendOrUpdate",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultName": "Pending Tickets"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1ctD4fH-PW_h5X4KvnuPWpai_dgaQcedzvdVZN2sKmQY",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ctD4fH-PW_h5X4KvnuPWpai_dgaQcedzvdVZN2sKmQY/edit?usp=drivesdk",
              "cachedResultName": "Pending Zendesk Tickets"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4
        },
        {
          "id": "5cf6fc3f-4ee4-4819-8b41-1f39281acaa3",
          "name": "Task Management",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            592,
            -352
          ],
          "parameters": {
            "width": 280,
            "height": 224,
            "content": "## ✅ Task Management\n\nCreates ClickUp tasks for ticket tracking:\n- One task per pending ticket\n- Due date based on ticket priority\n- Tags from Zendesk are preserved\n- Helps team track follow-ups"
          },
          "typeVersion": 1
        },
        {
          "id": "a382eefa-941b-45d1-9936-6ce29cd751cd",
          "name": "Create ClickUp Task",
          "type": "n8n-nodes-base.clickUp",
          "position": [
            544,
            -112
          ],
          "parameters": {
            "list": "901412904902",
            "name": "={{ $json.subject }}",
            "team": "9014871666",
            "space": "90143687238",
            "folderless": true,
            "additionalFields": {
              "tags": "={{ $json.tags }}",
              "status": "to do",
              "dueDate": "={{ $json.created_timestamp }}",
              "priority": "={{ $json.priority_level }}"
            }
          },
          "credentials": {
            "clickUpApi": {
              "id": "credential-id",
              "name": "clickUpApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "dbc754e3-990a-430d-b3fc-8b5b5a2dd3c9",
          "name": "Email Generation",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            400,
            224
          ],
          "parameters": {
            "width": 280,
            "height": 240,
            "content": "## 📧 Email Generation\n\nGenerates personalized follow-up emails:\n- Groups tickets by customer email\n- Creates professional HTML emails\n- Includes ticket details and next steps\n- Maintains brand consistency"
          },
          "typeVersion": 1
        },
        {
          "id": "b2d57a93-f5ec-4058-b2d7-f24d232c2432",
          "name": "Generate Follow-up Emails",
          "type": "n8n-nodes-base.code",
          "position": [
            448,
            80
          ],
          "parameters": {
            "jsCode": "// N8N Code Node - Zendesk Follow-up Email Generator\n// This processes Zendesk ticket data and generates professional follow-up emails\n\n// Input: items[0].json contains the ticket data array\nconst tickets = $input.all();\n\nfunction generateFollowUpEmail(ticketsData) {\n  // Filter only pending tickets\n  const pendingTickets = ticketsData.filter(ticket => ticket.status === 'pending');\n  \n  if (pendingTickets.length === 0) {\n    return null; // No pending tickets to follow up on\n  }\n\n  // Group tickets by requester email for personalized emails\n  const ticketsByRequester = {};\n  pendingTickets.forEach(ticket => {\n    // Extract email from description if not directly available\n    const emailMatch = ticket.description.match(/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})/);\n    const email = emailMatch ? emailMatch[0] : 'user@example.com';\n    \n    if (!ticketsByRequester[email]) {\n      ticketsByRequester[email] = [];\n    }\n    ticketsByRequester[email].push(ticket);\n  });\n\n  const emails = [];\n  \n  Object.entries(ticketsByRequester).forEach(([email, userTickets]) => {\n    const htmlContent = generateEmailHTML(userTickets, email);\n    \n    emails.push({\n      to: email,\n      subject: `Follow-up on Your Support Request${userTickets.length > 1 ? 's' : ''} - Action Required`,\n      html: htmlContent,\n      from: 'user@example.com', // Replace with your support email\n      ticketCount: userTickets.length,\n      ticketIds: userTickets.map(t => t.ticket_id)\n    });\n  });\n  \n  return emails;\n}\n\nfunction generateEmailHTML(tickets, customerEmail) {\n  const customerName = extractCustomerName(tickets[0].description);\n  const currentDate = new Date().toLocaleDateString('en-US', { \n    year: 'numeric', \n    month: 'long', \n    day: 'numeric' \n  });\n\n  return `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Follow-up on Your Support Request</title>\n    <!--[if mso]>\n    <xml>\n        <o:OfficeDocumentSettings>\n            <o:PixelsPerInch>96</o:PixelsPerInch>\n            <o:AllowPNG/>\n        </o:OfficeDocumentSettings>\n    </xml>\n    <![endif]-->\n</head>\n<body style=\"margin: 0; padding: 0; font-family: Arial, sans-serif; line-height: 1.4; background-color: #f4f4f4;\">\n    <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"background-color: #f4f4f4;\">\n        <tr>\n            <td align=\"center\" valign=\"top\" style=\"padding: 20px 10px;\">\n                <!-- Main Container -->\n                <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"600\" style=\"max-width: 600px; background-color: #ffffff;\">\n                    \n                    <!-- Header -->\n                    <tr>\n                        <td align=\"center\" style=\"background-color: #667eea; color: #ffffff; padding: 30px 20px;\">\n                            <h1 style=\"margin: 0; font-size: 24px; font-weight: bold; color: #ffffff;\">Support Team Follow-up</h1>\n                            <p style=\"margin: 10px 0 0 0; font-size: 14px; color: #ffffff;\">We're here to help resolve your issues</p>\n                        </td>\n                    </tr>\n                    \n                    <!-- Content -->\n                    <tr>\n                        <td style=\"padding: 30px 20px;\">\n                            \n                            <!-- Greeting -->\n                            <p style=\"font-size: 16px; color: #333333; margin-bottom: 20px;\">Dear ${customerName},</p>\n                            <p style=\"font-size: 16px; color: #333333; margin-bottom: 30px; line-height: 1.5;\">We hope this email finds you well. We wanted to follow up on your recent support request${tickets.length > 1 ? 's' : ''} that ${tickets.length > 1 ? 'are' : 'is'} currently pending resolution.</p>\n                            \n                            <!-- Tickets -->\n                            ${tickets.map(ticket => `\n                            <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"margin: 20px 0; background-color: #f8f9fa; border-left: 4px solid #667eea;\">\n                                <tr>\n                                    <td style=\"padding: 20px;\">\n                                        \n                                        <!-- Ticket Header -->\n                                        <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"margin-bottom: 15px;\">\n                                            <tr>\n                                                <td align=\"left\">\n                                                    <span style=\"background-color: #667eea; color: #ffffff; padding: 6px 12px; font-size: 12px; font-weight: bold; border-radius: 15px; display: inline-block;\">Ticket #${ticket.ticket_id}</span>\n                                                </td>\n                                                <td align=\"right\">\n                                                    <span style=\"background-color: #ffc107; color: #856404; padding: 4px 8px; font-size: 11px; font-weight: bold; text-transform: uppercase; border-radius: 10px; display: inline-block; margin-right: 10px;\">Pending</span>\n                                                    <span style=\"color: #dc3545; font-size: 12px; font-weight: bold;\">${ticket.ticket_age_hours} hours old</span>\n                                                </td>\n                                            </tr>\n                                        </table>\n                                        \n                                        <!-- Ticket Subject -->\n                                        <h3 style=\"margin: 0 0 10px 0; font-size: 16px; font-weight: bold; color: #333333;\">${cleanSubject(ticket.subject)}</h3>\n                                        \n                                        <!-- Ticket Description -->\n                                        <p style=\"margin: 0; color: #666666; font-size: 14px; line-height: 1.5;\">${cleanDescription(ticket.description)}</p>\n                                        \n                                    </td>\n                                </tr>\n                            </table>\n                            `).join('')}\n                            \n                            <!-- CTA Section -->\n                            <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"margin: 30px 0;\">\n                                <tr>\n                                    <td align=\"center\">\n                                        <p style=\"font-size: 16px; font-weight: bold; color: #333333; margin-bottom: 20px;\">Need immediate assistance or want to provide additional information?</p>\n                                        <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n                                            <tr>\n                                                <td align=\"center\" style=\"background-color: #667eea; border-radius: 4px;\">\n                                                    <a href=\"https://softwarecompany-66332.zendesk.com/hc/en-us\" style=\"display: block; padding: 12px 30px; color: #ffffff; text-decoration: none; font-weight: bold; font-size: 14px;\">Visit Support Portal</a>\n                                                </td>\n                                            </tr>\n                                        </table>\n                                    </td>\n                                </tr>\n                            </table>\n                            \n                            <!-- Contact Info Box -->\n                            <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"background-color: #e3f2fd; margin: 20px 0;\">\n                                <tr>\n                                    <td align=\"center\" style=\"padding: 20px;\">\n                                        <p style=\"margin: 0 0 10px 0; font-weight: bold; color: #333333;\">Quick Response Options:</p>\n                                        <p style=\"margin: 0; color: #666666; line-height: 1.6;\">\n                                            📧 Reply directly to this email<br>\n                                            📞 Call us at: 1-800-SUPPORT<br>\n                                            💬 Live Chat: Available Mon-Fri, 9 AM - 6 PM EST\n                                        </p>\n                                    </td>\n                                </tr>\n                            </table>\n                            \n                            <!-- Main Content -->\n                            <p style=\"font-size: 16px; color: #333333; line-height: 1.5; margin: 20px 0;\">Our team is actively working on resolving your ${tickets.length > 1 ? 'requests' : 'request'}, and we appreciate your patience. If you have any additional information that might help us resolve ${tickets.length > 1 ? 'these issues' : 'this issue'} faster, please don't hesitate to reply to this email.</p>\n                            \n                            <p style=\"font-size: 16px; color: #333333; line-height: 1.5; margin: 20px 0;\">We value your business and are committed to providing you with the best possible support experience.</p>\n                            \n                            <!-- Signature -->\n                            <p style=\"font-size: 16px; color: #333333; line-height: 1.5; margin: 30px 0 0 0;\">\n                                Best regards,<br>\n                                <strong>Customer Support Team</strong><br>\n                                Software Company\n                            </p>\n                            \n                        </td>\n                    </tr>\n                    \n                    <!-- Footer -->\n                    <tr>\n                        <td align=\"center\" style=\"background-color: #f8f9fa; padding: 20px; border-top: 1px solid #dee2e6;\">\n                            <p style=\"margin: 0 0 10px 0; color: #666666; font-size: 12px;\">This is an automated follow-up email regarding your pending support tickets.</p>\n                            <p style=\"margin: 0 0 10px 0; color: #666666; font-size: 12px;\">Software Company | 123 Business Ave, Suite 100 | City, State 12345</p>\n                            <p style=\"margin: 0; color: #666666; font-size: 12px;\">© ${new Date().getFullYear()} Software Company. All rights reserved.</p>\n                        </td>\n                    </tr>\n                    \n                </table>\n            </td>\n        </tr>\n    </table>\n</body>\n</html>`;\n}\n\nfunction extractCustomerName(description) {\n  // Try to extract name from description\n  const namePatterns = [\n    /Best regards,\\s*([^\\n\\r]+)/i,\n    /Sincerely,\\s*([^\\n\\r]+)/i,\n    /Thanks,\\s*([^\\n\\r]+)/i,\n    /([A-Z][a-z]+ [A-Z][a-z]+)/\n  ];\n  \n  for (const pattern of namePatterns) {\n    const match = description.match(pattern);\n    if (match && match[1]) {\n      return match[1].trim().replace(/[^\\w\\s]/g, '');\n    }\n  }\n  \n  return 'Valued Customer';\n}\n\nfunction cleanSubject(subject) {\n  // Remove HTML tags and clean up subject\n  return subject.replace(/<[^>]*>/g, '').trim() || 'Support Request';\n}\n\nfunction cleanDescription(description) {\n  // Clean HTML and extract first meaningful sentence\n  const cleaned = description.replace(/<[^>]*>/g, '').replace(/\\s+/g, ' ').trim();\n  const firstSentence = cleaned.split('.')[0];\n  return firstSentence.length > 100 ? firstSentence.substring(0, 100) + '...' : firstSentence + '.';\n}\n\n// Process the input data\nconst ticketData = tickets.map(item => item.json).flat();\nconst followUpEmails = generateFollowUpEmail(ticketData);\n\n// Return the generated emails for n8n to process\nif (followUpEmails && followUpEmails.length > 0) {\n  return followUpEmails.map(email => ({ json: email }));\n} else {\n  return [{ json: { message: \"No pending tickets found for follow-up\" } }];\n}"
          },
          "typeVersion": 2
        },
        {
          "id": "69c121ab-d596-4f78-abb3-7f31528400d5",
          "name": "Email Delivery",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            864,
            224
          ],
          "parameters": {
            "width": 280,
            "height": 288,
            "content": "## 📤 Email Delivery\n\nSends professional follow-up emails via Gmail:\n- Uses HTML formatted emails\n- Personalizes content per customer\n- Includes all relevant ticket information\n- Maintains professional branding\n\n**Requires**: Gmail OAuth2 credentials"
          },
          "typeVersion": 1
        },
        {
          "id": "63310af9-28b6-45b7-99ef-638490caf9e1",
          "name": "Send Follow-up Email",
          "type": "n8n-nodes-base.gmail",
          "position": [
            800,
            80
          ],
          "parameters": {
            "toList": [
              "={{ $json.to }}"
            ],
            "message": "Follow-up on your pending support request. Please check the detailed information in the HTML version of this email.",
            "subject": "={{ $json.subject }}",
            "resource": "message",
            "htmlMessage": "={{ $json.html }}",
            "includeHtml": true,
            "additionalFields": {}
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "credential-id",
              "name": "gmailOAuth2 Credential"
            }
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "8c857db1-0f63-4cbb-a869-a7eec9bc9d0a",
      "connections": {
        "Schedule Trigger": {
          "main": [
            [
              {
                "node": "Get Pending Tickets",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Ticket Data": {
          "main": [
            [
              {
                "node": "Log to Google Sheets",
                "type": "main",
                "index": 0
              },
              {
                "node": "Generate Follow-up Emails",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Get Pending Tickets": {
          "main": [
            [
              {
                "node": "Filter Pending Tickets",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Log to Google Sheets": {
          "main": [
            [
              {
                "node": "Create ClickUp Task",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Filter Pending Tickets": {
          "main": [
            [
              {
                "node": "Format Ticket Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Generate Follow-up Emails": {
          "main": [
            [
              {
                "node": "Send Follow-up Email",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 16,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 1
        },
        "n8n-nodes-base.code": {
          "count": 2
        },
        "n8n-nodes-base.cron": {
          "count": 1
        },
        "n8n-nodes-base.gmail": {
          "count": 1
        },
        "n8n-nodes-base.clickUp": {
          "count": 1
        },
        "n8n-nodes-base.zendesk": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 8
        },
        "n8n-nodes-base.googleSheets": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Rahul Joshi",
      "username": "rahul08",
      "bio": "Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.\n\n",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/callrahul/"
      ],
      "avatar": "https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 7,
        "icon": "fa:clock",
        "name": "n8n-nodes-base.cron",
        "codex": {
          "data": {
            "alias": [
              "Time",
              "Scheduler",
              "Polling",
              "Cron",
              "Interval"
            ],
            "details": "The Cron node uses Cron under the hood - a time-based job scheduler in Unix-like computer operating systems. Use this node when you want to trigger workflows periodically, especially in more complex scenarios like \"every Tuesday at 9 am\" or \"Weekdays\".",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/2021-goals-level-up-your-vocabulary-with-vonage-and-n8n/",
                  "icon": "🎯",
                  "label": "2021 Goals: Level Up Your Vocabulary With Vonage and n8n"
                },
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/why-i-chose-n8n-over-zapier-in-2020/",
                  "icon": "😍",
                  "label": "Why I chose n8n over Zapier in 2020"
                },
                {
                  "url": "https://n8n.io/blog/how-to-host-virtual-coffee-breaks-with-n8n/",
                  "icon": "☕️",
                  "label": "How to host virtual coffee breaks with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-sync-data-between-two-systems/",
                  "icon": "🏬",
                  "label": "How to synchronize data between two systems (one-way vs. two-way sync"
                },
                {
                  "url": "https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/",
                  "icon": "📡",
                  "label": "Database Monitoring and Alerting with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/world-poetry-day-workflow/",
                  "icon": "📜",
                  "label": "Celebrating World Poetry Day with a daily poem in Telegram"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/",
                  "icon": "🎨",
                  "label": "Automate Designs with Bannerbear and n8n"
                },
                {
                  "url": "https://n8n.io/blog/tracking-time-spent-in-meetings-with-google-calendar-twilio-and-n8n/",
                  "icon": "🗓",
                  "label": "Tracking Time Spent in Meetings With Google Calendar, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-error-workflows-in-n8n/",
                  "icon": "🌪",
                  "label": "Creating Error Workflows in n8n"
                },
                {
                  "url": "https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/",
                  "icon": "💪",
                  "label": "Using Automation to Boost Productivity in the Workplace"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/",
                  "icon": "🤟",
                  "label": "Creating scheduled text affirmations with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"trigger\",\"schedule\"]",
        "defaults": {
          "name": "Cron",
          "color": "#29a568"
        },
        "iconData": {
          "icon": "clock",
          "type": "icon"
        },
        "displayName": "Cron",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 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": 123,
        "icon": "file:zendesk.svg",
        "name": "n8n-nodes-base.zendesk",
        "codex": {
          "data": {
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.zendesk/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/zendesk/"
                }
              ]
            },
            "categories": [
              "Communication"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Zendesk"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMjRDMCAxMC43NDUgMTAuNzQ1IDAgMjQgMHMyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0UzAgMzcuMjU1IDAgMjQiLz48cGF0aCBmaWxsPSIjMDMzNjNEIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS40NDggMTguNjUzYzQuMDUgMCA3LjMzMi0zLjM3NSA3LjMzMi03LjUzOEg4LjExNmMwIDQuMTYzIDMuMjgzIDcuNTM4IDcuMzMyIDcuNTM4bTcuMzMyIDE3LjE5OVYxNy42NDhMOC4xMTYgMzUuODUyem0yLjQxNSAwYzAtNC4xNjQgMy4yODMtNy41NCA3LjMzMi03LjU0IDQuMDUgMCA3LjMzMiAzLjM3NiA3LjMzMiA3LjU0em0wLTI0LjczN3YxOC4yMDNMMzkuODYgMTEuMTE1eiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+"
        },
        "displayName": "Zendesk",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          }
        ]
      },
      {
        "id": 129,
        "icon": "file:clickup.svg",
        "name": "n8n-nodes-base.clickUp",
        "codex": {
          "data": {
            "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"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.clickup/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/clickup/"
                }
              ]
            },
            "categories": [
              "Productivity",
              "Communication"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "ClickUp"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0xMCAwIDE1NSAxNTUiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAlIiB5MT0iNjguMDElIiB5Mj0iNjguMDElIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjODkzMEZEIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjNDlDQ0Y5Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImIiIHgxPSIwJSIgeTE9IjY4LjAxJSIgeTI9IjY4LjAxJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI0ZGMDJGMCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI0ZGQzgwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGZpbGw9InVybCgjYSkiIGQ9Im0uNCAxMTkuMTIgMjMuODEtMTguMjRDMzYuODYgMTE3LjM5IDUwLjMgMTI1IDY1LjI2IDEyNWMxNC44OCAwIDI3Ljk0LTcuNTIgNDAuMDItMjMuOWwyNC4xNSAxNy44QzExMiAxNDIuNTIgOTAuMzQgMTU1IDY1LjI2IDE1NWMtMjUgMC00Ni44Ny0xMi40LTY0Ljg2LTM1Ljg4Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTY1LjE4IDM5Ljg0IDIyLjggNzYuMzYgMy4yMSA1My42NCA2NS4yNy4xNmw2MS41NyA1My41Mi0xOS42OCAyMi42NHoiLz48L2c+PC9zdmc+"
        },
        "displayName": "ClickUp",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 4,
            "name": "Productivity"
          },
          {
            "id": 6,
            "name": "Communication"
          }
        ]
      },
      {
        "id": 356,
        "icon": "file:gmail.svg",
        "name": "n8n-nodes-base.gmail",
        "codex": {
          "data": {
            "alias": [
              "email",
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/",
                  "icon": "💪",
                  "label": "Using Automation to Boost Productivity in the Workplace"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Gmail"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"
        },
        "displayName": "Gmail",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 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": 31,
        "name": "Content Creation"
      },
      {
        "id": 41,
        "name": "Ticket Management"
      }
    ],
    "image": []
  }
}