Create Zendesk tickets
This plugin allows you to create Zendesk tickets from Discourse topics. This can be done either by configuring the plugin so that all topics in a category automatically generate Zendesk tickets, or by pushing individual topics to Zendesk by clicking the “Create Zendesk Ticket” button that’s displayed for site staff below each topic:
When the ticket is created, the author of the topic’s first post will be set as the Requester on Zendesk. They will also be added to your Zendesk customers list.
After the ticket has been created, the “Create Zendesk Ticket” button will be updated to “View on Zendesk.” Clicking that button will take you to the associated Zendesk ticket:
Push replies created on Discourse to Zendesk
The plugin allows you to optionally push all replies to the Discourse topic to the Zendesk ticket, or to only push replies created by the topic’s author. Both of these features are configurable via the plugin’s settings.
Sync Zendesk comments with Discourse
Zendesk comment can be synced with the Discourse topic that the ticket originated on.
The Discourse Zendesk settings can be accessed from the Plugins page of your Discourse site’s Admin section. Click the “Settings” button for the “discourse-zendesk-plugin” entry on that page to access the settings.
zendesk url : enter the URL of your Zendesk account, followed by
api/v2 . For example,
zendesk enabled : used to enable and disable the plugin.
zendesk jobs api token : details for generating the API token on Zendesk are here: Generating a new API token – Zendesk help. Copy that token to this Discourse setting.
zendesk jobs email : the email address of a staff user on your Zendesk account that also has an admin account on your Discourse site.
zendesk autogenerate all categories (formerly
zendesk enable all categories) : if enabled, all topics on your Discourse site will automatically generate Zendesk tickets. This setting is disabled by default.
zendesk autogenerate categories (formerly
zendesk enabled categories) : a list of Discourse categories that will have all new topics automatically pushed to Zendesk.
zendesk job push all posts and
zendesk job push only author posts : both of these settings are disabled by default. Enable one of them if you want to push either all replies, or only the topic author’s replies to Zendesk.
sync comments from zendesk and
zendesk incoming webhook token : these two settings are used to sync comments from Zendesk to Discourse. Details about how to configure syncing Zendesk comments to Discourse are here: How to enable Zendesk two-way sync
zendesk tags : an optional list of tags to append to all Zendesk tickets that originate on your Discourse site.
I’d love to make a feature request for this Zendesk integration:
The ability to both send replies to Zendesk as comments, and pull comments from Zendesk as replies is really critical for us. However, the only way to perform the latter is to have specified Discourse category topics automatically create Zendesk tickets.
I would much rather there was a way to have manually-created Zendesk tickets also have this ability to pull in comments as replies! This is because we have a triage process in place where only some customer-created topics would need to be forwarded to Zendesk. We wouldn’t want to allow our end users to also create Zendesk tickets behind the scenes.
Thank you very much for the plugin, it has helped us a lot!
I’d like some help with the following problem:
- In Zendesk, when we create “internal notes” (private notes) in a ticket, those internal notes do not produce a Discourse whisper
- I implemented a webhook in Zendesk to create a whisper for every internal note, however, that whisper is then pushed to Zendesk because of the normal work of the plugin.
So, my question is: is there a way of preventing the plugin from creating a new comment on Zendesk when I create the whispers from the internal notes, as described above?
I know I can disable the sync for all posts, but the goal would be to not sync just those whispers that I create via the Discourse API.
Do you know if there is an easy fix for that?
I’m not sure if this is the right place to report a bug, so let me know if I should move this somewhere else.
We have been using this plugin for a few weeks now and it has worked well overall. However, we have found one issue where the plugin seems to double-sync comments. What I think is happening is:
- User sends a post in Discourse
- It is synced into Zendesk
- The sync plugin sees the new comment in Zendesk and syncs it back into Discourse
Here is what we are seeing visually where John (the admin who set up the plugin) sometimes sends duplicates of other user’s messages without his intervention. This is coming from the discourse sync plugin:
On the Zendesk side, we do not see any duplicate Replies, and only see the one from the user (can’t post a second screenshot due to the limits of this forum).
Expanding the history view of the ticket doesn’t show any abnormalities on Zendesk.
Any ideas on what could be going wrong or how we can debug this?
Hey Shane! I’ve tried testing this out to see if I can replicate the issue but so far I’m not running into the same issue.
To confirm, it sounds like ZD is just automatically sending back the comment to Discourse. John isn’t quoting or copying/pasting the comment?
Did you setup any additional triggers on ZD when you first setup the plugin?
Thanks for jumping in! Yeah, this is a software issue, John isn’t posting these messages himself.
I will look into our triggers and test disabling them and re-enabling. Unfortunately, I haven’t found any similarities between when or why this happens, so I don’t have a direct way to repro.
I found a trigger that, whenever a ticket is updated and it has the
discourse tag, it will notify the Discourse sync webhook through a PUT request. I wasn’t the one who set up the plugin, but could this be the culprit?
Other than that trigger, I don’t see any other automations that would be interfering. I have asked our Discoruse admins to return a list of all of John’s comments (including the ones we deleted) so I can cross-reference each instance to attempt to find a connection.