I am a bit confused with Mailchimp and Mandrill, what I need to do seems to need both, let me explain:
A social network needs to send at 1am everyday a notification email to their users that have not logged in during the last 24 hours. Emails have to be personalised.
On the top of that, there are different campaigns for different list of users.
My first thought is to use the mandrill API, but I need to be able to see who unsubscribe from what campaign (a user might want to unsubscribe to one campaign but stay subscribed on another one). I cannot seem to find something that fits the bill with Mandrill... Subaccount? Tags?
Thanks!
I'm not 100% sure this will answer the question, but let me try:
Mandrill actually belongs to MailChimp, and was created for interfacing with it. You can use the "mandrill-api" gem - https://mandrillapp.com/api/docs/ - to interface with many of the Mandrill and MailChimp features to do the things you wanted.
A lot of times if you are attempting to do so, and run into errors such as "XXXX not found", you have to send it FROM MailChimp TO Mandrill. For instance, when you create a template in MailChimp, click the dropdown menu next to the template, and click "Send to Mandrill". You should be good from there.
Other than that, I wish you luck. While the mandrill-api gem can do everything, it has absolutely abysmal documentation. There are multiple third-party gems that provide similar functions (mandrill-rails is a popular one) that you might have better luck with, but I have not used them myself.
Notifications = Mandrill = 1:1 emails
Campaigns = MailChimp = 1:many emails
Typically, notifications are 1:1 emails - your system sends a single user an email as a result of some trigger within the system. The trigger might match multiple users at the same time, but emails are sent to them each individually - probably via a loop in your code. Mandrill supports templates to personalise these emails if required.
Campaigns are sent to mailing list members in bulk, where the same (personalised) email is sent to multiple users at the same time. This is either triggered by hand (you manually create and send a campaign) or is based on a scheduled trigger (eg autoresponders or scheduled campaign mailing).
Notifications are generally system-related emails and while you do have the technical ability to let users unsubscribe from them in Mandrill, typically I would consider that a configuration option you'd give them in their personal control panel on your site.
Campaigns are something you MUST allow users to unsubscribe from to comply with anti-spam laws, so will contain unsubscribe links in the footer of every email.
Related
Several vendors (SendGrid, MailChimp, SendInBlue) have "transactional" emails (sent via an external program relayed through the vendor) and "marketing" emails (managed in the vendor app through HTML templates). The vendors also have unsubscribe management and build up lists of people who have unsubscribed.
How do you use the unsubscribe information in the transactional mail side? If you try to send to X and they've unsubscribed, does it just drop the email sent to X? If not, do you have to check unsubscribe information in your own app before generating a transactional email?
What are best practices in managing this subscribe information across transactional and marketing applications? I have been searching the web, and I just find guides on how to set up the unsubscribe links (sendgrid, mailchimp, sendinblue) , but not how to use the information properly on the transactional side.
For SendGrid, if someone clicks on a global unsubscribe link, then future sends through the SendGrid transactional email API will drop it. You can see the Drop in the "Activity Feed" after the unsubscribe:
The unsubscribe list can be edited manually (to either add or delete names) through a web UI or an API.
There are also unsubscribe groups if you don't want one global unsubscribe list.
I still don't know the easiest way to integrate two systems, though. Presumably a scheduled job to copy from one system to another.
I have an app which sends a daily reminder message. If a user forgets to log in on certain days, it will send an email reminder. I want users to be able to unsubscribe to this reminder by clicking a link on the email. There may also be different kinds of subscription. For example, a user might not want daily emails, but they may want password reset, or blog emails.
Mailgun has an unsubscribe feature. While this allows some control with tags, this seems to lack a resubscription option. They also have a mailing list, but that also seems more for blasting emails rather than opting in to notifications.
One option is to connect the email to my database. So that when the user clicks an unsubscribe link, it will flip a flag in my database such that the user isn't contacted regarding this email. But I can't find a way to do this, that doesn't involve giving the user an API link on the emails.
What are some options I can do to solve this?
You probably would be able to accomplish this using Mailgun mailing lists (but I wouldn't for reasons below). You'd have to maintain a list for each type of email that you want to send to users. So when you add/delete users from your system you'll have to use the API or control panel to add/remove from each of the lists. Mailgun can generate a unique unsubscribe url for each of the lists so that when the user hits unsubscribe from the email it will flag the email as unsubscribed for that one list.
From Mailgun docs:
For managing unsubscribes in Mailing Lists, you can use
%mailing_list_unsubscribe_url%. We will generate the unique link to
unsubscribe from the mailing list. Once a recipient clicks on the
unsubscribe link, we mark the recipient as “unsubscribed” from this
list and they won’t get any further emails addressed to this list.
Mailing lists should work unless I don't understand your requirement.
From my point of view I'd just prefer to handle this inside my own system. Otherwise you have to maintain your application's user records and then a separate mailgun list for each email type. In multiple applications I have user email preferences stored in the db. The user (or customer admin login) can adjust preferences through the UI or in some cases by hitting unsubscribe link in an email which links to a web page (part of my app) "You have now unsubscribed to daily emails" -- the page sets the user as unsubscribed in my app DB.
Its extra work but the advantages to handling this in your app is:
You've only got one user DB (list) to maintain
List membership is easier to modify by the app user or app user account manager
It doesn't tie you as tightly to Mailgun -- in case you decide to
choose another provider
More on Mailgun Mailing lists:
https://documentation.mailgun.com/en/latest/user_manual.html#mailing-lists
If company already subscribed to MailChimp do they need also Mandril to send transactional emails such as app welcome, invites to join or befriend, password recovery etc.
Can one send password recovery or welcome email as one person campaign programmatically using MailChimp alone? Or is it too expensive or too cumbersome?
I've been using Mailchimp for a while and what you are seeking can be partially managed with a featured called automation within Mailchimp. It allows you to:
Set up any number of emails as chained emails (so to say) which are triggered individually when something happens within the Mailchimp list. For example if someone joins your list, it triggers a welcome message. This automation requires in some cases no code and can be done relatively easy. You can see more automation examples here (of course you can use their API for more cool stuff).
For password changes notifications, email verifications and such transactional emails you could use Mandrill, but as an add-on within Mailchimp which has a separate pricing, where you can start free for the first 2000 emails.
I believe the automation on Mailchimp + a good use of their API to make changes on the list, could easily be put to good use to your advantage (haven't tried this combination yet but will do in the future, let me know if you find out something).
To answer more directly your question, yes, you can achieve a certain degree of automation with the automation part of Mailchimp (which is relatively new), but for a more granular control you definitely could use Mandrill as an add-on within Mailchimp.
Techically, you could create single person campaigns via the Mailchimp API.
But, Mailchimp has developed it's own anti-spam AI (Omnivore) that kicks in every time the campaign is ready to be sent, which analyzes the campaign and list data.
Since I had Omnivore block some of my campaigns for trivial reasons, I think it would be a matter of time before it finds a pattern in your workaround.
I have a database as part of my web app that stores user emails, age, gender, etc. Is there a way, through the API to send a bulk email to a lsit of users? Previously I've used their API to create new entries from my database in MailChimp's system, and then we'd segment our users through MailChimp's web application. The issue is that sending your data to MailChimp has so many issues. For example, to store a user's age in MailChimp, you have to create an individual "group title" for each age when done thru the API. You can't just specify that the field "age" is a number and then add whatever you like. Also, each user selects a city when they sign up through us, and if we add another city to our selection list, you have to manually add it on MailChimp, otherwise you get an error.
So the simplest solution would be if we could do the segmenting on our side and send an email through the API, unless there is another, easy way to do this. I know that Amazon SES let's you email through an API, but I want other features of MailChimp, such as sent email history, analytics and providing and easy unsubscribe feature for users - Amazon SES doesn't do any of that.
Is there an answer to my conundrum?
Have you checked out Mandrill? It's a newer service from MailChimp that works like SES, but has those incredible MailChimp marketing sensibilities you know and love (open/click tracking, email audit log, plus lots of new stuff.)
It won't connect directly to your data in MailChimp (yet), but it sounds like you've got all the relevant data in your own DB already and can do the segmentation and content generation yourself.
Bonus: you'll also get a discount if you're already a paying MailChimp customer.
if I wanted to create an "email list" along the lines of google groups (and eventually integrate with a web site), what services should I look into? I haven't really dealt with email before so I'm not 100% sure how it all works. I do know I need to be careful about being blacklisted, etc. Do I use something like sendgrid/mailman? I imagine all emails go to my server when a user hits "reply all" and on my end I push that email as though it came from the user but really it came from my "mail" server? It seems a user doesn't need to "reply all" to send to the list and there is no quick way to reply to just one user (which is a good thing for this app).
So the way I imagine this working:
1) I use something like sendgrid to "listen" for emails coming to list#mywebsite.com
2) When emails come (i.e from userx) I do some filtering for spam, etc and then push them all out to "all users/subscribers"
3) All users get something that is "from user x" (but it's really from my server, on google groups it says "via googlegroups") and the "reply to" is list#mywebsite.com
I imagine this is how it all works but I'm not 100% sure this is correct or if sendgrid will allow me to do this (and if it will cost too much).
Thanks
It really depends on what your needs and skills are. For simple mailing lists there is some very established software such as ListServ or MajorDomo
If you're not running a Unix variant, or you're not confident setting up this kind of software they might not be suitable though.
You can use SendGrid to handle your incoming email, but you will have to re-assemble the message before sending it out since it will be posted to your incoming parse URL in a, well, parsed way. The good news is that SendGrid can handle the spam check for you.
SendGrid currently doesn't charge for inbound parsing, but of course that may change. So as far as your cost goes, you would only use credits for the mail you send. Keep in mind that SendGrid only provides the Parse API to silver ($80/mo) customers or customers on the free (200 emails/day) plan, but there are plans to add a lower tier package that also has access to all APIs.
You can also use SendGrid to handle unsubscribes, but if you are using another solution for list management that's probably superfluous.
Googling for "mailing list hosting" brings up a wealth of sites, some of them free at least under some conditions. Many of them will use something like Mailman / Majordomo / Listserv; certainly you can run Mailman or Majordomo on your own server if you like, as well, so your question doesn't really make sense from that point of view. Yahoo Groups / Google Groups can also happily host a list for you. Do you need the list to be visible to subscribers only? Google Groups and Yahoo Groups will host private lists, too.
A mailing list basically works like Bcc: mail. You send to the mailing list's submission address; it then replaces some of the headers (often the Sender: and perhaps Reply-To:) and then redistributes the message to all the subscribers. Behind the scenes, it might rewrite some headers to make sure bounce messages come back to the list software for further handling (for example, to automatically unsubscribe addresses which consistently return a bounce), and often, it distributes the message with some delay in order not to saturate the outgoing bandwidth and/or choke a receiving server; though some parts of this are also handled by the regular mail transport agent (MTA -- Postfix or Sendmail or what have you).
You might look at ezmlm
EZmlm-idx is a nice mailing list add-on to Qmail. When we install Qmailadmin later on, you'll see that EZmlm-idx integrates seamlessly into Qmailadmin to provide a very user friendly mailing list management interface. As an added bonus, Vpopmail (which we will install as well) will let you control what users can and cannot use mailing lists!
Quoted from qmailrocks
You do not need to worry about sendgrid. Just get a cheap vps,configure DNS and, install MTA(postfix,qmail,sendmail) imap(courier,dovecot), a modern listserve, and let it do it's magic! On the lists where I am subscribed , I have the option to reply to a post, or the whole group.