Feedback on alerts here: The out-of-tolerance temperature alert is a totally great feature that has saved me one batch already. I'm really appreciative of it, since the brew-day went so swimmingly and I would've been devastated to lose the batch.
That said, I received something like 30 alerts for low temp and 30 for normal temp today, as my fermentation chamber fluctuated around its low tolerance mark. They came in at intervals as low as two minutes apart.
Here are my suggestions, based on experience with developing a commercial e-mail product:
- Rate limit: Minimum of ten minutes between e-mails to a given recipient. Whether you make this user-configurable is up to you, but put the floor at ten minutes and don't let the user push below that.
- Opt-in procedure: An opt-in for these e-mails to increase chances you're complying with UCE laws, even though the e-mail is non-commercial. Mandrill probably offers a third-party option for opt-in, but I have not used their service. Similarly, rate-limit opt-in attempts! Don't let your anti-abuse feature turn into another abusable feature.
- Opt-out link placement: Looks like it has one, but it should be at/near the top. Even though most people who receive these e-mails are not going to be a problem, the unsubscribe link being at the bottom does count slightly against your spam score.
- Subject line: The subject currently is generic across all users and sessions, with variation in the first word only. Something slightly more useful like, "Low temperature on [session name]," would increase variation and decrease spam score.
- From address/sender: Please use a dedicated sender for these! If email@example.com winds up with bad deliverability ratings, users will lose important information. With an alert-specific account, users could also adjust their e-mail clients to filter that to a specific place. The current setup has the Discourse summary going out from that address, which could contain content that would cause the appearance of spam and hurt deliverability.
I may be able to help, but I have very little experience with Ruby/Rails at this point. I'll pull the repo soon and see if I'm able to implement any of the suggestions I've made.
Thank you for the wonderful product!