35

The Slack chat tool by default sends email notifications saying "You were mentioned ..." when in fact it was @channel and not you. The only way I can find to turn these off is to go into each channel setting.

Dave Crooke
  • 600
  • 1
  • 5
  • 10
  • 3
    yeah, having it default on and turning it off for every channel is really annoying. finding a way to default it to off and turning it on for only a couple of channels would be better (or just mute theme entirely would be fine for me). – lamont Feb 08 '16 at 23:26
  • I don't think its possible, but you may want to ask the Slack support. They are pretty good. – Erik Kalkoken Apr 01 '16 at 08:12

4 Answers4

4

I was looking for the same and I saw that nobody answered, so this is what I've found: you cannot and you won't ever be able to.

@channel: everybody in a channel, it's a kind of contract with the user and everybody inside a channel should receive a notification.

The point is that Slack has a netiquette, and users would have to know it. Alternatives to @channel keyword are @everyone and @here, the first one working only in "big" channels, the second one only for people currently active. You can disable notifications for these keywords.

https://get.slack.help/hc/en-us/articles/202009646-Make-an-announcement

enter image description here

Mauro Piccotti
  • 1,687
  • 1
  • 18
  • 30
  • 4
    Can you elaborate a bit what is meant by `contract`? Or where that is specified? – David Schumann Mar 12 '18 at 09:55
  • I mean that if Slack tell you that "channel" is a keyword which sends a notification to everybody inside that channel, you cannot disable notification for that keyword, otherwise it would mean breaking the contract. So when you want to make an announcement to everybody, and you want to be sure that everybody receive a notification, you use "channel". If you are just asking for support (for instance) you can use the other keywords. – Mauro Piccotti Mar 12 '18 at 10:36
  • 14
    But what about the "contract" that if I mute a channel, I don't get a notification from it? I'd like that contract to not be broken – David Schumann Mar 12 '18 at 13:26
  • If I remember well you receive a notification for "channel" and direct mentions even if the channel is mutated. But perhaps my memory lacks :) – Mauro Piccotti Mar 12 '18 at 14:24
  • 1
    @DavidNathan if you met a channel and somebody quote you, you receive a notification, I've just tried. Really I don't understand why 2 negative votes to my answers... – Mauro Piccotti Jul 23 '18 at 15:23
  • 4
    I downvoted because this answer seems to be saying you can't disable @channel at all, which is incorrect. You can do it in the menu in your screenshot, but if you're in the #general settings it says "@everyone" instead of "@channel" because they're the same in that channel. – tagurit Feb 10 '19 at 23:18
  • 1
    How do I reach where you took that screenshot? – 2540625 Apr 08 '20 at 17:01
  • @jtheletter it changed a bit but it's still available. If in your team there is the channel general, you can go to the section preferences => notifications and at the end you can see channel-specific notifications, clicking on general you can change those settings. – Mauro Piccotti Apr 08 '20 at 18:42
  • This becomes especially annoying if you get auto-joined into many channels that you didn't explicitly join (and have a moment to manually disable `@here` and etc) only to end up with someone then abusing that. – chunk_split Apr 09 '20 at 19:05
3

I've had this same problem for a while and manually tweaking prefs is too time-consuming. I've written a script to automate it for me.

For a more in-depth explanation, please visit my blog post:
https://mobeigi.com/blog/programming/disable-slack-channel-and-here-notification-for-all-channels/

Otherwise, the full solution ahead.

Prerequisites

First download this script:
https://gist.github.com/mobeigi/8e5372f1e14e2a302e186d1753f9a649

Or copy and paste it from here:

// Slack User Notification Preference Bulk Update
// By Mo Beigi

const slackTeamId = "EXAMPLE17";
const localConfigJson = JSON.parse(localStorage.localConfig_v2);
const slackUrl = localConfigJson.teams[slackTeamId].url;
let channel_ids = [];

// client.boot contains list of channel ids user is subscribed to amongst other things
await fetch(slackUrl + "api/client.boot?" +
    "_x_id=noversion-1598950616.732" +
    "&_x_version_ts=noversion" + 
    "&_x_gantry=true", 
  {
    method: 'post',
    credentials: 'include',
    headers: { "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" },
    body: "token=" + localConfigJson.teams[slackTeamId].token + 
        "&only_self_subteams=1" + 
        "&flannel_api_ver=4" + 
        "&include_min_version_bump_check=1" + 
        "&version_ts=1598934919" + 
        "&_x_reason=deferred-data" + 
        "&_x_sonic=true",
  },
)
.then(result => result.json())
.then(result => channel_ids = result.channels);

// iterate channel id list and set notification prefs asynchronously
let fetchPromises = [];
for (i = 0; i < channel_ids.length; ++i) {
    console.log("Setting user notification prefs for channel id: " + channel_ids[i].id + " ...");
    fetchPromises.push(
        fetch(slackUrl + "api/users.prefs.setNotifications?" +
            "_x_id=c189c956-1598949859.880" + 
            "&_x_csid=7dP2GCgBJsY" + 
            "&slack_route=" + localConfigJson.teams[slackTeamId].enterprise_id + ":" + slackTeamId +
            "&_x_version_ts=1598934919" + 
            "&_x_gantry=true", 
            {
                method: 'post',
                credentials: 'include',
                headers: { "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" },
                body: "name=suppress_at_channel" +
                    "&value=true" + 
                    "&channel_id=" + channel_ids[i].id +
                    "&global=false" + 
                    "&sync=false" +
                    "&token=" + localConfigJson.teams[slackTeamId].token +
                    "&_x_reason=prefs-store/setChannelNotificationOverride" +
                    "&_x_mode=online" +
                    "&_x_sonic=true"
            }
        )
        .then(result => result.json())
        .then(console.log("Done (" + channel_ids[i].id + ")"))
    );

    // Generous delay to get around rate limit
    await new Promise(r => setTimeout(r, 250));
}

Promise.all(fetchPromises).then(function() {
    console.log("Successfully set user notification prefs for " + channel_ids.length + " channels.");
});

Steps

  1. Visit the React web app which powers the React native Slack client at: http://app.slack.com/client
  2. Sign in and switch to the workspace of interest and wait for the page to fully load.
  3. Open your browsers developer console
  4. Execute the following line: JSON.parse(localStorage.localConfig_v2).teams
  5. Replace the slackTeamId in the Javascript script with your id from Step 4.
  6. Copy and paste the edited Javascript script into the developer console and execute it. The script may take a few minutes to run depending on the number of channels you have joined.

And that's it!

You should now have turned every channels @channel and @here notification preference off.

slack_user_noti_pref_bulk_update.js script execution

Mo Beigi
  • 1,159
  • 2
  • 22
  • 44
0

If you can't find the option to uncheck "Also include @channel and @here" you may first need to unmute the channel, then in the channel-specfic options you can uncheck "Also include @channel and @here".

I'm not sure the checkbox has an effect when the channel is muted, but the setting is preserved through being muted and unmuted.

Carl Walsh
  • 4,571
  • 2
  • 34
  • 35
-1

You can use this: You can select `Notifications > your notification preferences > Nothing.

When the user selects Nothing that means user disabled all kind of notifications.

enter image description here

  • There's a difference between desktop notifications and such, and Slack showing the notification icon for being "mentioned". This does nothing to suppress the issue, just disables notifications in general. – Janne Enberg Jan 22 '20 at 11:54