On and off I’ve seen posters asking about how to use Discourse as a support (or ticketing) platform. I’d like to share my setup here for those with similar needs.
Background
You run/work for an organization. You need to provide pre-sales, after-sales, technical and/or one-on-one support to your customers, agents, distributors and/or partners (which organization doesn’t?).
What is Discourse
Discourse is primarily a forums software, geared towards public, open conversations of various topics. It is incredibly modern and performant, runs at lightning speed, and you have a lot of flexibility in how to setup your environment.
You want to see if you can coerce this fabulous piece of software to do what it isn’t originally designed to do.
Prior Art
- Configure incoming email to create new topics or group messages
- Discourse as a private email support portal
- Set up reply by email with POP3 polling
- Private Topics - are they supported?
- Using discourse as a community ticket system
- How to optimize issue/support ticket like workflow?
- Can incoming Discourse email support replace old ticket portals?
- Create/See and Create Permissions (again)
What You Want
Your customers will open issues, or help tickets, on the system. They either open it under their own folder/category, or you can have some systematic/manual way of reclassifying them later on.
There may be sensitive things discussed, so by default you don’t want each customer to be able to see the issues or inquiries raised by other customers. In other words, each customer conversation should be private.
You want your support teams to each work on their allocated areas/categories. In other words, your teams should be able to see a list of all the support requests in their own categories, and be able to easily sort through them, manage them and follow-up on them without a lot of searching and filtering.
Some information may be sensitive, so each team’s area may be separated from another team’s, so they cannot view each other’s data.
Note: This method assumes that you are creating a dedicated ticketing platform, or that at the very least there will be no overlap between the users of your Discourse web interface and those requesting support tickets.
In the event that you might need to support users who are already on the same instance, consider instead using private messages to a group, and configure inbound email for the group inbox.
Your Problem
-
Some core features are geared towards an open community, and may not be relevant to a private support forum, for example the badges.
-
You looked at the security/permissions system and you don’t find what you want: basically pure
Create
andCreate/Reply
permissions do not exist. -
Your customers don’t really want to go through the hassle of creating an account on your forum just to ask a support question. But you also don’t want to open up your forum to the public and have silly posters come in and waste your time.
You want a way to detail with these one-off inquiries quickly, but leave open the possibility of maintaining a long-term relationship with certain customers.
-
A lot of your customers work with emails, and you want to reply to them via email, but you also want your support teams to be able to manage these requests quickly and easily without digging through piles of email.
How it Will Work
-
You have a bunch of email addresses published for customers to send inquiries. For example, you may have an email address called
wonderful_product@support.example.com
for people to send questions regarding theWonderful Product
product line of your company. -
A customer sends an email to this address.
-
The email is automatically turned into a topic in the appropriate
Wonderful Product
category. -
A staged user (say,
MrFoo
) with no rights is created on the system to track all the requests sent by that email. -
You internal team support staff, under the group
WonderfulProductTeam
, which hasReply/See
permission on theWonderful Product
category, sees the topic and post replies. -
Each reply turns into a reply email back to the originating customer.
-
The customer feels that his/her email is being replied personally.
-
The customer has no way to see the emails of any other customer on the system. Meanwhile, the
WonderProductTeam
sees all the emails sent towonderful_product@support.example.com
all together in a single list. -
You find that user
MrFoo
has been a great contributor and would actually like to involve him into your support pipeline. Go to his user profile and send him an invitation to become a member. Put him in an appropriateGroup
with appropriate access rights. -
MrFoo
, now an valued member of your support organizatio, logs in and sees all his previous emails neatly under his account.
Setup Instructions
Basic Discourse setup
-
Turn off
Settings|Basic Setup|enable badges
because badges are not awarded for posts in non-Everyone categories, which most of your categories will probably be. They will just confuse your users. Keep it if you have large, open-to-all-users categories. -
Turn on
Settings|Basic Setup|enable whispers
if you want whispers. This may be useful when you have many moderators. -
Turn on
Settings|Login|invite only
unless you want to allow customers to self-register themselves. You may not want the hassle. -
Turn on
Settings|Login|login required
because you are not running a public forum. -
Set
Settings|Trust Levels|default trust level
to0
to make sure staged users created via email is level 0. -
Set
Settings|Trust Levels|default invitee trust level
to1
to make sure that the users you actually want to be on the system are level 1. -
Turn on
Settings|Email|enable staged users
-
(Optional)
Settings|Login|must approve users
may not be necessary if your forum runs on invitation only. -
(Optional) Set
Settings|Posting|approve new topics unless trust level
to1
so that your staged users (which will be created as level 0) will have their topics pending staff approval.Note: As of 1.9.0beta13 this doesn’t work because topic approvals by-pass all staged users. This may be corrected in the future.
-
Turn off SSO because you obviously don’t want any unknown persons to sign into your forum.
Set Up the Appropriate Email Addresses
-
On your email system, setup a MASTER mail-in email account, for example:
master@support.example.com
. -
For each area/team/category, create a new, specific email account, for example:
wonderful_product@support.example.com
. -
FORWARD all emails to those specific accounts to the MASTER email account. For example, an automatic forwarding should be created to forward all mail received by
wonderful_product@support.example.com
tomaster@support.example.com
.
Turn on email in
-
Turn on
Settings|Email|reply by email enabled
-
Turn on
Settings|Email|email in
-
Turn on
Settings|Email|pop3 polling enabled
-
(Optional) Turn on
Settings|Email|pop3 polling ssl
if your POP3 email server requires SSL. -
(Optional) Turn on
Settings|Email|pop3 polling openssl verify
if your POP3 server uses SSL. -
Turn on
Settings|Email|reply by email enabled
-
Set
Settings|Email|reply by email address
to the MASTER email account in the section above (for example:master@support.example.com
). -
(IMPORTANT) If your email system does NOT support the
+
feature, then turn offSettings|Email|find related post with key
. This will use each email’sIn Reply To
header to find the correct thread, with certain security considerations. -
Set
Settings|Email|pop3 polling host
,pop3 polling port
,pop3 polling username
,pop3 polling password
for your POP3 email server. The username and password should be for the MASTER email address. -
Set
Settings|Email|email in min trust
to0
because your staged users will be created with trust level 0. -
Set
Settings|Email|maximum staged users per email
to a small number unless you have a good reason to allow creating large number of staged users from an email. -
Set up suspected SPAM email domains in
Settings|Login|blocked email domains
. This prevents emails from unwanted domains from creating staged users in your forum and littering them with SPAM topics.Notice that
regexp
expressions work in this, EXCEPT for the dot (.
). You do NOT need to escape the dot because it will be automatically escaped. In other words,\d+\d\d\d.\w+
will actually be\d+\d\d\d\.\w+$
and will match any domain that is a string of digits more than 3 long plus a root domain (.com
,.org
etc.). -
Set up suspected SPAM email subjects in
Settings|Email|ignore by title
. This prevents emails with suspicious subjects from creating topics.Notice that
regexp
expressions work in this. Wrap your entries with\b
if you want to match whole words in English. BEWARE,\b
works for English language only!!!
Attachments
-
Add allowed attachment formats in
Settings|Files|authorized extensions
because customers who requires support will typically send in attachments other than photos (maybe a PDF file, an Excel spreadsheet, a CAD drawing, an error log file, or a zip file). -
Set
Settings|Files|max attachment size kb
large enough so that reasonable attachments do not bounce. Typically 1MB to 2MB is enough.
Set Up Email Info in Categories
-
For each category that will receive emails from outside, set
Custom incoming email address
(in theSettings
of theEdit
dialog of that particular category) to the appropriate email account.For example, in the
Wonderful Product
category, pressEdit
and go to theSettings
tab.Custom incoming email address
should be set towonderful_product@support.example.com
. Then, all emails sent towonderful_product@support.example.com
will be created as topics in this category. -
Turn on the
Accept emails from anonymous users with no accounts
setting for each category that will receive emails.
Set Up Security in Categories
- Remove the
Everyone
group from each category’s access list. - Use
Group
s to manage access to each category.
If You Have a Multi-Lingual (Worldwide ) Customer Base
-
Turn on
Settings|Basic Setup|allow user locale
-
Turn on
Settings|Basic Setup|set locale from accept language header
Notice that it doesn’t work for redemption from invitations as of 1.9.0beta13.
-
Consider the
discourse-translator
plugin -
If you have Chinese users, please make sure to search
meta
for the settings required to support Chinese language posts.