Discourse Chat

:information_source: This plugin is still in active development and may change frequently

:test_tube: If you’d like to see it in action here on Meta, join the @chat-testers group!

:discourse2: Summary Discourse Chat adds chat functionality to your Discourse instance.
:hammer_and_wrench: Repository Link https://github.com/discourse/discourse-chat
:open_book: Install Guide How to install plugins in Discourse


As mentioned in our initial announcement and most recent update, this plugin adds chat functionality to your Discourse so it can natively support both, long-form and short-form communication needs of your online community.


Initial Setup

After installing the plugin, head to your /admin/plugins page to click the discourse-chat :gear: Settings button.

On that page, Chat can be enabled by checking the chat enabled site setting. By default, Chat will be available to the staff group only, but you can add more groups (or open it up to everyone) by adding them to the chat allowed groups setting.

Channel retention

By default, channels are configured to retain messages for 90 days and direct messages are configured to retain messages forever, but these are configurable site settings:

  • chat channel retention days (default 90 days)
    Choose how long to retain Chat messages for channels
  • chat dm retention days (default forever)
    Choose how long to retain your Chat messages for personal chats

Other site settings

Additional site settings allow you to configure a set of default emoji reactions and a range of safety features (such as maximum chat messages per second, minimum message length, silence duration, and whether to allow uploads).

Accessing Channels and Creating New Ones

After the plugin is enabled, a speech bubble will appear in the header next to the Search icon, and clicking on that will open your Full Screen Chat window, where you can access default channels as well as start new personal chats. To navigate back to your Full Screen Chat window from inside each channel, use the < icon in the top left corner.

Using the Screenshot 2022-06-24 at 5.52.54 PM button on any Chat window, you can toggle between Full Screen mode and Drawer mode.

Create a channel

To create a new channel (admin only), select the :gear: icon in the top-right corner of your Full Screen Chat window and select Create a channel. Choose a category to associate it with, give it a name, and add an optional description to display on the Browse Channels page.

A Category can have multiple channels associated to it, and more can be added anytime. As a channel is always linked to a category, you can rely on existing category permissions to automatically limit who has access to that particular conversation.

:bulb: Want a channel just for your TL3+ users? Then creating a new channel for your #lounge category will do just that.

Joining a channel

You can preview and join channels from the ‘Browse channels’ page. From this page, you can view all the channels that are visible to you and eligible to join, as well as control your notifications for each channel using the options in the bell icon.

Inviting users to channels

@mentioning individual users or groups will give the option to invite them to the channel if they aren’t participants already. To invite groups in this way, the ‘Who can @mention this group?’ on the group’s /manage/interaction page must be set to something other than ‘Nobody’.

Closing and deleting channels

Admins and moderators can close or delete channels from the Browse Channels page, using the :gear: icon next to their Channel name. A closed channel can be reopened any time, but deleting a channel is not reversible, so there is an additional confirmation check in place.

Starting a personal chat

To start a personal chat, use the :heavy_plus_sign: icon on your Full Screen Chat window and start adding usernames to the recipients list. To leave a personal chat click the X icon next to the channel name (only on desktop).

:information_source: If you accidentally leave a personal chat, starting a new chat with the same person/people will link you back to the messages sent previously.

In-Chat options

Like topics, Chat Messages support:

  • edits
  • replies
  • quoting
  • oneboxing
  • reactions
  • bookmarks
  • deletion

In the composer, you can insert dates, upload files, and GIFs! Chat channels support channel-wide @here and @all mentions with per channel while presence features like a green halo for online users & username is typing… indicator are also present.

You can also select one or more Chat Messages and ‘Quote to topic’ to take a quick conversation and make it into a Discourse topic for in-depth discussion.

Admins and moderators also have the ability to select Chat Messages and move them to a different channel.

Automatically add users to a channel

Chat Information panel

Clicking a channel title will now take users to a useful info panel with three tabs:


  • The About tab will display title, description and linked category, so users have the context they need for each channel.
  • The Members tab lets users see who else is in the room with them (member list and total count). It includes a filter so they can use search.

  • The Settings tab will let you set notification preferences (mute, desktop / mobile push notifications). For admins, this tab also includes the auto-join mode toggle.

