Appearance
Current state of the Subscription system
You can get a general sense of the subscription system here.
Subscriptions
The subscriptions are different than the subscriptions on notifications. On the notification system, you can subscribe/unsubscribe to a specific notification. On the subscription system, you have a few mailing lists that you can subscribe/unsubscribe.
Newsletter
The biggest list is the UX daily newsletter. This is the only list that we send emails to outside of the notification system. It is also tightly coupled to the Newsletter model.
The idea behind sending newsletters outside of the notification system was as follows:
- Separate the transactional emails and the marketing-type emails so that our email reputation stays high. This was based on the assumption that our members will not mark our emails as spam and the newsletter subscribers may do that.
- Save storage. Our notification system logs every outgoing email’s content. Since we send more than 150K emails per newsletter sending (and all of their content is the same), it doesn’t make sense to store them.
Daily Design Quote
This is another mailing list. We send emails to its subscribers every weekday. It uses the notification system to deliver its emails. The content is also the same for all subscribers but it’s saved in the notification logs for each subscriber. There is absolutely no reason to keep this behavior.
Free Ebook List
This is a list for people who just wants to get our ebook and does not want to receive emails from us. Among other lists, this is the only one which we don’t send emails to its subscribers. We only send a couple marketing emails to gently push them to subscribe to our newsletter.
Some facts
- Once a member is also registered as a subscriber, their paths are separated. We only take the email address and don’t couple the two with each other. If, for example, the member cancels their membership, then the subscriber stays subscribed. They will have to unsubscribe explicitly.
- Currently,
ContactListmodel only stores a handful lists. It lately became a static data storage for not-often-changing email lists. So there is room for improving this code. It can perhaps be converted into PHP classes to reduce the coupling to the database as well as reducing the number of queries when working with the subscription system.