Make members of a group watch a category by default

We have a private category, limited to a particular opt-in group of Discourse members for our organization. Say it’s “staff” – it’s not actually, but it’s along those lines.

I want to make sure that all staff receive prompt notifications of discussions in that private category. We encourage them to set their category settings to “watching” but I don’t think many of them have.

Under the category’s security settings, when I say “staff can create/reply/see” I’d love it if there were a way to say “and are watching this category by default”. Then when I add a new member to the staff group, they’d get set up to automatically watch the category. They could override if if they wanted to, but they’d start out by getting all the notifications.

Any chance of this happening?


Interesting idea!

There’s a similar topic here, but your request is a little different since that is about site-wide defaults. Still, worth reading through that topic if you haven’t already.

Your idea could also be an approach to fulfill this request, by having an ‘announcements’ category that everyone is set to watch by default:

Also similar to this:

The actual design philosophy now is to put the user in control of its notification options and to let social factors rule whether an user watches a category or not.

1 Like

Keep in mind that as a workaround depending on size, you can do this manually for now by editing the preferences of each user. This is what we’ve done for now to achieve mailing list parity for a few of our key lists (now categories) with small subscriber numbers.


Ah, that is good to know! I’ll try that on this group for now.

1 Like

We use discourse for internal communication and discussion for work here and out of experience, the more mails you send, the less are read. Which is why I personally would try to keep default emailing as low as possible.

What we incorporated here is to use @-mentions, when appropriate. Especially when you want feedback from specific people. In order to get important news out, we use the group alias, which makes it also very explicit and clear. And we do that only for really important news.


OK, I just went to try and do this, and I can’t figure out how. Can I do it through the admin interface, or should I impersonate them and then go into their user prefs as them?

Impersonation not necessary. As an admin, go to the user’s profile preferences page, e.g., and scroll down to the “Categories” section. From there, you can add the specific categories to the “Watched” list.


Ah, thanks, that does it! This will do just fine for us for now.

1 Like

I’d like to bolster the requests for this to be a feature. We should, as admins, be able to specify the level of notifications that a user will receive in bulk.

I understand that the design philosophy is to let users decide on their own, however I have just migrated a large and active Google Group to a Discourse forum, and I’ll describe my experience of it here. The users were accustomed to getting email updates about activity on the Google Group. Most were subscribed to get immediate notifications of each post.

Following the migration, suddenly the users stop getting notifications. They assume this is because nobody else is saying anything. They’re busy, and unfamiliar with the new Discourse platform, so they don’t investigate further. Traffic and discussion on our forum drops to almost nothing.

We decided: enough is enough, if we don’t do anything our forum is going to die, so I bulk modified eveyone’s Watching status in the Rails console:

my-local-machine ~$ ssh discourse-server
discourse-server ~# cd /var/discourse
discourse-server /var/discourse# ./launcher ssh app
discourse-app ~# rails c
[1] pry(main)> Category.where(name: "CCIO Leaders Network") #find out the id of the category we want everyone to watch. A Category object will be returned, with the id: as the first attribute
[2] pry(main)> User.all.each { |u| CategoryUser.batch_set(u,:watching,5); } #in my case the Category had the id 5 so I put this as the last parameter

Please be aware that this code above is something of a blunt instrument and will over-write any existing Watching status that the user had set. Not advised in established, multi-category Discourse instances.

Following this there was a SHARP increase in activity and postings on the site, as evidenced by the Mandrill chart (and empirically from the amount of general activity on the forum):

I made the Watching status changes on Feb 24th. I suspect that there are a lot of online communities migrating to Discourse from something else, and if you have experienced a massive drop in traffic, this is a cause worth considering.

Interestingly, this site has some practical advice about building online communities and does advocate the use of universal ‘every message’ notifications (ie Watching) in the early phase of building a community, which you then switch off before it becomes overwhelming. Following my experiences of migrating the Google Group to Discourse, I would say that this ‘early phase’ starts again during a migration, but that it may end sooner, as you already have an established community.

If this feature were to be added to Discourse, I would suggest it be added to the Groups admin screen so a_given_group could be set to a_given_notification_level for a_given_category. I suppose it would also be nice (but not critical) to be able to set notification level when adding users in bulk from CSV.



Thanks Marcus! This helps me a lot, BUT if the feature were added I would strongly suggest that it also be an option for adding users in bulk from CSV…since that is what I really need.

For now with your hammer above, and a few different generic bulk import scripts I’m hoping we can add our website users (customers) to Discourse, have them already “logged-in” and watching the categories that pertain to their usage of our software, in order to kickstart our activity just as you describe above. (I’ll add we use SSO with our DNN website which adds complexity).

The ability to do this as an admin though would be ideal, hopefully the idea gets some traction.

1 Like

On @brianlcheek 's suggestion I played with #set_notification_level_for_category(user, level, category_id) => Object

and this worked well once I realised that you can’t use an enum (:watching) for the notification level, instead you have to use what the enum is representing (integer 3).

I found that using CategoryUser.set_notification_level_for_category(user, level, category_id) was better than CategoryUser.batch_set(user, level, category_id) because it didn’t over-write any existing notification levels

I have put the few hacks I have been using in a nice neat blog post for all y’all

So far it covers:

  • reassign posts to a different user
  • make a group of users get email notifications for every post on a Category
  • prevent Discourse from suppressing Daily Digests for users that have been seen recently

It’s aimed at a fairly low level of Rails competence (because I need to be able to understand it :wink: )



You should be doing this through the UI, to make sure that the appropriate denormalization updates are triggered. Topic wrench, Select posts, Change Owner. Admin only.

ah wonderful I didn’t realise it could be done through the UI. I will
remove that bit from blog.


This may belong somewhere else so my apologies up front if it does, but I believe it is pertinent to most people involved with this topic so here goes…

Our forum has multiple categories some with sub-categories.

Does watching a category “cascade” down to the categories/topics within it, or does a user have to be watching specific topics themselves?


nope it does not, you must watch each child.


Thanks @sam that’s what I came here to find out.

And, to make my post here actually relevant, I’ll point out that I didn’t know that my post here: was basically a duplicate of this idea/request.

Thanks! Very helpful! Is this change made only to existing user? Or also for future users that join?

1 Like

The changes I made are only going to effect new users.

This isn’t an option on hosted. Is adding group-watch defaults a part of


1 Like