Google Blogoscoped

Monday, April 19, 2010

Experiences Sending 14,000 Emails

The Goal: Some of the websites I create or co-create have a lot of one-time visitors – people who may like the project, but due to the type of the site don’t find much of a reason to visit it daily. Take, or, for instance, sites which you probably use once, then maybe tell your friends, but don’t look to for updates. My sites also rarely to never require registration. So at one time, my friend and I wanted to stick in a little email subscription box which says “get an email alert when we release new fun projects”, so that people who are interested in news would have a chance to hear about them.

The Subscription Form: The subscription box we picked was the most simple we could think of. Just a short sentence of explanation followed by an email input box and a submit button, as well as a small question mark leading to further help (like my snail mail address and an explanation of what the list is about, and what news will be send). Once you put in your email, you can optionally also enter your first name. Because this box was supposed to be included into a couple of websites at once, the code behind it was hosted at a general domain. It’s included like this:

<div id="funmailWrapper">&nbsp;</div>
<script type="text/javascript" src=""></script>

The include.js file now handles the HTML creation and so on, and in case something needs to change (like the text colors, or the text of the submit button), it would only need to be changed at one location. The individual embedding site can still change layout details using an inline style on the div element. Above code appears as follows when embedded:


The Database Table: Within the database we save several values. Like first name and email. There’s also the referrer value, which notes from which site the user signed up. We also save the main language per the browser’s language header, in case it might come in handy. The date of sign-up is saved as well.

Sign Ups: The subscription list, called Funmail, was launched last year, March 2009. Since then, over 14,000 people have signed up. The list is opt-in but not double opt-in. Double opt-in means that after you sign-up, we would send you a confirmation link via email which you need to click to actually activate the subscription. However, sending emails from my server a whole lot of the time puts the email in the spam folder. That’s one reason why I switched from double opt-in to plain opt-in registrations at, for instance. With double opt-in, so many registrations would’ve failed, perhaps because my ISP sending the mails is not whitelisted or other reasons (not knowing the exact reasons and best ways to handle this was why I went with a third-party service later on, see below).

Preparing for the First Mail: For one year we didn’t send a single email. But recently I had released a couple of sites, and wanted to let people know about For one thing, the site didn’t yet have enough people who heard about it, but it would need more readers to allow us to create new episodes. Now the question was how to send the mails – per above, my own server doesn’t seem to be useful for that sort of thing. I asked a couple of people for opinions and finally, semi-randomly, settled for

Signing up with MailChimp: The MailChimp signup was hasslesome... submitting the registration form resulted in nothing at all, the form was simply reloaded and emptied. After trying this a couple of times, including with a proxy, and including in another browser than Firefox, I contacted their support. There was an automated long auto-reply but after that, I never heard back from the MailChimp support. Only after quite a few days did I bother to check the long auto-reply with automated help pointers again, and sure enough, in it was a link I was supposed to click “If I still needed help” or so. Only when that link is clicked will a human at MailChimp see my request. They finally signed me up, entering the signup values for me. Perhaps my location in China, or the fact I had the referrer disabled in Firefox, caused the issues, though that wouldn’t explain why it also failed in Google Chrome (which doesn’t hide the referrer value), or when using a proxy (which doesn’t show China as location).

Creating the Mail: After the troubled signup, things with the MailChimp interface worked rather smoothly. (If something doesn’t work smoothly, their support form isn’t very usable though – you always need to re-enter your user name, name and email, and solve a captcha, even though you’re already signed in.) Their app is self-explanatory most of the time and neatly designed. Their process is split up into mainly email lists and email campaigns. So you first need to upload your list, like as a Tab Separated Values file. Then, you’ll assign which values mean what.

Afterwards you create a campaign mail. I went with a plain text email instead of an HTML mail just to keep it simple, even though that means not being able to gather opening and click statistics. But I figured opening stats wouldn’t work to well anyway because they’re based on displaying an inline image with the mail, which many email clients will suppress anyway (and the click stats I didn’t need as much, because the site itself already uses Google Analytics). MailChimp handles the unsubscribes for you so you need to provide their unsubscribe link (they won’t let you handle unsubscribes yourself, in order to protect themselves from people abusing the system, i.e. webmasters disregarding an unsubscribe). The template looked like this now:

Hi [First Name],

You’ve signed up for our new projects alert at [Referrer Name]*, and today we got some news for you! There’s now a new site:
Sally Sells You Stuff at
... with photo gadget comics created with my neighbor in China.

Please check it out, feedback is welcome! If you like the site, please tell your friends, and subscribe at the site to get an email when we release a new Sally episode.

Philipp & Sally

*[Referrer URL];

Want to unsubscribe [Email Address] from the Funmail list?
[unsubscribe link]

My address: Philipp Lenssen - [etc.]

MailChimp has its own mail template language, so the first line is actually written like the following, because I needed a fallback as not every user had provided their first name to the Funmail list:

*|IF:FNAME|*Hi *|FNAME|*,*|ELSE:|*Hi,*|END:IF|*

Testing the Email: MailChimp has several tools to let you test your email. After all, you can’t undo sending the emails if you realize there’s some bug in your template. For one thing, you can view an immediate preview of the mail in your browser. (The template language contained a bug which omitted a line break in a crucial position, but MailChimp support suggested a workaround to me. Another double-encoding bug, which garbled the place holders in the email preview, remains unfixed.) You can also send yourself a test mail. You can run the Delivery Doctor, a program which will test your campaign with common spam filters to report on potential problems. Last not least there’s Inbox Inspection, which produces dozens of screenshots of what your mail looks like. Inbox Inspection isn’t cheap: 3 tests cost you $14, even when you’re already paying to send out the campaign. Talking about costs...

MailChimp Costs: Here’s an overview of some of the pre-paid pricing options of MailChimp (there are also monthly subscriptions options):

You’ll getcost per mail
$9.00 300 Credits3 cents per email
$100.005,000 Credits 2 cents per email
$250.0025,000 Credits 1 penny per email
$750.0075,000 Credits 1 penny per email
$1,000.00200,000 Credits 0.5 cents per email
$2,500.00500,000 Credits0.5 cents per email

Sending the Mail After hitting the send button at MailChimp, feedback will come back nearly instantly. In my case with the Funmail list, several people marked the mail as spam, and I could see the spam counter go up. It’s possible that some people have forgot that they’ve signed up for the list, perhaps it’s also not too common to get a mail from one domain (say, you’ve signed up at with news about another domain (in this case,, so some people thought it was spam even though we had an opt-in process (if only single opt-in, due to the limitations of my server). An automated MailChimp alert quickly let me know that if my spam rate would go far beyond the “normal” 1 in 1000 (which sounded quite low to me), then ISPs might blacklist that mail, and it would immediately land in the spam folder of recipients.

Another feedback are the bounces. Bounced emails are handled by MailChimp and “hard” bounces will be automatically unsubscribed from the mailing list for you. And then there’s normal, manual unsubscribes, for which you’ll also see the unsubscribe reasons.

Handling Feedback: I had directed replies to the Funmail list mail to, which in turn was forwarded to my main Gmail account, and there filtered into a folder (i.e. labelled). A lot of auto-vacation replies came in. A lot of auto-spam mails came in. (Does that mean spammers sign up for such subscription list just so that can send you an auto-reply? I guess so.)

If you ever want to send out a bunch of emails at once, perhaps above experiences were useful to you as a pointer. If you already sent out such campaigns before, which tools did you use and how happy were you with the results?


Blog  |  Forum     more >> Archive | Feed | Google's blogs | About


This site unofficially covers Google™ and more with some rights reserved. Join our forum!