AutomationFlowsSlack & Telegram › Zendesk Workflow

Zendesk Workflow

Zendesk Workflow. Uses zendesk, slack. Webhook trigger; 9 nodes.

Webhook trigger★★★★☆ complexity9 nodesZendeskSlack
Slack & Telegram Trigger: Webhook Nodes: 9 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "versionId": "1.0.0",
    "createdAt": "2025-09-29T07:07:42.328752",
    "updatedAt": "2025-09-29T07:07:42.328769",
    "owner": "n8n-user",
    "license": "MIT",
    "category": "automation",
    "status": "active",
    "priority": "high",
    "environment": "production"
  },
  "nodes": [
    {
      "id": "b220e0c7-3c34-4221-8fee-11c133a5345b",
      "name": "Get ticket",
      "type": "n8n-nodes-base.zendesk",
      "position": [
        740,
        540
      ],
      "parameters": {
        "id": "={{$(\"On new Zendesk ticket\").item.json[\"body\"][\"id\"]}}",
        "operation": "get"
      },
      "credentials": {
        "zendeskApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1,
      "notes": "This zendesk node performs automated tasks as part of the workflow."
    },
    {
      "id": "e58834a7-1a94-429f-a50c-2e27293c32a0",
      "name": "If Node",
      "type": "n8n-nodes-base.if",
      "position": [
        1140,
        540
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$(\"Determine\").item.json[\"Slack Thread ID\"]}}",
              "operation": "isNotEmpty"
            }
          ]
        }
      },
      "typeVersion": 1,
      "notes": "This if node performs automated tasks as part of the workflow."
    },
    {
      "id": "c6f82ab9-54f4-4f91-a4d9-018739c6519d",
      "name": "Update ticket",
      "type": "n8n-nodes-base.zendesk",
      "notes": "Update the Zendesk ticket by adding the Jira issue key to the \"Jira Issue Key\" field.",
      "position": [
        1540,
        640
      ],
      "parameters": {
        "id": "={{$(\"On new Zendesk ticket\").item.json[\"body\"][\"id\"]}}",
        "operation": "update",
        "updateFields": {
          "customFieldsUi": {
            "customFieldsValues": [
              {
                "id": 7022397804317,
                "value": "={{$(\"Create thread\").item.json[\"ts\"]}}"
              }
            ]
          }
        }
      },
      "credentials": {
        "zendeskApi": {
          "name": "<your credential>"
        }
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "74d93ba5-d82d-4cc4-a177-bd86dbc18534",
      "name": "On new Zendesk ticket",
      "type": "n8n-nodes-base.webhook",
      "position": [
        540,
        540
      ],
      "parameters": {
        "path": "your-webhook-path",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 1,
      "notes": "This webhook node performs automated tasks as part of the workflow."
    },
    {
      "id": "65d387cd-5c7a-4567-9a3c-9fa033f98ac9",
      "name": "Create thread",
      "type": "n8n-nodes-base.slack",
      "position": [
        1340,
        640
      ],
      "parameters": {
        "text": "={{$(\"Get ticket\").item.json[\"subject\"]}}",
        "channel": "={{$(\"Configure\").item.json.parameter[\"values\"][\"string\"][0][\"value\"]}}",
        "attachments": [],
        "otherOptions": {},
        "authentication": "{{ $credentials.oAuth2 }}"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1,
      "notes": "This slack node performs automated tasks as part of the workflow."
    },
    {
      "id": "50f5aa84-70bc-4b08-a9cc-576fbed72636",
      "name": "Create reply on existing thread",
      "type": "n8n-nodes-base.slack",
      "position": [
        1340,
        440
      ],
      "parameters": {
        "text": "={{$(\"On new Zendesk ticket\").item.json[\"body\"][\"comment\"]}}",
        "channel": "={{$(\"Configure\").item.json.parameter[\"values\"][\"string\"][0][\"value\"]}}",
        "attachments": [],
        "otherOptions": {
          "thread_ts": "={{$(\"Determine\").item.json[\"Slack Thread ID\"]}}"
        },
        "authentication": "{{ $credentials.oAuth2 }}"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1,
      "notes": "This slack node performs automated tasks as part of the workflow."
    },
    {
      "id": "6d5e8df0-4b0b-487c-81be-93359976dd90",
      "name": "Configure",
      "type": "n8n-nodes-base.set",
      "position": [
        540,
        360
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "Slack channel",
              "value": "#zendesk-updates"
            }
          ]
        },
        "options": {
          "dotNotation": false
        }
      },
      "typeVersion": 1,
      "notes": "This set node performs automated tasks as part of the workflow."
    },
    {
      "id": "934b95bb-2ffa-40a4-a2ca-02cfd646dd78",
      "name": "Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        360
      ],
      "parameters": {
        "width": 469.4813676974197,
        "height": 268.2900466166276,
        "content": "## Sync Zendesk tickets to Slack threads\n### Setup\n1. Add your [Zendesk credential]({{ $env.WEBHOOK_URL }} to the `Get ticket` and `Update ticket` nodes.\n2. Add your [Slack credential]({{ $env.WEBHOOK_URL }} to `Create Thread` and `Create reply on existing thread` nodes.\n3. Open `Configure` node and change \"Slack channel\" value to your slack channel (like #zendesk-updates).\n4. Activate the workflow so it runs automatically each time a Zendesk ticket is created."
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "b582f7ff-7cc6-48dc-89fc-bc8bde13b06e",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "notes": "if thread was created already in Slack",
      "position": [
        940,
        540
      ],
      "parameters": {
        "jsCode": "/* configure here =========================================================== */\n/*  Zendesk field ID which represents the \"Slack Thread ID\" field.\n*/\nconst ISSUE_KEY_FIELD_ID = 7022397804317;\n\n/* ========================================================================== */\nnew_items = [];\n\nfor (item of $items(\"Get ticket\")) {\n    \n    // instantiate a new variable for status\n    var custom_fields = item.json[\"custom_fields\"];\n    var slack_thread_id = \"\";\n    for (var i = 0; i < custom_fields.length; i++) {\n        if (custom_fields[i].id == ISSUE_KEY_FIELD_ID) {\n            slack_thread_id = custom_fields[i].value;\n            break;\n        }\n    }\n\n    // push the new item to the new_items array\n    new_items.push({\n        \"Slack Thread ID\": slack_thread_id\n    });\n}\n\nreturn new_items;"
      },
      "notesInFlow": true,
      "typeVersion": 1
    }
  ],
  "connections": {
    "On new Zendesk ticket": {
      "main": [
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        []
      ]
    },
    "Create thread": {
      "main": [
        []
      ]
    },
    "Create reply on existing thread": {
      "main": [
        []
      ]
    }
  },
  "name": "Zendesk Workflow",
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": null,
    "timezone": "UTC",
    "executionTimeout": 3600,
    "maxExecutions": 1000,
    "retryOnFail": true,
    "retryCount": 3,
    "retryDelay": 1000
  },
  "description": "Automated workflow: Zendesk Workflow. This workflow integrates 8 different services: webhook, stickyNote, code, set, stopAndError. It contains 13 nodes and follows best practices for error handling and security.",
  "notes": "Excellent quality workflow: Zendesk Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation.",
  "id": "wf46b7d2009805"
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Zendesk Workflow. Uses zendesk, slack. Webhook trigger; 9 nodes.

Source: https://github.com/basictechorg/n8n-messaging-support/blob/main/workflows/customer-support/0273_Code_Webhook_Create_Webhook.json — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

Code. Uses zendesk, slack, stickyNote. Webhook trigger; 9 nodes.

Zendesk, Slack
Slack & Telegram

This workflow creates a Slack thread when a new ticket is created in Zendesk. Subsequent comments on the ticket in Zendesk are added as replies to the thread in Slack. Zendesk account and Zendesk cred

Zendesk, Slack
Slack & Telegram

Code Webhook Create Webhook. Uses zendesk, slack. Webhook trigger; 9 nodes.

Zendesk, Slack
Slack & Telegram

This workflow is built for education businesses, course creators, coaching programs, and online academies that use Close CRM for sales and need to automate everything that happens after a deal closes.

Slack, HTTP Request, Airtable
Slack & Telegram

[STG] Match Diário. Uses slack, httpRequest, postgres, zendesk. Scheduled trigger; 24 nodes.

Slack, HTTP Request, Postgres +2