knadh / listmonk

High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app.
https://listmonk.app
GNU Affero General Public License v3.0
14.45k stars 1.31k forks source link

Add a public way to unsubscribe easily #708

Closed AyM-frama closed 1 month ago

AyM-frama commented 2 years ago

Unlike the public subscription form, it is not very easy to know which list you are subscribed to, nor is it possible to unsubscribe form all lists or to manage your subscriptions selectively.

Currently, the only way to unsubscribe from a list is to follow the unsubscribe link in the opt-in notification emails or in the footer of a campaign email if the tag was present in the template. So you have to have received an email and kept it (or restart the subscription procedure which is quite paradoxical :) ).

It would be great if there was a way to be redirected to the unsubscribe page by simply submitting your email address in a public form. PHP List, for example, has a page like this on the lists/?p=unsubscribe endpoint and users can manage theirs subscriptions on lists/?p=preferences.

knadh commented 2 years ago

Yep, a publicly accessible preference management page makes sense.

candideu commented 1 year ago

I like what you're proposing in regards to updating preferences by submitting the email to some kind of form. It's similar to what I proposed for https://github.com/knadh/listmonk/issues/455, where if someone submits the subscription form multiple times, they could receive an email asking if they would like to update their info (or send them an email to update their info to protect privacy?)

knadh commented 8 months ago

It would be great if there was a way to be redirected to the unsubscribe page by simply submitting your email address in a public form.

Finally got around to exploring this and realised that this approach has a problem. If one has to simply enter an e-mail address and be redirected to a page where the subscriptions can be managed for that user, then anyone can enter an e-mail address and view/modify their subscriptions.

To do this correctly, just like an opt-in e-mail, it'll be necessary to send an opt-out e-mail, from where the user clicks and lands on the subscription management page. This ensures that the request is validated. But if that's the case, then it may as well be from an e-mail received at any point?

rt4mn commented 6 months ago

Plus one to the " unsubscribe form all lists" form. I dont think there is a way to give users granular control over which particular lists they are subscribed to without a validating email, but there should absolutely be a single url we can send people to such that they can enter their email address, and then that address is removed from our lists, so the last email they receive from us is the email confirming their removal request.

If one has to simply enter an e-mail address and be redirected to a page where the subscriptions can be managed for that user, then anyone can enter an e-mail address and view/modify their subscriptions.

So dont do that, then? Make a form where you enter an email address, then the next page says "if this email address was subscribed to any of our lists, it has now been removed" or something to that effect. The result will be the same for both people in the system and people not in the system which prevents leaking info to random third parties.

If that email was subscribed, the email address that was submitted will get an email saying "we recieved a request to unsubscribe you from all lists. if this was you, this will be the last you hear from us. if this was not you, click this link to re-subscribe yourself". It is possible somone could try to unsubscribe a bunch of people maliciously, but frankly that seems unlikely, and people who want to stay subscribed will just re-subscribe. Its more important that people be given as many easy ways to unsub as possible.

Currently we use a nextcloud form for this, but that requires manual intervention on our end. there should be an easy way for users to quickly tell us they no longer want to hear from us at all, period.