# Discourse Zendesk

**URL:** https://meta.discourse.org/t/discourse-zendesk/68005
**Category:** Plugin
**Tags:** official, zendesk, included-in-core
**Created:** [August 14, 2017, 10:03am UTC](https://meta.discourse.org/t/discourse-zendesk/68005 "2017-08-14T10:03:00Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![Discourse](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/discourse/32/148734_2.png) [@Discourse](https://meta.discourse.org/u/Discourse)
#### Post date: [August 14, 2017, 10:03am UTC](https://meta.discourse.org/t/discourse-zendesk/68005/1 "2017-08-14T10:03:00Z")

</div>

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

> [@](#):
>
> :discourse2: As this is an #official plugin maintained by the Discourse team, #Support, #Contribute > Bug, #Contribute > UX, and #Contribute > Feature requests can be made in the respective categories here on Meta, and tagged with the appropriate plugin tag. Click on a link below to get one started. 👍
> 
> [❓&nbsp; **Support**](https://meta.discourse.org/new-topic?category_id=6&body=%3E%20Before%20asking,%20did%20you%20search%20first%3F%20Press%20%F0%9F%94%8D%20at%20the%20upper%20right%20to%20search.&tags=zendesk "Ask for support on configuring and using Discourse Zendesk") [🐛&nbsp; **Bug**](https://meta.discourse.org/new-topic?category_id=1&tags=zendesk "A bug report means something is broken, preventing normal/typical use of the plugin") [👀&nbsp; **UX**](https://meta.discourse.org/new-topic?category_id=9&tags=zendesk "Discussion about the user interface of Discourse Zendesk, and how features are presented (including language and UI elements)") [💡&nbsp; **Feature**](https://meta.discourse.org/new-topic?category_id=2&tags=zendesk "Discussion about how existing Discourse Zendesk features can be improved or enhanced, and how proposed new features could work")

> ⚠ As Zendesk will [permanently deactivate API-token authentication on April 30, 2027](https://support.zendesk.com/hc/en-us/articles/4408889192858-Managing-API-token-access-to-the-Zendesk-API), existing installations need to [migrate to authentication via OAuth](https://meta.discourse.org/t/discourse-zendesk/68005#p-317283-configure-oauth-6).

### 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:

 ![image](https://global.discourse-cdn.com/meta/original/4X/f/8/d/f8df67de01b4842ec1b3159f549bc2a7b4213a7a.png)

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:

 ![image](https://global.discourse-cdn.com/meta/original/4X/0/6/c/06cdb436607867fde979a1c50a5e689c05ff6bc9.png)

#### 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](https://meta.discourse.org/t/how-to-enable-zendesk-two-way-sync/177412).

- `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 document**
> >
> > Perform check on document:

---

<div class="post-metadata">

### Author: ![Rob\_Lauer](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rob_lauer/32/120332_2.png) [@Rob\_Lauer](https://meta.discourse.org/u/Rob_Lauer)
#### Post date: [April 19, 2023, 8:37pm UTC](https://meta.discourse.org/t/discourse-zendesk/68005/44 "2023-04-19T20:37:07Z")

</div>

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!

---

<div class="post-metadata">

### Author: ![acorrea](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/acorrea/32/302650_2.png) [@acorrea](https://meta.discourse.org/u/acorrea)
#### Post date: [July 19, 2023, 2:59pm UTC](https://meta.discourse.org/t/discourse-zendesk/68005/45 "2023-07-19T14:59:28Z")

</div>

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?

---

<div class="post-metadata">

### Author: ![TheDevBird](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thedevbird/32/325490_2.png) [@TheDevBird](https://meta.discourse.org/u/TheDevBird)
#### Post date: [September 8, 2023, 5:14pm UTC](https://meta.discourse.org/t/discourse-zendesk/68005/46 "2023-09-08T17:14:14Z")

</div>

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:

 ![image](https://global.discourse-cdn.com/meta/original/4X/7/0/a/70aa5c3ae153c2de7c8dab4bd9f3c7dc17af99a9.png)

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!

---

<div class="post-metadata">

### Author: ![jessii](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jessii/32/354015_2.png) [@jessii](https://meta.discourse.org/u/jessii)
#### Post date: [September 13, 2023, 11:26am UTC](https://meta.discourse.org/t/discourse-zendesk/68005/48 "2023-09-13T11:26:47Z")

</div>

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.

> [@TheDevBird](#):
>
> The sync plugin sees the new comment in Zendesk and syncs it back into Discourse

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](https://meta.discourse.org/t/enable-zendesk-two-way-sync/177412) on ZD when you first setup the plugin?

---

<div class="post-metadata">

### Author: ![TheDevBird](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thedevbird/32/325490_2.png) [@TheDevBird](https://meta.discourse.org/u/TheDevBird)
#### Post date: [September 13, 2023, 6:57pm UTC](https://meta.discourse.org/t/discourse-zendesk/68005/49 "2023-09-13T18:57:34Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![TheDevBird](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/thedevbird/32/325490_2.png) [@TheDevBird](https://meta.discourse.org/u/TheDevBird)
#### Post date: [September 13, 2023, 7:51pm UTC](https://meta.discourse.org/t/discourse-zendesk/68005/50 "2023-09-13T19:51:02Z")

</div>

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?

 ![image](https://global.discourse-cdn.com/meta/original/4X/0/c/f/0cf0c80bf1324377ed77ba37a3872e7c7751caf5.png)

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.

---

<div class="post-metadata">

### Author: ![PeakProsperity](https://avatars.discourse-cdn.com/v4/letter/p/c57346/32.png) [@PeakProsperity](https://meta.discourse.org/u/PeakProsperity)
#### Post date: [November 9, 2023, 12:33pm UTC](https://meta.discourse.org/t/discourse-zendesk/68005/51 "2023-11-09T12:33:32Z")

</div>

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?

---

<div class="post-metadata">

### Author: ![abinash889](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/abinash889/32/444102_2.png) [@abinash889](https://meta.discourse.org/u/abinash889)
#### Post date: [August 27, 2024, 3:15am UTC](https://meta.discourse.org/t/discourse-zendesk/68005/52 "2024-08-27T03:15:45Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![gormus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gormus/32/428592_2.png) [@gormus](https://meta.discourse.org/u/gormus)
#### Post date: [July 15, 2025, 8:33am UTC](https://meta.discourse.org/t/discourse-zendesk/68005/53 "2025-07-15T08:33:44Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![tobiaseigen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobiaseigen/32/539204_2.png) [@tobiaseigen](https://meta.discourse.org/u/tobiaseigen)
#### Post date: [July 16, 2025, 9:55pm UTC](https://meta.discourse.org/t/discourse-zendesk/68005/54 "2025-07-16T21:55:32Z")

</div>

🥳 This plugin is now bundled with Discourse core as part of [Bundling more popular plugins with Discourse core](https://meta.discourse.org/t/bundling-more-popular-plugins-with-discourse-core/373574). If you are self-hosting and use the plugin, you need to remove it from your `app.yml` before your next upgrade.

---

<div class="post-metadata">

### Author: ![tgxworld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tgxworld/32/106117_2.png) [@tgxworld](https://meta.discourse.org/u/tgxworld)
#### Post date: [September 1, 2026, 4:40am UTC](https://meta.discourse.org/t/discourse-zendesk/68005/57 "2026-09-01T04:40:21Z")

</div>

@gormus I was updating the plugin to support OAuth tokens for authenticating with Zendesk and saw your request here. Was curious if group based visibility of the zendesk buttons is still something that will still be helpful to you.
