# Make members of a group watch a category by default

**URL:** https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127
**Category:** Feature
**Tags:** completed
**Created:** [November 13, 2014, 8:27am UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127 "2014-11-13T08:27:01Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Skud](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/skud/32/15748_2.png) [@Skud](https://meta.discourse.org/u/Skud)
#### Post date: [November 13, 2014, 8:27am UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/1 "2014-11-13T08:27:01Z")

</div>

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?

---

<div class="post-metadata">

### Author: ![mcwumbly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcwumbly/32/103861_2.png) [@mcwumbly](https://meta.discourse.org/u/mcwumbly)
#### Post date: [November 13, 2014, 11:45am UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/2 "2014-11-13T11:45:11Z")

</div>

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.

> [@Default email settings for a new user](https://meta.discourse.org/t/default-email-settings-for-a-new-user/14980):
>
> Is there a way to configure default options for new users in the realm of the email settings in preferences? As we have moved from a Google Group to Discourse, we’d like to encourage engagement by sensible defaults. And as most people are used to getting an email upon every reply, this will help us keep engagement up while allowing folks to turn it off if it gets to noisy? Specifically the last two options: Receive an email every time a post is made on the forum Receive email notifications …

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

[https://meta.discourse.org/t/notification-options/21694?u=mcwumbly](https://meta.discourse.org/t/notification-options/21694)

---

<div class="post-metadata">

### Author: ![blau](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/blau/32/34145_2.png) [@blau](https://meta.discourse.org/u/blau)
#### Post date: [November 13, 2014, 12:39pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/3 "2014-11-13T12:39:10Z")

</div>

Also similar to this:

> [@Watch category on bulk invite](https://meta.discourse.org/t/watch-category-on-bulk-invite/21456):
>
> Continuing the discussion from [Bulk Invite Users](https://meta.discourse.org/t/bulk-invite-users/15899): TLDR : what about adding watched categories in bulk invite CSV file ? I would like to create a school parent discussion forum. My need is to create a private part of the forum for each class. What I have already done : Create a user group for the class named CLASS1 Create a category named CLASS1 where only user of CLASS1 group can access Bulk invite parents to CLASS1 group. What is missing is to add CLASS1 category as a watched category. …

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.

---

<div class="post-metadata">

### Author: ![downey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/downey/32/166878_2.png) [@downey](https://meta.discourse.org/u/downey)
#### Post date: [November 14, 2014, 12:29pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/4 "2014-11-14T12:29:42Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![Skud](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/skud/32/15748_2.png) [@Skud](https://meta.discourse.org/u/Skud)
#### Post date: [November 14, 2014, 9:02pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/5 "2014-11-14T21:02:55Z")

</div>

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

---

<div class="post-metadata">

### Author: ![lightyear](https://avatars.discourse-cdn.com/v4/letter/l/848f3c/32.png) [@lightyear](https://meta.discourse.org/u/lightyear)
#### Post date: [November 14, 2014, 10:32pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/6 "2014-11-14T22:32:33Z")

</div>

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](https://meta.discourse.org/t/who-can-use-this-group-as-an-alias/13463), which makes it also very explicit and clear. And we do that only for really important news.

---

<div class="post-metadata">

### Author: ![Skud](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/skud/32/15748_2.png) [@Skud](https://meta.discourse.org/u/Skud)
#### Post date: [November 15, 2014, 11:08pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/7 "2014-11-15T23:08:03Z")

</div>

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?

---

<div class="post-metadata">

### Author: ![downey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/downey/32/166878_2.png) [@downey](https://meta.discourse.org/u/downey)
#### Post date: [November 15, 2014, 11:27pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/8 "2014-11-15T23:27:18Z")

</div>

Impersonation not necessary. As an admin, go to the user’s profile preferences page, e.g., [https://discourse.example.com/users/downey/preferences](https://discourse.example.com/users/downey/preferences) and scroll down to the “Categories” section. From there, you can add the specific categories to the “Watched” list.

---

<div class="post-metadata">

### Author: ![Skud](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/skud/32/15748_2.png) [@Skud](https://meta.discourse.org/u/Skud)
#### Post date: [November 16, 2014, 12:00am UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/9 "2014-11-16T00:00:24Z")

</div>

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

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [March 5, 2015, 10:32am UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/10 "2015-03-05T10:32:58Z")

</div>

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

```

```ruby
[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); u.save } #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):

![](https://global.discourse-cdn.com/meta/original/3X/e/4/e41e7cdb7ba82f6f1aa393a20641746ca8c40d88.png)

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](http://www.feverbee.com/2015/03/notifications.html?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+Feverbee+%28FeverBee+-+Practical+advice+for+building+online+communities%29) 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.

Marcus

---

<div class="post-metadata">

### Author: ![brianlcheek](https://avatars.discourse-cdn.com/v4/letter/b/2bfe46/32.png) [@brianlcheek](https://meta.discourse.org/u/brianlcheek)
#### Post date: [March 5, 2015, 1:59pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/11 "2015-03-05T13:59:59Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [March 11, 2015, 8:15pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/12 "2015-03-11T20:15:05Z")

</div>

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  
 [http://www.bawmedical.co.uk/2015/03/11/a-discourse-toolkit-for-the-rails-console-discoursehacking/](http://www.bawmedical.co.uk/2015/03/11/a-discourse-toolkit-for-the-rails-console-discoursehacking/)**

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 😉 )

M

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [March 11, 2015, 10:31pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/13 "2015-03-11T22:31:39Z")

</div>

> [@pacharanero](#):
>
> - reassign posts to a different user

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.

---

<div class="post-metadata">

### Author: ![pacharanero](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pacharanero/32/500583_2.png) [@pacharanero](https://meta.discourse.org/u/pacharanero)
#### Post date: [March 12, 2015, 8:25am UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/14 "2015-03-12T08:25:14Z")

</div>

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

M

---

<div class="post-metadata">

### Author: ![brianlcheek](https://avatars.discourse-cdn.com/v4/letter/b/2bfe46/32.png) [@brianlcheek](https://meta.discourse.org/u/brianlcheek)
#### Post date: [March 19, 2015, 2:06pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/15 "2015-03-19T14:06:26Z")

</div>

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?

Thanks,  
Brian

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [March 19, 2015, 9:25pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/16 "2015-03-19T21:25:36Z")

</div>

> [@brianlcheek](#):
>
> Does watching a category “cascade”

nope it does not, you must watch each child.

---

<div class="post-metadata">

### Author: ![watchmanmonitor](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/watchmanmonitor/32/430970_2.png) [@watchmanmonitor](https://meta.discourse.org/u/watchmanmonitor)
#### Post date: [April 26, 2015, 5:47am UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/17 "2015-04-26T05:47:08Z")

</div>

> [@sam](#):
>
> 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.

[https://meta.discourse.org/t/watching-a-category-perhaps-the-best-kind-of-mailing-list-mode/27507](https://meta.discourse.org/t/watching-a-category-perhaps-the-best-kind-of-mailing-list-mode/27507)

---

<div class="post-metadata">

### Author: ![Maya\_Leshkowitz](https://avatars.discourse-cdn.com/v4/letter/m/90ced4/32.png) [@Maya\_Leshkowitz](https://meta.discourse.org/u/Maya_Leshkowitz)
#### Post date: [June 6, 2015, 11:57am UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/18 "2015-06-06T11:57:41Z")

</div>

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

---

<div class="post-metadata">

### Author: ![watchmanmonitor](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/watchmanmonitor/32/430970_2.png) [@watchmanmonitor](https://meta.discourse.org/u/watchmanmonitor)
#### Post date: [June 6, 2015, 8:28pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/19 "2015-06-06T20:28:02Z")

</div>

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

---

<div class="post-metadata">

### Author: ![watchmanmonitor](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/watchmanmonitor/32/430970_2.png) [@watchmanmonitor](https://meta.discourse.org/u/watchmanmonitor)
#### Post date: [June 19, 2015, 11:01pm UTC](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127/20 "2015-06-19T23:01:21Z")

</div>

> [@pacharanero](#):
>
> 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); u.save } #in my case the Category had the id 5 so I put this as the last parameter

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

> [@Discourse Version 1.4](https://meta.discourse.org/t/discourse-version-1-4/26488/1):
>
> Allow global admin override of any user preference

?

[Next page](https://meta.discourse.org/t/make-members-of-a-group-watch-a-category-by-default/22127.md?page=2)
