Skip to content
Median
Esc
↑↓navigate↵open⌘Jpreview
On this page

Discord

Let customers open private support tickets in your Discord server, and mirror every conversation into a channel your team replies from.

Both live on Integrations → Discord. Admins and owners change the settings. Everyone else sees them read only. See Roles.

Section Does
Server Tickets. A customer presses a button and gets a private channel that feeds the inbox
Mirror Every conversation, from any channel, as a thread in a Discord channel. A reply in the thread reaches the customer

Connect a server

Start the install

On Integrations → Discord, select Connect a server.

Pick the server

Choose the server on Discord’s screen and authorize the bot. Finish within 15 minutes.

Check the bot

Back in Median, the server row shows the server’s name and Bot online.

  • One server per organization, and one organization per server.
  • Tickets are on as soon as the server connects.
  • Disconnect stops tickets and the mirror. The bot stays in the server until you remove it in Discord.
  • To move to another server, select Disconnect, then Connect a server. The ticket channel, staff role, panel and mirror channel start over.

Bot permissions

Permission Used for
View Channels, Send Messages, Read Message History Reading and answering in ticket channels
Embed Links, Attach Files The ticket panel and replies
Manage Channels Creating and deleting ticket channels
Manage Roles Setting who can see a ticket channel, and locking it when the ticket ends
Mention @everyone, @here, and All Roles Pinging a staff role that is not mentionable
Manage Webhooks Posting team replies under each teammate’s name and picture
Create Public Threads, Send Messages in Threads Mirror threads, and assistant threads

A server that added the bot before the two thread permissions existed can grant them to the bot instead of connecting again.

Bot status

The server row shows Bot online when Median’s bot checked in within the last 2.5 minutes, and Bot offline otherwise.

While it is offline, the channel and role pickers fail with “The Discord bot is offline. Try again when it reconnects.” Replies wait and go out when it returns. A reply still waiting after an hour is dropped, and the conversation shows “The reply could not reach Discord. The channel may be gone.”

Set up tickets

Pick a ticket channel

Ticket channel is where the panel is posted. Ticket channels are created in the same category.

Pick a staff role

Staff role can see every ticket and is pinged when the agent asks for a person. No role skips it.

Post the panel

In Ticket panel, select Customize, edit the message, then select Save and post. The row then reads “The ticket panel is published.”

The Discord tickets switch in the Server header turns new tickets on and off. While it is off, the panel button answers “New tickets are paused right now. Try again later.” Open tickets, the mirror, tool approvals and attention pings carry on.

Customize the panel

Customize opens the panel editor beside a live preview. Posting replaces the panel already in the channel.

Field Limit Default
Title 256 characters Support
Description 1,024 characters Open a private support conversation with our team.
Button label 80 characters Open a ticket
Emoji 32 characters A ticket emoji
Accent Five swatches, or any six digit hex code 5865F2
Fields Up to 5. Name 256 characters, text 1,024 Get help, Report a bug, Share an idea
  • An empty title or button label falls back to its default.
  • A field with an empty name or text is dropped.
  • An accent that is not a six digit hex code falls back to 5865F2.
  • Reset to default puts the default panel back in the editor.
  • Save and post needs a ticket channel. Until one is picked the editor reads “Pick a ticket channel first.”

The panel always has one button, and every ticket opens as a general help ticket.

How a ticket works

  1. The customer presses the button. Only they see the answer, “Your ticket is ready”, with a link to the new channel.
  2. Median creates a text channel named ticket- plus their Discord name, in the ticket channel’s category. Only the customer, the staff role and the bot can see it.
  3. The agent greets them with “Hi @name, what can I help with?” and a Close ticket button.
  4. The conversation opens in the inbox with the subject “Discord ticket”. The customer’s first message replaces it, cut to 80 characters.
  5. Everything the customer writes reaches the inbox. Files arrive as links and stay on Discord.
  6. Anyone else who writes in the channel, such as staff, shows in the inbox as a teammate reply under their Discord name. It does not wake the agent, and like a reply from the mirror it takes the conversation over.
  7. Replies post in the channel. The agent posts under its own name and picture once it has a picture, and as the bot until then. Teammates post under their own name and picture. A reply over 2,000 characters is split.

Each person can have one open ticket. Pressing the button again answers “You already have an open ticket” with a link to it.

Use /note for notes the customer should not see, see Work from Slack and Discord.

