Approving or rejecting what? The flag or the post?

On thing that have always confused me with Discourse is the review queue: when I look at a post (like the one below) there are two buttons: Approve and Reject. However I never know what I’m approving or rejecting: is it the post, or is it the flag? If I reject the post, it’s going to be blocked I guess, but if I reject the flag, the post is going to be published.

It’s basically two opposite behaviours and I really have now idea what’s going to happen when I click the buttons. Also there’s no experimenting here because once I’ve clicked on one of the button, the post is removed from this screen. But maybe I’d like to check the user, maybe block them, etc. I might also want to verify if the post is gone or not, etc. (because I have no idea what these buttons do, I often mis-click and find that spam posts are still there so I need to go find them and delete them).

So I think it should be made clearer what’s going to happen. Maybe the buttons could be labelled like this:

  • Approve flag and delete post
  • Approve flag and mark post as spam
  • Reject flag and keep post
  • Approve post and publish it
  • Reject post and mark it as spam


And provide a link to the post that’s been processed, to allow us to check it.

Anyway, I think it’s one area where there’s no need to go KISS, and instead keep the actions as clear and detailed as possible.


Just to confirm, I have now clicked on Reject. The post is gone from the screen and I have no idea what I’ve done. Maybe the post is deleted, maybe not.

I also wanted to delete the user but I can’t since this option is now gone too. It is strange that I can either delete the post (assuming that’s what Approve or Reject do) or the user, but not both.


There are a few different things that will appear in the “Needs Review” page.

The example in your screenshot is a post that needs approval. You can see the nature of the review record in the upper left (“Queued Post” in this case) The reason the post requires approval is displayed at the bottom of the record. In this case it was “The poster typed in their post suspiciously fast.” There is also a link pointing to the setting in your admin panel that would allow you to adjust the rules that determine which posts will require approval. Clicking the “Approve” button will allow the post to go through, whereas clicking the “Reject” button will delete the post. The other two buttons should be fairly self-explanatory.

User submitted flags will give you different button options. You can read more about them here: Discourse Moderation Guide

If you go to ryanalex’s profile, there’s a button labeled “Admin” This will take you to the user admin page where you can delete the user. When deleting a user from the review queue, you will delete all of their posts, including the one that’s shown in the queue.

If there’s anything that’s still unclear, let us know and we’ll try to improve our documentation.


I believe this is already being discussed with some potential solutions:


Fyi that post does look like spam to me, so the trigger seems correct.


I can see how this is confusing. Normally, with a flag you :+1: Agree or :-1: Disagree. In that case you’re agreeing or disagreeing with the flag. Here we have a queued post. Approve and reject refers to the post, not the “flag”. This is extra confusing because we’re using the flag icon next to the words “Needs Approval”. With the recent change in Confused by "Approve" and "Reject" in the review queue, perhaps we can add the word “post” to the approve and reject buttons?


I think it’s a good idea to add “Approve Post” and “Reject Post” when reviewing a queued post. For the flag it gets a bit long, so I think we can leave “Agree / Disagree” there.


Agree :stuck_out_tongue:

I was unclear, sorry about that. Not suggesting modifying the buttons for flags, only for queued posts.


This commit renames the actions to “Approve Post” and “Reject Post”:


My favoured solution would be to reword to “Agree with Flag” and “Disagree with Flag” and additionally feature a label underneath that explains the implications of agreeing or disagreeing.

I remember this being a source of much confusion for the team when we first started handling flags.

You can edit the copy locally on your instance via Admin, Customize if you need it to be that verbose.