Opening Problem Statement
Meet Sarah, a customer support manager at a fast-growing tech company. Every day, her team handles dozens of support tickets via Zendesk. Many of these tickets require escalation to the development team for bug fixes or feature requests tracked in Jira. However, Sarah’s team struggles with the tedious process of manually creating corresponding Jira issues from Zendesk tickets and linking them back. This manual task wastes over an hour daily, often leads to errors like missing issue references, and causes delays in resolving customer problems.
The communication gap between Zendesk and Jira frustrates Sarah and her teams, leading to inefficiencies and slower issue resolution. They need a reliable automation that ties Zendesk tickets directly with Jira issues — automatically creating issues when needed and keeping both systems updated without duplicated effort.
What This Automation Does
This n8n workflow acts as a bridge between Zendesk and Jira, automating the ticket-to-issue process with precision. When a new Zendesk ticket is created, the workflow:
- Receives a webhook trigger for the new Zendesk ticket.
- Gets the full ticket details from Zendesk including subject and custom fields.
- Checks if a Jira issue key already exists linked in the Zendesk ticket.
- If the issue exists, adds a comment from the Zendesk ticket’s latest comment to the existing Jira issue.
- If it doesn’t exist, creates a new Jira issue using the ticket’s subject and description, including a direct link to the Zendesk ticket.
- Finally, updates the Zendesk ticket to store the Jira issue key in a custom field for future reference.
This automation saves Sarah’s team about 1+ hour daily, reduces manual errors, and ensures smooth collaboration between support and development.
Prerequisites ⚙️
- Zendesk account with API access and a custom field configured to hold the Jira Issue Key. 📧
- Jira Software Cloud account with API credentials. 🔑
- n8n account to build and run the workflow. ⚙️
- Webhook URL accessible by Zendesk to trigger the workflow via new tickets.
Optionally, you can self-host n8n for more control over data and scaling (check out Hostinger for self-hosting n8n).
Step-by-Step Guide to Build This Workflow
Step 1: Configure the Webhook trigger for new Zendesk tickets
In n8n, click Add Node → Search and add “Webhook”.
Set the HTTP Method to POST and define the Path (e.g., d596c0c6-7377-4a17-9ed5-6ee953f072b9 or a custom slug).
Copy the generated webhook URL and configure Zendesk to send a POST request upon new ticket creation to this URL.
Expected Outcome: n8n receives new ticket payloads to trigger the workflow.
Common Mistake: Forgetting to set Zendesk’s trigger or webhook to POST to this URL.
Step 2: Add the Zendesk node to retrieve full ticket details
Add the Zendesk node from n8n’s nodes, set operation to get.
In the Parameters, map the ticket ID using an expression: {{$node["On new Zendesk ticket"].json["body"]["id"]}}.
Provide your Zendesk API credentials.
This step ensures you have all ticket details, including custom fields.
Common Mistake: Using incorrect expressions for ticket ID or missing API credentials.
Step 3: Use a Function node to check if a Jira issue key is already linked
Add a Function node named “Determine”.
Paste this JavaScript code:
const ISSUE_KEY_FIELD_ID = 6689934837021;
new_items = [];
for (item of $items("Get ticket")) {
var custom_fields = item.json["custom_fields"];
var jira_issue_key = "";
for (var i = 0; i < custom_fields.length; i++) {
if (custom_fields[i].id == ISSUE_KEY_FIELD_ID) {
jira_issue_key = custom_fields[i].value;
break;
}
}
new_items.push({
"Jira issue key": jira_issue_key
});
}
return new_items;This extracts the Jira issue key from Zendesk ticket's custom fields.
Common Mistake: Using wrong custom field ID for Jira issue key.
Step 4: Add an IF node to branch based on Jira issue key existence
Add an IF node.
Set Condition to check if {{$node["Determine"].json["Jira issue key"]}} is not empty.
True path means the issue exists; False path means create a new Jira issue.
Common Mistake: Incorrect expression syntax causing workflow to always take one branch.
Step 5: Create a new Jira issue if no issue exists
On the IF node's False output, add a Jira node set to create issue.
Configure the Jira project ID, issue type ID, and use expression to map the summary from Zendesk ticket's subject.
In additional fields, set description field with a link back to Zendesk ticket, e.g., See Zendesk issue at: https://n8n.zendesk.com/agent/tickets/{{$node["Get ticket"].json["id"]}}.
Provide your Jira API credentials.
Common Mistake: Forgetting to update or input correct project and issueType IDs.
Step 6: Update the Zendesk ticket to store the Jira issue key
Following successful Jira issue creation, add another Zendesk node on this path with update operation.
Pass the Zendesk ticket ID and update the custom field (by ID) to the Jira issue key returned from Jira.
Common Mistake: Incorrect custom field IDs or mismatch data types causing update failures.
Step 7: Add a comment to the existing Jira issue if it exists
On the IF node's True output, add another Jira node to create an issue comment.
Map the issueKey from the detected Jira issue key, and set the comment text using the new Zendesk ticket comment content.
This ensures the Jira issue stays updated with the latest communication from Zendesk.
Common Mistake: Not mapping the comment or issueKey correctly causing errors.
Step 8: Connect all nodes and test the workflow
Make sure every node is properly connected as follows:
- Webhook → Get ticket → Determine → IF
- IF (true) → Create comment to existing issue
- IF (false) → Create issue in Jira → Update ticket in Zendesk
Save and activate your workflow.
Customizations ✏️
- Change Jira Project or Issue Type: In the "Create issue" node, change
projectorissueTypefields to target different Jira projects or issue types. - Change Zendesk Custom Field ID: In the "Determine" function node and "Update ticket" node, update the custom field ID to match your Zendesk environment.
- Modify Description Content: Customize the Jira issue description in "Create issue" to add more details about the Zendesk ticket or business context.
- Add Additional Jira Comments: Extend the "Create comment to existing issue" node to append custom information or format comments as needed.
Troubleshooting 🔧
- Problem: "Error 401 Unauthorized" from Jira nodes.
Cause: Incorrect or expired Jira API credentials.
Solution: Go to Jira node credentials and re-enter or refresh your API keys under Credentials → Jira Software Cloud API. - Problem: Zendesk ticket update fails with "custom field value not accepted".
Cause: Wrong custom field ID or invalid data format.
Solution: Verify custom field ID in Zendesk admin and ensure the value data type matches expected Jira issue key string. - Problem: IF node always directing to false or true branch unexpectedly.
Cause: Misconfigured expression or unexpected blank field.
Solution: Test the expression{{$node["Determine"].json["Jira issue key"]}}returns expected value and adjust IF node conditions accordingly.
Pre-Production Checklist ✅
- Verify Zendesk webhook fires and hits the n8n Webhook node with correct payload.
- Confirm Zendesk API credentials are valid with permission to get and update tickets.
- Check Jira project ID and issue type ID are correct and accessible by API credentials.
- Test the Function node’s code snippet returns the Jira issue key properly from Zendesk ticket fields.
- Test workflow by creating test Zendesk tickets and observe if Jira issues are created/updated.
- Have a rollback plan to disable workflow if unexpected errors occur.
Deployment Guide
Activate the workflow by clicking the Activate button in n8n.
Ensure your Zendesk trigger is live and posting to the workflow's webhook URL.
Monitor the workflow runs via n8n Execution List to track successful runs and errors.
Consider adding notifications on failure nodes for alerting if needed.
FAQs
- Can I use a different helpdesk or project tracking tool?
Yes, but you would need corresponding nodes or HTTP requests for those tools instead of Zendesk and Jira. - Does this consume API rate limits?
Yes, both Zendesk and Jira have API limits; monitor usage to avoid disruptions. - Is my data secure?
Yes, API tokens are stored securely in n8n credentials, but consider self-hosting for full control. - Can this handle large volumes of tickets?
It depends on your n8n instance and API limits, but it is designed to handle everyday support volumes smoothly.
Conclusion
By building this n8n workflow, Sarah and her team can automatically synchronize Zendesk tickets with Jira issues without manual intervention. This workflow eliminates tedious manual steps, prevents errors linking tickets and issues, and saves over an hour daily.
Next, you might automate syncing Jira issue status back to Zendesk ticket status or create detailed reporting dashboards to monitor ticket resolution times. Start small and build a connected system that brings clarity and speed to your support and development process.