Discourse Zendesk

:discourse2: Summary Create Zendesk tickets from Discourse topics.
:open_book: Install Guide This plugin is bundled with Discourse core. There is no need to install the plugin separately.

:warning: As Zendesk will permanently deactivate API-token authentication on April 30, 2027, existing installations need to migrate to authentication via OAuth.

Features

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.

Configuration

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.

Configure OAuth

First, create an OAuth client in Zendesk:

  1. In Zendesk Admin Center, go to Apps and integrations > APIs > OAuth clients.
  2. Click Add OAuth client.
  3. Enter a name, description and select Confidential as the client kind. A redirect URL is not required.
  4. Configure Scopes to tickets:read, tickets:write, users:read, and users:write to restrict the OAuth client to only the scopes required by the plugin.
  5. Save the client.
  6. Copy the client’s Identifier and Secret. Zendesk displays the complete secret only once.

Configure these Discourse settings:

  • zendesk oauth client id: enter the OAuth client’s Identifier.
  • zendesk oauth client secret: enter the OAuth client’s Secret.

Other settings

  • zendesk url: enter your Zendesk account URL followed by /api/v2. For example, https://example.zendesk.com/api/v2.

  • zendesk enabled: enable or disable the plugin.

  • zendesk jobs api token: Deprecated. Existing installations should migrate to OAuth.

  • zendesk jobs email: Deprecated. Existing installations should migrate to OAuth.

  • zendesk autogenerate all categories (formerly zendesk enable all categories): automatically create Zendesk tickets for topics in every category. This setting is disabled by default.

  • zendesk autogenerate categories (formerly zendesk enabled categories): select the Discourse categories whose new topics should automatically create Zendesk tickets.

  • zendesk job push all posts: push replies to Zendesk as ticket comments. This setting is enabled by default.

  • zendesk job push only author posts: only push replies written by the original topic author. This setting applies when zendesk job push all posts is enabled and is disabled by default.

  • sync comments from zendesk and zendesk incoming webhook token: sync comments from Zendesk to Discourse. See How to enable Zendesk two-way sync.

  • zendesk tags: an optional list of tags to add to Zendesk tickets created from Discourse.

Last edited by @tgxworld 2026-09-01T00:27:49Z

Check documentPerform check on document:
37개의 좋아요

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.

Thanks!

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?

1개의 좋아요

Hey!

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:

  1. User sends a post in Discourse
  2. It is synced into Zendesk
  3. 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?

Thanks!

6개의 좋아요

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?

3개의 좋아요

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.

2개의 좋아요

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.

4개의 좋아요

I’ve been using and really liking the Zendesk plugin. However, something unexpected just happened. When another member of the team (somebody who used to be an agent in Zendesk) replied to a thread in Discourse, Zendesk sent the message back to Discourse. So, it’s posted in the Discourse topic twice, once authored by the team member who posted it in Discourse, and again by the current assignee of the ticket in Zendesk.

Has anybody run into this and have a solution?

Hello,

I’m encountering an issue where private topics created on the community side are not being generated in Zendesk. Could someone please advise if there are any specific settings or configurations needed to ensure that private topics are correctly synced to Zendesk?

Thank you in advance for your help.

1개의 좋아요

I have a feature request : )

I see that the “Create/View Zendesk Ticket” buttons are only visible to staff.

Could the visibility of these buttons controlled by new zendesk_create_ticket_allowed_groups and zendesk_view_ticket_allowed_groups plugin settings for more flexibility?

I don’t necessarily want to grand admin or moderator roles to our support teams. They are of-course the admins of their (Zendesk) domain, but IMHO that doesn’t always justify extended privileges on Discourse.

:partying_face: This plugin is now bundled with Discourse core as part of Bundling more popular plugins with Discourse core. If you are self-hosting and use the plugin, you need to remove it from your app.yml before your next upgrade.

1개의 좋아요

@gormus Zendesk 인증을 위해 OAuth 토큰을 지원하도록 플러그인을 업데이트하던 중, 여기에서 요청하신 내용을 보았습니다. Zendesk 버튼의 그룹 기반 가시성 기능이 여전히 도움이 될지 궁금해서요.