{
  "workflow": {
    "id": 8702,
    "name": "Bidirectional ticket sync between Freshdesk and Linear with error logging",
    "views": 72,
    "recentViews": 0,
    "totalViews": 72,
    "createdAt": "2025-09-18T04:51:47.636Z",
    "description": "## How it works\n\nThis workflow synchronizes support tickets in Freshdesk with issues in Linear, enabling smooth collaboration between support and development teams. It triggers on new or updated Freshdesk tickets, maps fields to Linear’s format, and creates linked issues through Linear’s API. Reverse synchronization is also supported, so changes in Linear update the corresponding Freshdesk tickets. Comprehensive logging ensures success and error events are always tracked.\n\n## Step-by-step\n\n**1. Trigger the workflow**  \n- **New Ticket Webhook** – Captures new Freshdesk tickets for issue creation.  \n- **Update Ticket Webhook** – Detects changes in existing tickets.  \n- **Linear Issue Updated Webhook** – Listens for updates from Linear.  \n\n**2. Transform and map data**  \n- **Map Freshdesk Fields to Linear** – Converts priority, status, title, and description for Linear.  \n- **Map Linear to Freshdesk Fields** – Converts Linear state, priority, and extracts ticket ID for Freshdesk updates.  \n\n**3. Perform API operations**  \n- **Create Linear Issue** – Sends GraphQL mutation to Linear API.  \n- **Check Linear Creation Success** – Validates issue creation before linking.  \n- **Link Freshdesk with Linear ID** – Updates Freshdesk with Linear reference.  \n- **Update Freshdesk Ticket** – Pushes Linear updates back to Freshdesk.  \n\n**4. Manage logging and errors**  \n- **Log Linear Creation Success** – Records successful ticket-to-issue sync.  \n- **Log Linear Creation Error** – Captures and logs issue creation failures.  \n- **Log Freshdesk Update Success** – Confirms successful reverse sync.  \n- **Log Missing Ticket ID Error** – Handles missing ticket reference errors.  \n\n## Why use this?\n\n- Keep support and development teams aligned with real-time updates.  \n- Eliminate manual ticket-to-issue handoffs, saving time and reducing errors.  \n- Maintain full visibility with detailed success and error logs.  \n- Enable bidirectional sync between Freshdesk and Linear for true collaboration.  \n- Improve response times by ensuring both teams always work on the latest data.  \n",
    "workflow": {
      "name": "Freshdesk-YOUR_OPENAI_KEY_HERE Bridge",
      "tags": [],
      "nodes": [
        {
          "id": "dee7aabb-d434-45f3-8a13-9f4f75c96895",
          "name": "Webhook Triggers Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            384,
            1712
          ],
          "parameters": {
            "width": 322,
            "height": 736,
            "content": "## 🎣 Webhook Triggers & Data Entry\n\n*Entry points that initiate the synchronization workflow:*\n\n• **New Ticket Webhook** - Captures newly created Freshdesk tickets via POST endpoint\n• **Update Ticket Webhook** - Handles modifications to existing Freshdesk tickets\n\n*These webhooks serve as the primary triggers that start the Freshdesk-YOUR_OPENAI_KEY_HERE-Linear synchronization process, automatically routing incoming ticket data to the field mapping stage.*"
          },
          "typeVersion": 1
        },
        {
          "id": "3a2f18c2-4c61-440e-85ca-4957bd9d10ba",
          "name": "Data Transformation Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            720,
            1712
          ],
          "parameters": {
            "color": 2,
            "width": 210,
            "height": 736,
            "content": "## 📄 Data Transformation & Field Mapping\n\n*Critical Data Processing (Field Mapping):\n• Freshdesk → Linear — Converts ticket data into Linear-ready format, including priority (Low/Medium/High/Urgent ↔ 4/3/2/1) and status (Open/Pending/Resolved/Closed ↔ todo/in_progress/done/canceled), with proper title/description formatting.*"
          },
          "typeVersion": 1
        },
        {
          "id": "6f04cd1c-77e6-4e4b-89c3-a671be46f916",
          "name": "API Operations Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            944,
            1712
          ],
          "parameters": {
            "color": 3,
            "width": 434,
            "height": 734,
            "content": "## 🎯 API Operations & External Integration\n\n*Direct communication with external platforms:*\n\n• **Create Linear Issue** - Makes GraphQL mutation calls to Linear API for issue creation\n• **Check Linear Creation Success** - Validates successful API response before proceeding\n• **Link Freshdesk with Linear ID** - Updates Freshdesk ticket with Linear issue reference for bidirectional linking\n\n*These nodes handle the core integration logic, ensuring reliable data exchange between platforms with proper authentication and error validation.*"
          },
          "typeVersion": 1
        },
        {
          "id": "0daec925-562a-43d9-92d6-5501f3567460",
          "name": "Logging Management Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1392,
            1712
          ],
          "parameters": {
            "color": 5,
            "width": 450,
            "height": 736,
            "content": "## 📊 Logging & Operation Management\n\n*Comprehensive monitoring and audit trail system:*\n\n• **Log Linear Creation Success** - Records successful operations with timestamps and IDs\n• **Log Linear Creation Error** - Captures detailed failure information for debugging\n\n*This logging system provides complete visibility into sync operations, enabling easy troubleshooting and maintaining audit trails for all ticket-to-issue creation processes.*"
          },
          "typeVersion": 1
        },
        {
          "id": "90550747-96c5-4c2f-9db1-6f9b69e357ba",
          "name": "🗺️ Map Freshdesk Fields to Linear",
          "type": "n8n-nodes-base.function",
          "position": [
            768,
            2176
          ],
          "parameters": {
            "functionCode": "// Map Freshdesk priority to Linear priority\nconst freshdeskPriority = items[0].json.priority;\nlet linearPriority = 0;\n\nswitch(freshdeskPriority) {\n  case 1: // Low\n    linearPriority = 4;\n    break;\n  case 2: // Medium\n    linearPriority = 3;\n    break;\n  case 3: // High\n    linearPriority = 2;\n    break;\n  case 4: // Urgent\n    linearPriority = 1;\n    break;\n  default:\n    linearPriority = 3;\n}\n\n// Map Freshdesk status to Linear state\nconst freshdeskStatus = items[0].json.status;\nlet linearStateId = 'todo'; // Default to todo state\n\nswitch(freshdeskStatus) {\n  case 2: // Open\n    linearStateId = 'todo';\n    break;\n  case 3: // Pending\n    linearStateId = 'in_progress';\n    break;\n  case 4: // Resolved\n    linearStateId = 'done';\n    break;\n  case 5: // Closed\n    linearStateId = 'canceled';\n    break;\n}\n\nreturn [{\n  json: {\n    ...items[0].json,\n    linearPriority: linearPriority,\n    linearStateId: linearStateId,\n    linearTitle: items[0].json.subject || 'Freshdesk Ticket #' + items[0].json.id,\n    linearDescription: items[0].json.description_text || items[0].json.description || 'No description provided'\n  }\n}];"
          },
          "typeVersion": 1
        },
        {
          "id": "3b240bad-52b3-4d2f-87de-62ed8594ce53",
          "name": "🎯 Create Linear Issue",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            992,
            2176
          ],
          "parameters": {
            "url": "https://api.linear.app/graphql",
            "options": {},
            "sendBody": true,
            "sendHeaders": true,
            "authentication": "genericCredentialType",
            "bodyParameters": {
              "parameters": [
                {}
              ]
            },
            "genericAuthType": "httpHeaderAuth",
            "headerParameters": {
              "parameters": [
                {
                  "name": "Content-Type",
                  "value": "application/json"
                },
                {
                  "name": "Authorization",
                  "value": "={{ $vars.LINEAR_API_KEY }}"
                }
              ]
            }
          },
          "typeVersion": 4
        },
        {
          "id": "b1beacfa-51d9-45e1-8e30-14c63cd6d4a2",
          "name": "✅ Check Linear Creation Success",
          "type": "n8n-nodes-base.if",
          "position": [
            1216,
            2176
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "success_condition",
                  "operator": {
                    "type": "boolean",
                    "operation": "equal"
                  },
                  "leftValue": "={{ $json.data.issueCreate.success }}",
                  "rightValue": true
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "ee9c5ce0-8ed7-4042-8920-f2b1eeee78c3",
          "name": "🔗 Link Freshdesk with Linear ID",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            1440,
            2080
          ],
          "parameters": {
            "url": "=https://{{ $vars.FRESHDESK_DOMAIN }}.freshdesk.com/api/v2/tickets/{{ $('🗺️ Map Freshdesk Fields to Linear').item.json.id }}",
            "options": {},
            "sendBody": true,
            "sendHeaders": true,
            "authentication": "genericCredentialType",
            "bodyParameters": {
              "parameters": [
                {}
              ]
            },
            "genericAuthType": "httpBasicAuth",
            "headerParameters": {
              "parameters": [
                {
                  "name": "Content-Type",
                  "value": "application/json"
                }
              ]
            }
          },
          "typeVersion": 4
        },
        {
          "id": "58b14ee7-9633-41c9-abf4-b1019a026681",
          "name": "❌ Log Linear Creation Error",
          "type": "n8n-nodes-base.function",
          "position": [
            1440,
            2272
          ],
          "parameters": {
            "functionCode": "// Log error details\nconst errorData = {\n  timestamp: new Date().toISOString(),\n  workflow: 'Sync Freshdesk and Linear tickets',\n  error: 'Failed to create Linear issue',\n  freshdeskTicketId: items[0].json.id,\n  freshdeskTicketSubject: items[0].json.subject,\n  linearResponse: items[0].json\n};\n\nconsole.error('Linear Issue Creation Failed:', JSON.stringify(errorData, null, 2));\n\nreturn [{\n  json: {\n    error: true,\n    message: 'Failed to create Linear issue',\n    details: errorData\n  }\n}];"
          },
          "typeVersion": 1
        },
        {
          "id": "70b0dac2-16bb-4a06-8d6a-d70ad95d7ced",
          "name": "🎉 Log Linear Creation Success",
          "type": "n8n-nodes-base.function",
          "position": [
            1664,
            2080
          ],
          "parameters": {
            "functionCode": "// Log successful creation\nconst successData = {\n  timestamp: new Date().toISOString(),\n  workflow: 'Sync Freshdesk and Linear tickets',\n  message: 'Successfully created Linear issue and linked to Freshdesk ticket',\n  freshdeskTicketId: items[0].json.id,\n  linearIssueId: items[0].json.data?.issueCreate?.issue?.id,\n  linearIssueKey: items[0].json.data?.issueCreate?.issue?.identifier,\n  action: 'create_linear_from_freshdesk'\n};\n\nconsole.log('Creation Success:', JSON.stringify(successData, null, 2));\n\nreturn [{\n  json: {\n    success: true,\n    message: 'Successfully created Linear issue from Freshdesk ticket',\n    details: successData\n  }\n}];"
          },
          "typeVersion": 1
        },
        {
          "id": "48c2ca3f-857d-4e4a-9e02-ff3c3741dcfa",
          "name": "🆕 New Ticket Webhook",
          "type": "n8n-nodes-base.webhook",
          "position": [
            544,
            2080
          ],
          "parameters": {
            "path": "create-ticket",
            "options": {},
            "httpMethod": "POST"
          },
          "typeVersion": 2.1
        },
        {
          "id": "f1a4c78a-9a5d-40cd-bb99-136b1b776b54",
          "name": "📄 Update Ticket Webhook",
          "type": "n8n-nodes-base.webhook",
          "position": [
            544,
            2272
          ],
          "parameters": {
            "path": "update-ticket",
            "options": {},
            "httpMethod": "POST"
          },
          "typeVersion": 2.1
        },
        {
          "id": "6a1887df-1e4c-4eed-8349-d0671501e1e1",
          "name": "Webhook Trigger Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            384,
            2480
          ],
          "parameters": {
            "width": 324,
            "height": 760,
            "content": "## 🎣 Webhook Trigger & Data Entry\n\n*Entry point for Linear-to-Freshdesk synchronization:*\n\n• **Linear Webhook - Issue Updated** - Receives webhook notifications when Linear issues are modified\n\n*This webhook serves as the reverse sync trigger, capturing Linear issue updates and initiating the process to sync changes back to corresponding Freshdesk tickets.*"
          },
          "typeVersion": 1
        },
        {
          "id": "e7943820-74be-4bf5-b823-5b87829444fb",
          "name": "Logging Error Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1392,
            2480
          ],
          "parameters": {
            "color": 5,
            "width": 452,
            "height": 768,
            "content": "## 📊 Logging & Error Management\n\n*Comprehensive monitoring for reverse sync operations:*\n\n• **Log Freshdesk Update Success** - Records successful ticket updates with timestamps and IDs\n• **Log Missing Ticket ID Error** - Captures cases where Linear issues lack Freshdesk ticket references\n\n*This logging system provides visibility into reverse sync operations, enabling troubleshooting of failed updates and maintaining audit trails for Linear-to-Freshdesk synchronization.*"
          },
          "typeVersion": 1
        },
        {
          "id": "848d05ae-fb8a-473f-be86-4b4c922ba031",
          "name": "🎣 Linear Issue Updated Webhook",
          "type": "n8n-nodes-base.webhook",
          "position": [
            560,
            2912
          ],
          "parameters": {
            "path": "linear-issue-updated",
            "options": {}
          },
          "typeVersion": 1
        },
        {
          "id": "8fc267ea-44fd-43e3-84e1-26a104e7d36e",
          "name": "📄 Map Linear to Freshdesk Fields",
          "type": "n8n-nodes-base.function",
          "position": [
            784,
            2912
          ],
          "parameters": {
            "functionCode": "// Map Linear state to Freshdesk status\nconst linearState = items[0].json.data.state.name.toLowerCase();\nlet freshdeskStatus = 2; // Default to Open\n\nswitch(linearState) {\n  case 'todo':\n  case 'backlog':\n    freshdeskStatus = 2; // Open\n    break;\n  case 'in progress':\n  case 'in_progress':\n    freshdeskStatus = 3; // Pending\n    break;\n  case 'done':\n  case 'completed':\n    freshdeskStatus = 4; // Resolved\n    break;\n  case 'canceled':\n  case 'cancelled':\n    freshdeskStatus = 5; // Closed\n    break;\n}\n\n// Map Linear priority to Freshdesk priority\nconst linearPriority = items[0].json.data.priority || 3;\nlet freshdeskPriority = 2; // Default to Medium\n\nswitch(linearPriority) {\n  case 1: // Urgent\n    freshdeskPriority = 4;\n    break;\n  case 2: // High\n    freshdeskPriority = 3;\n    break;\n  case 3: // Medium\n    freshdeskPriority = 2;\n    break;\n  case 4: // Low\n    freshdeskPriority = 1;\n    break;\n}\n\n// Extract Freshdesk ticket ID from Linear issue description\nconst description = items[0].json.data.description || '';\nconst ticketIdMatch = description.match(/Freshdesk Ticket ID: (\\d+)/);\nconst freshdeskTicketId = ticketIdMatch ? ticketIdMatch[1] : null;\n\nreturn [{\n  json: {\n    ...items[0].json,\n    freshdeskStatus: freshdeskStatus,\n    freshdeskPriority: freshdeskPriority,\n    freshdeskTicketId: freshdeskTicketId,\n    linearTitle: items[0].json.data.title,\n    linearDescription: items[0].json.data.description\n  }\n}];"
          },
          "typeVersion": 1
        },
        {
          "id": "ba73505f-c43e-4cf1-919a-53d71226fa4c",
          "name": "🔍 Check if Freshdesk Ticket ID Exists",
          "type": "n8n-nodes-base.if",
          "position": [
            1008,
            2912
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 1,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "ticket_id_exists",
                  "operator": {
                    "type": "string",
                    "operation": "notEmpty"
                  },
                  "leftValue": "={{ $json.freshdeskTicketId }}",
                  "rightValue": ""
                }
              ]
            }
          },
          "typeVersion": 2
        },
        {
          "id": "2461420b-58df-4266-8ba6-143842afc09c",
          "name": "🎫 Update Freshdesk Ticket",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            1232,
            2816
          ],
          "parameters": {
            "url": "=https://{{ $vars.FRESHDESK_DOMAIN }}.freshdesk.com/api/v2/tickets/{{ $json.freshdeskTicketId }}",
            "options": {},
            "sendBody": true,
            "sendHeaders": true,
            "authentication": "genericCredentialType",
            "bodyParameters": {
              "parameters": [
                {}
              ]
            },
            "genericAuthType": "httpBasicAuth",
            "headerParameters": {
              "parameters": [
                {
                  "name": "Content-Type",
                  "value": "application/json"
                }
              ]
            }
          },
          "typeVersion": 4
        },
        {
          "id": "7b907b6a-1968-4d4e-9eb2-d2458179c95e",
          "name": "⚠️ Log Missing Ticket ID Error",
          "type": "n8n-nodes-base.function",
          "position": [
            1456,
            3088
          ],
          "parameters": {
            "functionCode": "// Log error details\nconst errorData = {\n  timestamp: new Date().toISOString(),\n  workflow: 'Sync Freshdesk and Linear tickets',\n  error: 'No Freshdesk Ticket ID found in Linear issue',\n  linearIssueId: items[0].json.data.id,\n  linearIssueTitle: items[0].json.data.title,\n  linearDescription: items[0].json.data.description\n};\n\nconsole.error('Missing Freshdesk Ticket ID:', JSON.stringify(errorData, null, 2));\n\nreturn [{\n  json: {\n    error: true,\n    message: 'No Freshdesk Ticket ID found in Linear issue description',\n    details: errorData\n  }\n}];"
          },
          "typeVersion": 1
        },
        {
          "id": "e8bc7b41-59b5-4e5e-945a-33d5f13880dc",
          "name": "✅ Log Freshdesk Update Success",
          "type": "n8n-nodes-base.function",
          "position": [
            1456,
            2816
          ],
          "parameters": {
            "functionCode": "// Log successful sync\nconst successData = {\n  timestamp: new Date().toISOString(),\n  workflow: 'Sync Freshdesk and Linear tickets',\n  message: 'Successfully synced Linear issue to Freshdesk ticket',\n  freshdeskTicketId: items[0].json.freshdeskTicketId,\n  linearIssueId: items[0].json.data?.id,\n  action: 'update_freshdesk_from_linear'\n};\n\nconsole.log('Sync Success:', JSON.stringify(successData, null, 2));\n\nreturn [{\n  json: {\n    success: true,\n    message: 'Successfully updated Freshdesk ticket from Linear issue',\n    details: successData\n  }\n}];"
          },
          "typeVersion": 1
        },
        {
          "id": "bdbfdef4-f069-452e-ab92-649ce6763a27",
          "name": "API Operations Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            960,
            2480
          ],
          "parameters": {
            "color": 3,
            "width": 420,
            "height": 768,
            "content": "## 🎯 API Operations & Validation\n\n*External communication and data integrity checks:*\n\n• **Check if Freshdesk Ticket ID Exists** - Validates that Linear issue contains valid Freshdesk ticket reference\n• **Update Freshdesk Ticket** - Makes REST API calls to Freshdesk to update ticket with synced data\n\n*These nodes ensure reliable reverse sync by validating ticket linkage before attempting updates and handling the actual API communication with Freshdesk.*"
          },
          "typeVersion": 1
        },
        {
          "id": "46662f60-8cda-4f1a-ab36-b30b0d2caa44",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            720,
            2480
          ],
          "parameters": {
            "color": 3,
            "width": 224,
            "height": 768,
            "content": "## 📄 Data Transformation & Field Mapping\n\n*Critical data processing back to Freshdesk:\n• Map Linear → Freshdesk Fields — Converts Linear issue data into Freshdesk format, handling state mapping (todo/backlog→Open, in_progress→Pending, done→Resolved, canceled→Closed), priority conversion (1—4 ↔ 4—1), and restoring the original Freshdesk ticket ID from the description.*"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "connections": {
        "🆕 New Ticket Webhook": {
          "main": [
            [
              {
                "node": "🗺️ Map Freshdesk Fields to Linear",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🎯 Create Linear Issue": {
          "main": [
            [
              {
                "node": "✅ Check Linear Creation Success",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "📄 Update Ticket Webhook": {
          "main": [
            [
              {
                "node": "🗺️ Map Freshdesk Fields to Linear",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🎫 Update Freshdesk Ticket": {
          "main": [
            [
              {
                "node": "✅ Log Freshdesk Update Success",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "✅ Check Linear Creation Success": {
          "main": [
            [
              {
                "node": "🔗 Link Freshdesk with Linear ID",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "❌ Log Linear Creation Error",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🎣 Linear Issue Updated Webhook": {
          "main": [
            [
              {
                "node": "📄 Map Linear to Freshdesk Fields",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🔗 Link Freshdesk with Linear ID": {
          "main": [
            [
              {
                "node": "🎉 Log Linear Creation Success",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "📄 Map Linear to Freshdesk Fields": {
          "main": [
            [
              {
                "node": "🔍 Check if Freshdesk Ticket ID Exists",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🗺️ Map Freshdesk Fields to Linear": {
          "main": [
            [
              {
                "node": "🎯 Create Linear Issue",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "🔍 Check if Freshdesk Ticket ID Exists": {
          "main": [
            [
              {
                "node": "🎫 Update Freshdesk Ticket",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "⚠️ Log Missing Ticket ID Error",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 22,
      "nodeTypes": {
        "n8n-nodes-base.if": {
          "count": 2
        },
        "n8n-nodes-base.webhook": {
          "count": 3
        },
        "n8n-nodes-base.function": {
          "count": 6
        },
        "n8n-nodes-base.stickyNote": {
          "count": 8
        },
        "n8n-nodes-base.httpRequest": {
          "count": 3
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Avkash Kakdiya",
      "username": "itechnotion",
      "bio": "🚀 Founder of iTechNotion — we build custom AI-powered automation workflows for startups, agencies, and founders.\n💡 Specializing in agentic AI systems, content automation, sales funnels, and digital workers.\n🔧 14+ years in tech | Building scalable no-code/low-code solutions using n8n, OpenAI, and other API-first tools.\n📬 Let’s automate what slows you down.",
      "verified": true,
      "links": [
        "https://calendly.com/itechnotion_sales/schedule-your-expert-consultation-for-automation"
      ],
      "avatar": "https://gravatar.com/avatar/cd18cea4647ff1df4cb154c7d172ca67dcf656f09a3f1ffece5646296d1822d5?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 14,
        "icon": "fa:code",
        "name": "n8n-nodes-base.function",
        "codex": {
          "data": {
            "alias": [
              "Code",
              "Javascript",
              "Custom Code",
              "Script",
              "cpde"
            ],
            "details": "The Function node allows you to execute JavaScript in your workflow. Unlike the Function Item node, this node does not operate on incoming node data per-item. Instead, you must iterate over multiple items of incoming data yourself. This can be useful if you're performing data transformation where you want to manipulate the number of items being outputted by the node (i.e. 1 item is inputted in with nested object, 10 items are outputted without any nested objects)",
            "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/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/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/database-monitoring-and-alerting-with-n8n/",
                  "icon": "📡",
                  "label": "Database Monitoring and Alerting with 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/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/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-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/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/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/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/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Function",
          "color": "#FF9922"
        },
        "iconData": {
          "icon": "code",
          "type": "icon"
        },
        "displayName": "Function",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 19,
        "icon": "file:httprequest.svg",
        "name": "n8n-nodes-base.httpRequest",
        "codex": {
          "data": {
            "alias": [
              "API",
              "Request",
              "URL",
              "Build",
              "cURL"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/world-poetry-day-workflow/",
                  "icon": "📜",
                  "label": "Celebrating World Poetry Day with a daily poem in Telegram"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/",
                  "icon": "🎨",
                  "label": "Automate Designs with Bannerbear and n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/",
                  "icon": "🧰",
                  "label": "How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/automations-for-activists/",
                  "icon": "✨",
                  "label": "How Common Knowledge use workflow automation for activism"
                },
                {
                  "url": "https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/",
                  "icon": "🤟",
                  "label": "Creating scheduled text affirmations with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "HTTP Request",
          "color": "#0004F5"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "HTTP Request",
        "typeVersion": 4,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 20,
        "icon": "fa:map-signs",
        "name": "n8n-nodes-base.if",
        "codex": {
          "data": {
            "alias": [
              "Router",
              "Filter",
              "Condition",
              "Logic",
              "Boolean",
              "Branch"
            ],
            "details": "The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/",
                  "icon": "🤬",
                  "label": "Create a toxic language detector for Telegram in 4 step"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/",
                  "icon": "🏷️",
                  "label": "How to automatically manage contributions to open-source projects"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "If",
          "color": "#408000"
        },
        "iconData": {
          "icon": "map-signs",
          "type": "icon"
        },
        "displayName": "If",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 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"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 31,
        "name": "Content Creation"
      },
      {
        "id": 41,
        "name": "Ticket Management"
      }
    ],
    "image": []
  }
}