Disable/suspend digest emails

I already set default digest email frequency to never but since this only applies to new accounts (it seems), our forum still sends out an insane amount of emails every week. I fear that many just see this is SPAM and checking through the digest history, the content really isn’t that useful at the moment.

For that reason I want to suspend the digest email feature entirely. Is there a way to do this?

That should do it:

There really should be three states for this per user:

a. no preference set (uses default setting from the forum)
b. digest opt-out
c. digest opt-in

to have the forum setting only affect new users is counter-intuitive.

1 Like


  • the digest is only sent if the user is not seen on Discourse for the entire time period (a week, in this case)

  • the digest tries to pick stuff from /top that is the most popular to share

According to my dashboard, our forum sent 28K emails in the last 30 days. Most of which seem to be the weekly digest emails. This is absurd.

It simply doesn’t fit with our use case and I suspect that these emails did more damage than good.

Depends; you’d have to ask the users.

If there are lots of drive-by users who don’t ever plan to come back to the community, then it makes sense to have a “never” or “monthly” mail digest default.

There is an easy one-click unsubscribe on all emails we send, of course. Literally one click, none of this “click, fill out of a form, sign your name” nonsense.

I’m confident that not even a fraction of those mails get read by anyone. Finding and clicking a unsubscribe button still takes more effort than ignoring or hitting the SPAM button.

Anyway, personal preference but I argue that a weekly digest mail by default is destructive. If I had noticed that turning the setting to never does not actually change existing users, I’d have corrected this ages ago.

1 Like

To reduce the issue when I migrated one large forum from phpBB…

I specifically ran a query setting the digest emails to never be sent to anybody who hasn’t logged into the old forum for the past 1 year.

Out of interest - How are you confident?

For example I montior the open and click rates via Manadrill and I can see for that same Discourse install the following for the past 30 days just for digest emails:

  • Avg Open rate - 38.4%
  • Avg Click rate - 10.7%
1 Like

@pakl here’s a rails console command that should do that:

User.where('last_seen_at < ?', 8.months.ago).update_all(email_digests: false)

I think we should add a site setting to suppress digest emails for users we have not seen on the site for more than (n) days, defaulting to 365.

The goal of the digest is to get people to visit every so often, if it fails for a year, might as well stop trying until they do come back, if they ever do.


@techapj can you take this? I think it is important. We should avoid emailing people digests after a year if they never visit in that time period.

Especially important as Discourse is getting traction out there and we have live sites > 1 year old.


Would it make more sense for email digests to be broken out as a plugin?

Forum communities vary so widely on their email newsletter preferences, and breaking it out of core makes life easy for those who don’t want to offer digests, plus it actually gives more flexibility for those who do want digests.

For example, on one of my forums, I run a daily digest opt-in, a weekly digest opt-out to active users, and a monthly digest opt-out to inactive users. Each of those digests is a different plugin from a third-party developer, so I can customize each one without affecting the others.

I haven’t looked at the code, but I suspect it’s trivial to break it out of core–I mean it’s really just a cron job plus a few SQL queries and an email template. Perhaps the weekly digest is a default installed plugin? A “batteries included” part of Discourse that can be easily swapped out if the admin prefers a different newsletter plugin?

Right now, with this integrated into core, I’d be a little hesitant to hack too much on customizing it to my site because every modification makes upgrades a little more painful.

Just a thought…

A setting already exists to determine default frequency of digests for all new users, including “never”.

What is being complained about is that people forgot to set it at the time the site was created, and it is not retroactive.

I would be very strongly opposed to digests being pulled out, since most people sign up for a community site and then promptly forget all about it and never come back. Mailing them your “greatest hits” at some regular interval – again assuming you realized this setting was there to tweak at the time of installation – is quite critical to getting people to come back at all.

This is a big part of “it just works”.

But I definitely support suppressing further digests for people who haven’t been to the site at all in 365 days by default. Much safer.

1 Like

The thing is there is not “correct” way of applying the new default.

If you blanket stop all existing digests you may be stopping cases where people want them and expect them.

I do think there is room though for a site setting that removes digests completely, if desired. Some companies may use mailchimp or whatever for a similar task and may not want Discourse to do the job.

I also totally agree with the change proposed by @codinghorror, if you are no longer visiting the site OR interacting with the site (you may be doing all interaction via emails for example) we should stop digests.

There is a setting that changes the default frequency for new users. That’s very different from a forum-default, which I think is needed.

Yes, I agree having something working by default makes sense. And yes I agree that emails are important. Having digests shipped as a default plugin would not break this functionality in any way.

Or they may want to run email marketing within Discourse, but send more segmented campaigns… eg, my example of how I segment users into “active” vs “inactive”.

It’s easy in Xenforo for me to swap plugins around to achieve what I need without having to reinvent my own code–I can just leverage what someone else wrote.

In Discourse, either I have to hack core, which makes upgrading Discourse a little more painful, plus any changes I make aren’t easily sharable with others. Or I can write a plugin, but then I have to override the existing functionality… maybe that’s easy, maybe it’s not, I haven’t dug into it. Writing a custom email plugin certainly would be easier if there was a default digest plugin I could use as a template.

As long as it’s easy to bundle email functionality into a plugin on top of discourse, including easily turning off the defaults then it’s probably fine.

Okay, the setting for suppressing digest emails is in place:


1 Like

Ok @pakl you should be able to set this setting to taste now, if you update to latest!

Defaults to 365 days but something like 60 or 90 days could also work, digests default to weekly, so this means you’d stop emailing people after about 7 - 10 digests go out to them.

That’s assuming the user signs up and never comes back, as digests only go to users who have not been seen on the site at all in the given digest time interval.


I would assume that setting to 0 disables digest emails. @techAPJ can you ensure there is a bypass there?

No, that’s a weird way to disable digest emails. We should make sure the site setting logic prevents it from being set to negative or zero though.