When the agent asks for a person

With a staff role set, the bot posts this in the ticket channel:

@Support Ada needs a person: She wants a refund on order 1182.

The reason is the agent’s, cut to 280 characters. The customer sees this message too. Handoff emails go out as well, see Inbox.

When a ticket ends

A ticket ends when its conversation is resolved or closed, from the inbox or with Close ticket. Close ticket resolves it, and anyone who can see the channel can press it.

When What happens
Right away The channel shows Ticket resolved or Ticket closed, and the customer can no longer post
5 minutes later The channel is deleted. The inbox keeps the transcript and adds “The Discord channel for this ticket was removed”

Reopening the conversation in the inbox within those 5 minutes keeps the channel and lets the customer post again. After that, the customer opens a new ticket.

Mirror

Connect a server

See Connect a server. The Mirror section appears once a server is connected.

Pick a channel

Under Mirror, pick a Channel. Picking one turns the mirror on, and the Discord mirror switch appears.

Every conversation, from the widget, email or a Discord ticket, gets a thread in that channel. A reply in the thread goes to the customer. Threads behave the same as on Slack, see Slack.

On Discord:

  • The thread is named after the conversation subject, cut to 100 characters.
  • Discord does not share email addresses, so a reply always shows the Discord name and picture. It never matches a Median member the way a Slack reply can.
  • The Discord mirror switch pauses the mirror. While it is off, threads get no new posts and replies in threads are not read. Tool approvals and attention pings still post in the mirror channel.
  • Tool approvals and attention pings for a Discord ticket go to the mirror, never the ticket channel.

Commands

/median changes these settings from inside the server. It needs the Manage Server permission by default, and only you see the answers.

Command Does Answers
/median status Shows how Median is set up here The organization, whether tickets are on, the ticket channel, the staff role and whether the panel is posted
/median panel Posts the panel in the current channel, makes it the ticket channel and removes the old panel “Panel posted. This is the ticket channel now.”
/median staff-role Sets the staff role. Leave role empty to clear it “Staff role set to @role.” or “Staff role cleared.”
/median tickets Turns new tickets on or off with enabled “Tickets are on.” or “Tickets are off.”
/median unlink Disconnects this server from Median “Unlinked from” and the organization’s name

/median unlink also works when the organization that connected the server was deleted. It frees the server and answers “Unlinked. The organization holding this server had been deleted.”

/note and /actions work in ticket channels and mirror threads. See Work from Slack and Discord.

Errors

Message Cause Fix
That server is already connected to another workspace. Another Median organization holds the server Disconnect it there, or run /median unlink in the server
Discord connection was not authorized. Try connecting again. You cancelled on Discord’s screen Select Connect a server again
The connection did not finish. Try again. The install did not complete Select Connect a server again
This connection link has expired or was already used. Start again from Median. More than 15 minutes passed, a newer Connect a server click replaced this one, or you are no longer an admin or owner Start again from Connect a server
The Discord bot is offline. Try again when it reconnects. Median’s bot is not connected Wait for Bot online. Contact Median support if it stays offline
The Discord request timed out. Check Discord before retrying. The bot did not answer within 10 seconds while loading the pickers or posting the panel Try again
The Discord setup changed while posting. Check the current panel before posting again. The ticket channel or panel changed during the post Check the panel, then post again
Pick a ticket channel first. No ticket channel is picked Pick one under Ticket channel
Tickets are not set up here yet. No ticket channel is picked Pick a ticket channel
New tickets are paused right now. Try again later. The Discord tickets switch is off Turn on Discord tickets
Opening a ticket failed. Try again. The bot could not create the channel Check the bot permissions
The reply could not reach Discord. The channel may be gone. The ticket channel was deleted, or the bot was offline for over an hour The customer can open a new ticket
Posting here failed. Can the bot speak in this channel? /median panel in a channel the bot cannot post in Let the bot send messages there
Run this in a regular text channel. /median panel outside a text channel Run it in a text channel
This server is not linked to Median. /median unlink in a server with no connection Nothing to unlink
Unlinking failed. Try again. /median unlink did not finish Run it again
This server is not connected to Median yet. Connect it from the integrations page. /median in a server with no connection Connect it from Integrations → Discord
Discord integration is unavailable. Contact Median support. Discord is not set up on this deployment Contact Median support

Was this page helpful?