Chat preferences

When Chat is enabled, users see a new /preferences/chat page in their preferences. On this page, they can opt-out of Chat, opt-out of the @here and @all notifications, manage their Chat email notifications or choose a desktop sound.

The existing settings on /preferences/users page also apply to chat direct messages, so users can also turn off direct messages or mute or ignore other individual users.


Discourse Chat supports Incoming webhooks but has no support for interactive bots or slash commands yet.

:loudspeaker: Sending Chat messages using Incoming webhooks [Slack-compatible]

The UI for creating webhooks can be found at Admin > Plugins > Chat > New incoming webhook. You can configure a name, description, username (that posts messages), destination channel and emoji for each webhook.


Hey folks,

A video of how this chat looks would be great. So, folks who don’t already use Discourse can see whether it would be a good thing to switch away from Discord.



This is cool! It’s like a mini Discord!

Not sure whether it’s got it (as I’ve only tested it on a test server with just me in it) but if it hasn’t I think it needs a way to flag messages. Displaying a notice at the top of each chat (every time it starts) would be a good idea too - mainly to remind people not to use the chat to speak disparagingly of others (one of the biggest downsides of chat).


You can flag chat messages. :slightly_smiling_face::+1: And they are also checked for Watched Words as well if you’re looking for preventative actions too.

If you want to check it out here on Meta you can join the @chat-testers group and see it in action. :+1:


so what’s the TL required to chat on here? would like to try it out :slight_smile:


Just click on @chat-testers and I’ll add you to the group. :+1::slightly_smiling_face:


Are chat posts kept in the database after the retention period, after chat post deletion or after chat channel deletion? Thanks.

Is chat enabled for all users on Meta? I’m having a difficult time finding it.

It’s currently only available to @chat-testers, but if you click on it and request to join, I’ll add you to the group. :slightly_smiling_face::+1:


I’m not sure about this comment. :slightly_smiling_face: What sites are you on where admin spy on you? Or do you just mean the ‘all-seeing’ admin ability? If so, you should probably be aware that your chat messages will also be viewable using a data explorer query. :slightly_smiling_face:

1 Like

It would be useful to have this note in the plugin description above, unless you have a reason not to. :slight_smile:


My team had been asking me to shift our discussion forum from discourse for want of a chat functionality. I had asked them to patiently wait for the discourse team to come up with something :slight_smile: , have tested in internally on our forum previously and have loved it. If only, we could have a quick way to integrate it on the main website and not just the discussion forum :grinning:

Is there a setting to disable personal chat? I am unable to view the settings myself because this plugin doesn’t seem to be available yet on my Discourse hosted instance.

Yes both at site level and individual user level (through groups and a user option).

In settings:

And each user has this in the chat tab of preferences:

Screenshot 2022-08-04 at 16.48.35


If you disable personal messages, then personal chat will be disabled as well. Settings to mute and ignore users (or allow specific users) are also covered by these same settings. See this topic for more info or continued discussion: Add Option to Disable User-User Chat

Here’s a topic about that if you’d like to contribute further to that discussion: Embeddable chat that stages users


3 posts were merged into an existing topic: Add Option to Disable User-User Chat

Will chat messages take a significant amount of disk storage? I have roughly 15G remains and around 100 active users per day and would like to test it.

I guess this is partly related to the question above about what happens to chat posts when they’re not visible any more: Discourse Chat - #15 by Jonathan5


My bad, I meant to reply to that and it’s slipped away from me.

Currently they are hard-deleted[1] after the retention period. :+1:

For individual chat message or chat channel deletions, they are initially soft-deleted[2], and we’re adding in the bit that will make them hard-deleted along with the others once the retention period rolls round.

(Small note: Even though the channels are soft-deleted initially, there is currently no way to resurrect them once gone. It’s on the roadmap, but hasn’t been scheduled as yet)

  1. ie. ‘Permanently removed from the database’ ↩︎

  2. ie. ‘Hidden from public view’ ↩︎


A post was merged into an existing topic: :mega: Introducing default chat channels (automatically add users)