# Discourse Assign

**URL:** https://meta.discourse.org/t/discourse-assign/58044
**Category:** Plugin
**Tags:** official, assign, included-in-core
**Created:** [February 27, 2017, 9:08pm UTC](https://meta.discourse.org/t/discourse-assign/58044 "2017-02-27T21:08:19Z")
**Posts on this page:** 20
**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: [February 27, 2017, 9:08pm UTC](https://meta.discourse.org/t/discourse-assign/58044/1 "2017-02-27T21:08:19Z")

</div>

| | | |
| --- | --- | --- |
| :discourse2: | **Summary** | **Discourse Assign** provides the ability to assign topics and individual posts (both private and public) to a user or group. |
| :open_book: | **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. :+1:
> 
> [:question: **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=assign "Ask for support on configuring and using Discourse Assign") [:bug: **Bug**](https://meta.discourse.org/new-topic?category_id=1&tags=assign "A bug report means something is broken, preventing normal/typical use of the plugin") [:eyes: **UX**](https://meta.discourse.org/new-topic?category_id=9&tags=assign "Discussion about the user interface of Discourse Assign, and how features are presented (including language and UI elements)") [:bulb: **Feature**](https://meta.discourse.org/new-topic?category_id=2&tags=assign "Discussion about how existing Discourse Assign features can be improved or enhanced, and how proposed new features could work")

> :person_raising_hand: Required user level: Administrator (for configuration), members of allowed groups (for using assignments)

> :discourse2: Hosted by us? This plugin is available on our Business and Enterprise plans. [Data Explorer | Discourse - Civilized Discussion](https://www.discourse.org/plugins/data-explorer.html)

## Overview

Discourse Assign adds the ability to assign topics and individual posts — both public and private — to a specific user or group. Assignments appear as tag-like annotations in the topic list and topic header, providing a clear indication of who is responsible for a given topic or post. This is particularly useful for support teams, moderation workflows, and any scenario where you need to track task ownership.

![Assigned user annotation in a topic list](https://global.discourse-cdn.com/meta/original/3X/1/4/1434884fab8963cb72a3d52a6a28aded6c8210da.png)

Discourse Assign is bundled with Discourse core and doesn’t require separate installation. It’s disabled by default and can be enabled through admin settings.

## Enabling Discourse Assign

1. Go to **Admin** → **Plugins** and find **Discourse Assign**.
2. Toggle the plugin to enabled, or navigate to **Admin** → **Settings** and search for `assign_enabled`.
3. Set `assign_enabled` to **true**.
4. Configure `assign_allowed_on_groups` to specify which groups can use the assign feature (see [Configuring permissions](#configuring-permissions-5) below).

## Assigning topics and posts

### Assigning a topic

When you open a topic and you’re a member of an allowed group, you’ll see an **Assign** button in the topic controls. Click it to open the assignment modal, where you can:

- Select a **user** or **group** to assign the topic to
- Optionally set a **status** (if `enable_assign_status` is turned on)
- Optionally add a **note** with additional context

### Assigning an individual post

In addition to assigning entire topics, you can assign individual posts. This option appears under the **…** (show more) button in the post toolbar for posts other than the first post. When a post is assigned, assignment information appears in the topic header and the first post contains a link to the assigned post.

 ![Post-level assignment indicator in a topic](https://global.discourse-cdn.com/meta/original/3X/1/1/113c2418869fcc6d616b042cdaa159739307f077.png)

### Assigning to groups

Topics and posts can be assigned to user groups. When a group is assigned, each group member receives a notification. To make a group available for assignment:

1. Go to the group’s settings page.
2. Under **Interaction** , find the “Who can assign this group” option.
3. Set it to the desired permission level (by default it’s set to “nobody”).

 ![Group interaction settings for assignment](https://global.discourse-cdn.com/meta/original/3X/5/0/5016d3b390efe554b170f7efa58a9263e6dbb446.png)

### Unassigning

To unassign a topic or post, click the button that currently shows the assignee’s name. This opens a dropdown where you can select **Unassign**. You can also **Reassign** to a different user or group, or **Edit assignments** to modify the status or note.

## Using assignment statuses

Assignments can optionally include customizable statuses that track the progress of assigned work.

1. Enable statuses by setting `enable_assign_status` to **true**.
2. Configure available statuses with the `assign_statuses` setting. The default statuses are `New`, `In Progress`, and `Done`, separated by the pipe `|` character.
3. The first status in the list is automatically applied as the default for every new assignment.

Status changes are tracked in `small_action` posts within the topic, providing an audit trail.

 ![Assignment status options in the assignment modal](https://global.discourse-cdn.com/meta/original/4X/c/b/7/cb767daa51f617581d25343f3e0fc5ef666f8ce4.png)

 ![Status change tracking post in a topic](https://global.discourse-cdn.com/meta/original/4X/8/b/f/8bf1c786933dd44747611c3dd6861c34c91f0f0d.png)

To change the status of an existing assignment, click the assignee button and select **Edit assignments**. From there, you can update the status using the dropdown.

## Configuring permissions

### Controlling who can assign

The `assign_allowed_on_groups` setting controls which groups have permission to use assignments. Members of these groups can:

- Assign topics and posts to users or groups
- View assignment data across the site
- See the “Assigned” tab on user profiles

:warning: When setting `assign_allowed_on_groups`, use a specific group like `trust_level_0` rather than `everyone`. The `everyone` option may not work as expected. Using `trust_level_0` effectively grants all registered users access to the assign feature.

### Assignment visibility

By default, assignment data is only visible to users who belong to one of the `assign_allowed_on_groups` groups, or to admins. This applies regardless of how the group itself is configured for general visibility:

- Publicly visible groups won’t expose their assignment tabs or indicators to non-assigned users.
- Users outside the allowed groups won’t see assignment data even if they navigate directly to an assignments URL.

To make assignments visible to all users, including logged-out visitors, enable the `assigns_public` setting.

| Scenario | `assigns_public: false` (default) | `assigns_public: true` |
| --- | --- | --- |
| Members of `assign_allowed_on_groups` | See all assignment data | See all assignment data |
| All other users | See nothing | See all assignment data |

## Viewing assigned topics

There are two primary ways to view assigned topics:

### Topic list filters

Append query parameters to any topic list URL:

- `https://discourse.example.com/latest?assigned=username` — view all topics assigned to a specific user
- `https://discourse.example.com/latest?assigned=*` — view all assigned topics across all users
- `https://discourse.example.com/latest?assigned=me` — view all topics assigned to you
- `https://discourse.example.com/latest?assigned=nobody` — view all unassigned topics

### User profile activity tab

Each user who can assign has an **Assigned** tab under their activity page at `/u/{username}/activity/assigned`. This tab lists all topics and posts assigned to that user.

### Unassigned category filter

Categories can optionally display an “Unassigned” navigation button at the top of their topic list, making it easy to spot topics that haven’t been assigned yet. This is controlled through the category’s settings.

## Site settings reference

### Core settings

| Setting | Description | Default |
| --- | --- | --- |
| `assign_enabled` | Enable the assign plugin | `false` |
| `assign_allowed_on_groups` | Groups whose members can use assignments and be assigned topics | (empty) |
| `assigns_public` | Allow all users (including logged-out visitors) to see assignments | `false` |
| `max_assigned_topics` | Maximum number of topics that can be assigned to a single user | `10` |

### Automation settings

| Setting | Description | Default |
| --- | --- | --- |
| `assigns_by_staff_mention` | Automatically assign a topic when a staff member mentions another staff member | `false` |
| `assign_self_regex` | A regex pattern that, when matched in a post, auto-assigns the topic to the post author | (empty) |
| `assign_other_regex` | A regex pattern that restricts auto-assignment via mention to posts matching the pattern | (empty) |
| `unassign_on_close` | Automatically unassign topics when they’re closed | `false` |
| `reassign_on_open` | Reassign previously assigned users/groups when a closed topic is reopened | `false` |
| `unassign_on_group_archive` | Unassign messages when archived by a group, and reassign when moved back to inbox | `false` |
| `invite_on_assign` | When a personal message is assigned to a user or group, invite them to the PM if they aren’t already a participant | `false` |

### Notification and reminder settings

| Setting | Description | Default |
| --- | --- | --- |
| `assign_mailer` | When to send notification emails for assignments: `never`, `different_users`, or `always` | `never` |
| `remind_assigns_frequency` | How often to remind users about their pending assignments | `0` (disabled) |
| `pending_assign_reminder_threshold` | Minimum number of pending assignments before a reminder notification is sent | `2` |

### Status settings

| Setting | Description | Default |
| --- | --- | --- |
| `enable_assign_status` | Add a customizable status field to every assignment | `false` |
| `assign_statuses` | Pipe-separated list of available statuses (first one is the default) | `New |

### Tracking settings

| Setting | Description | Default |
| --- | --- | --- |
| `unassign_creates_tracking_post` | Create a whisper or small action post when a topic is unassigned | `true` |
| `assigns_user_url_path` | URL path template for linked assigned user profiles (use `{username}` as a placeholder) | `/u/{username}/activity/assigned` |

### Integration with Discourse Solved

| Setting | Description | Default |
| --- | --- | --- |
| `ignore_solved_topics_in_assigned_reminder` | Exclude solved topics from assignment reminders | `false` |
| `assignment_status_on_solve` | Automatically change assignment status to this value when a topic is solved | (empty) |
| `assignment_status_on_unsolve` | Automatically change assignment status to this value when a solution is removed | (empty) |

## Customizing the assignment email template

The email sent when a user is assigned can be customized through **Admin** → **Customize** → **Text**. Search for the following keys:

- `assign_mailer.subject_template` — the email subject line
- `assign_mailer.text_body_template` — the email body text

* * *

Thank you to [McNeel](https://discourse.mcneel.com/) for sponsoring this work!

> Last edited by @Moin 2026-04-07T22:35:33Z
> 
> Last checked by @MarkDoerr 2026-04-07T22:09:15Z
> 
> > **Check document**
> >
> > Perform check on document:

---

<div class="post-metadata">

### Author: ![kuba-orlik](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kuba-orlik/32/318490_2.png) [@kuba-orlik](https://meta.discourse.org/u/kuba-orlik)
#### Post date: [August 1, 2023, 7:46pm UTC](https://meta.discourse.org/t/discourse-assign/58044/198 "2023-08-01T19:46:49Z")

</div>

> [@sam](#):
>
> When a topic is assigned to a group it shows up in the individual assign list for all group members. They are notified when this assignment happens.

This does not seem to work as of now. If I’m a part of group A and someone assigns group A to a topic, it doesn’t show up for me when I visit `/latest?assigned=me`.

---

<div class="post-metadata">

### Author: ![maiki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/maiki/32/233950_2.png) [@maiki](https://meta.discourse.org/u/maiki)
#### Post date: [August 1, 2023, 9:19pm UTC](https://meta.discourse.org/t/discourse-assign/58044/199 "2023-08-01T21:19:49Z")

</div>

Hi Kuba. :wave:

> [@kuba-orlik](#):
>
> `/latest?assigned=me`

That is a filter on the latest page. The mentioned “individual assign list” is at `/my/activity/assigned`. :+1:

---

<div class="post-metadata">

### Author: ![kuba-orlik](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kuba-orlik/32/318490_2.png) [@kuba-orlik](https://meta.discourse.org/u/kuba-orlik)
#### Post date: [August 11, 2023, 7:23pm UTC](https://meta.discourse.org/t/discourse-assign/58044/200 "2023-08-11T19:23:50Z")

</div>

Thanks! Is there a specific reason why those two filters behave differently? :thinking:

---

<div class="post-metadata">

### Author: ![Ivan\_Rapekas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ivan_rapekas/32/248924_2.png) [@Ivan\_Rapekas](https://meta.discourse.org/u/Ivan_Rapekas)
#### Post date: [August 22, 2023, 9:42am UTC](https://meta.discourse.org/t/discourse-assign/58044/201 "2023-08-22T09:42:48Z")

</div>

Is any way to configure the time of recurred notifications?

UPD: When a topic assigned to Group, users in Group do not receive email notifications. Is it correct? I expected users get an email + recurring emails (every day, every week) like single assignee.

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [October 26, 2023, 6:45pm UTC](https://meta.discourse.org/t/discourse-assign/58044/202 "2023-10-26T18:45:22Z")

</div>

2 posts were split to a new topic: [Can assigns be removed when a topic is solved?](https://meta.discourse.org/t/can-assigns-be-removed-when-a-topic-is-solved/283573)

---

<div class="post-metadata">

### Author: ![carlito](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/carlito/32/448519_2.png) [@carlito](https://meta.discourse.org/u/carlito)
#### Post date: [September 15, 2024, 8:38pm UTC](https://meta.discourse.org/t/discourse-assign/58044/203 "2024-09-15T20:38:18Z")

</div>

Sorry if this was already mentioned (I wasn’t able to find this).

Can non-staff members use this plugin to assign? I wasn’t able to get this plugin working even if the user is moderator. The user has to be admin.

My use case: Team lead (non-staff/non-admin) writes a topic and assigns this to a team member (TL0-3 user). The team lead is not necessary the site admin or staff for Discourse forum because we have many team leads.

It would be helpful even if I can make Team lead a moderator and get this plugin working.

Thanks and appreciate it!

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [September 15, 2024, 9:37pm UTC](https://meta.discourse.org/t/discourse-assign/58044/204 "2024-09-15T21:37:41Z")

</div>

Wouldn’t setting `assign allowed on groups` do that?

---

<div class="post-metadata">

### Author: ![carlito](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/carlito/32/448519_2.png) [@carlito](https://meta.discourse.org/u/carlito)
#### Post date: [September 15, 2024, 9:49pm UTC](https://meta.discourse.org/t/discourse-assign/58044/205 "2024-09-15T21:49:51Z")

</div>

Hi @Jagster,

I have set `assign allowed on groups` to `everyone`

 ![image](https://global.discourse-cdn.com/meta/original/4X/b/f/e/bfe1290df8fb8f11f63b7debde7fb40d0c2f24d9.png)

For example this user’s permissions are:

 ![image](https://global.discourse-cdn.com/meta/original/4X/3/4/6/346127037a69c652f18645e4ea174caadd2b655f.png)

But this user is not able to see the `assign` button

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

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [September 15, 2024, 9:53pm UTC](https://meta.discourse.org/t/discourse-assign/58044/206 "2024-09-15T21:53:47Z")

</div>

Sometimes “everyone” doesn’t work. Have you tried trust\_level\_0 instead?

---

<div class="post-metadata">

### Author: ![HamMan2118](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hamman2118/32/383565_2.png) [@HamMan2118](https://meta.discourse.org/u/HamMan2118)
#### Post date: [September 15, 2024, 10:18pm UTC](https://meta.discourse.org/t/discourse-assign/58044/207 "2024-09-15T22:18:22Z")

</div>

Just a quick note - the Assign button will appear as it’s own option in topics/posts and won’t be under the :wrench: menu :slight_smile:

 ![image](https://global.discourse-cdn.com/meta/original/4X/e/8/0/e808e65edf93c734141a1927482ec61cdf048758.png)

I just tested it on my end on a TL3 account set under the following conditions and got these results:

> **TL3 user with everyone permission**
>
> Same issue as @carlito, the option does not come up.
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/a/0/6/a066f6c81e57a1ed9f45fa9dc5c1544dc07e14a5.png)  
> ![image](https://global.discourse-cdn.com/meta/original/4X/8/7/4/87424c6467ceff871bfd6b830b82b9a8d8ca77f7.png)

> **TL3 user with trust\_level\_0 permission**
>
> This works as intended.
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/7/c/a/7cab79fb3ae654a1e900939138ae807b152f49de.png)
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/5/4/f/54fe1d276e4a265d76b272fc05a2052479d179a8.png)

So…with this being said, you’d need to set trust\_level\_0 as @Moin suggested. I think it would be expected to work otherwise if you selected everyone, so maybe this is a bug?

---

<div class="post-metadata">

### Author: ![carlito](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/carlito/32/448519_2.png) [@carlito](https://meta.discourse.org/u/carlito)
#### Post date: [September 15, 2024, 10:29pm UTC](https://meta.discourse.org/t/discourse-assign/58044/208 "2024-09-15T22:29:23Z")

</div>

@Moin and @HamMan2118

Awesome, that worked!

Thank you both!

---

<div class="post-metadata">

### Author: ![krystal](https://avatars.discourse-cdn.com/v4/letter/k/f08c70/32.png) [@krystal](https://meta.discourse.org/u/krystal)
#### Post date: [February 6, 2025, 7:27pm UTC](https://meta.discourse.org/t/discourse-assign/58044/209 "2025-02-06T19:27:28Z")

</div>

How can I find and edit the email template that is sent out when someone is assigned? It doesn’t exist along with the other email templates?

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [February 6, 2025, 7:41pm UTC](https://meta.discourse.org/t/discourse-assign/58044/210 "2025-02-06T19:41:21Z")

</div>

This one?

 ![Hey, %{assignee_name} assigned you to a discussion %{topic_title} %{topic_excerpt}If you're interested, click the link below:%{topic_link}](https://global.discourse-cdn.com/meta/original/4X/3/9/b/39b587124eeb5162d7a31964e7d60f750433ea06.jpeg)

You can find it at `Admin > Site texts`. I searched for `assign_mailer`, which returns the title (`assign_mailer.subject_template`) and the body text (`assign_mailer.text_body_template`).

---

<div class="post-metadata">

### Author: ![krystal](https://avatars.discourse-cdn.com/v4/letter/k/f08c70/32.png) [@krystal](https://meta.discourse.org/u/krystal)
#### Post date: [February 6, 2025, 7:45pm UTC](https://meta.discourse.org/t/discourse-assign/58044/211 "2025-02-06T19:45:16Z")

</div>

Yes that’s it, thanks!!

---

<div class="post-metadata">

### Author: ![tknospdr](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tknospdr/32/529762_2.png) [@tknospdr](https://meta.discourse.org/u/tknospdr)
#### Post date: [May 10, 2025, 1:44pm UTC](https://meta.discourse.org/t/discourse-assign/58044/212 "2025-05-10T13:44:07Z")

</div>

Where in the UI is the status exposed?

I see who a topic is assigned to, but I don’t see any way to tell what it’s current status is.

 ![The image shows a forum post with a mix of random characters in the text body, an arrow pointing to the text indicating the anomaly, and a mention assigned to a user. (Captioned by AI)](https://global.discourse-cdn.com/meta/original/4X/5/5/8/55801ae0ed76cd0da21fd8d06c42228b5600fc1c.png)

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [May 11, 2025, 1:44am UTC](https://meta.discourse.org/t/discourse-assign/58044/213 "2025-05-11T01:44:49Z")

</div>

@tknospdr Have you seen this part?

> [@Discourse](#):
>
> Assignments can also (optionally) be associated with customizable statuses, and will track changes to their statuses in `small_action` posts.
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/c/b/7/cb767daa51f617581d25343f3e0fc5ef666f8ce4.png)
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/8/b/f/8bf1c786933dd44747611c3dd6861c34c91f0f0d.png)

---

<div class="post-metadata">

### Author: ![tknospdr](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tknospdr/32/529762_2.png) [@tknospdr](https://meta.discourse.org/u/tknospdr)
#### Post date: [May 11, 2025, 1:56am UTC](https://meta.discourse.org/t/discourse-assign/58044/214 "2025-05-11T01:56:06Z")

</div>

Yes, but that only shows up once you make a change. There’s no visual indication that a status was assigned at all, until you change it from X to Y.

 ![A message from David M reports a printer and scanner malfunction after a power outage, and suggests setting the topic status to "New". (Captioned by AI)](https://global.discourse-cdn.com/meta/original/4X/1/6/d/16dadffdfe036ae875a71faaafd55e0453b31a4c.png)

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [May 11, 2025, 2:41am UTC](https://meta.discourse.org/t/discourse-assign/58044/215 "2025-05-11T02:41:11Z")

</div>

You can see the current status if you go to the ‘Edit Assignment’ tab, below the ‘Assign’ button.

---

<div class="post-metadata">

### Author: ![tknospdr](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tknospdr/32/529762_2.png) [@tknospdr](https://meta.discourse.org/u/tknospdr)
#### Post date: [May 11, 2025, 2:52am UTC](https://meta.discourse.org/t/discourse-assign/58044/216 "2025-05-11T02:52:15Z")

</div>

You mean “Edit assignments” that is hidden behind the button that says ‘Unassign…’

If I don’t want to unassign it, I’d hesitate to click on that button right?

1. That’s unintuitive.
2. Are you saying that you don’t think a visual cue to let you know what the assigned status of a topic is right out in the open is a good idea?

I just can’t imagine it’s a tall order code wise, and it just makes sense to have it out in the open.

[Next page](https://meta.discourse.org/t/discourse-assign/58044.md?page=2)
