Ask HN: How do you send email in your early stage startup?

23 points by yeukhon ↗ HN
Say you are launching your startup idea, trying to get some early users. You have account-related emails (registration, forgot password), and marketing emails.

Do you run smtp off of your EC2/DO/GCP machine? Or do you use Amazon SES, Mailgun, Mailjet, MailChimp, SendGrid and blah so you get the benefits of DKIM and volume handling?

Budget: I am not sure what's a good budget, but I see $20 budget to start with. Obviously if there's spike, I hope a "free-tier" buffer would cover.

32 comments

[ 5.1 ms ] story [ 83.9 ms ] thread
SES works for me. Do any of the cloud providers even allow SMTP from their IPs?
All of them?

At least all those I've ever used or looked into do.

We have a MailChimp account and have a couple of lists set up there for newsletters / marketing stuff. For "transactional" emails (account creation / password reset / etc) or anything that is done programmatically, we use SES.
I think an SMTP setup would be overly complex. I setup a Lua-based mail sender in nginx for a startup a few years back that just sent to gmail iirc. But that now seems a bit too much effort. SendGrid seems interesting as you can setup templates and then just make a Rest API call.
Early stage? As fast as possible. Just plug it into something like MailChimp, even if it's more expensive. You can cut costs later, but honestly manpower is money, so it's usually not worth setting up your own.
Ses would be the best option for your budget. They give you shared ips but I've seldom seen any transactional mails go to spam.

Also if you're using route 53 configuring dkim, etc for your own domain is just 1 click away.

Interesting. I am pretty familiar with AWS infrastructure so ideally I would love building on there first, but the cost is something I am pretty sketchy about, in general for EC2 and whatnot. So I was thinking start off with a $5 Digital Ocean droplet.
If cost is a big factor for you, you can try finding services that give free aws credit. Like Stripe atlas have me 5000usd just for signing up. product hunt also gives you. I'm sure there are others too. the need of the hour is to always launch quickly. even if you manage to save a few bucks on digital ocean but waste 2 weeks on migration and learning something new you have to calculate the cost of 2 weeks my personal l opinion is to get it done as quickly as possible worry about such costs later.
Call this super-lazy, but it works for me, and it's cheap.

Say my startup is foo.com and I've registered it at namecheap. I'll get a corresponding gmail account (foodotcom@gmail.com) and use that for my outgoing correspondence.

Where you want to impress with your custom domain is incoming email, and in that case, you can set up mail redirects (catchalls in particular) for your new foo.com domain. So if I meet VC Mike at an event, I can direct him to sales@foo.com or info@foo.com. The "handoff" for when I email him back out of the blue from my foodotcom@gmail.com can be a little fraught, but it's good enough until I want to afford actual gmail services or similar.

It's a great way to segment off new areas of your business, so if you hire Vickie in customer service, you can autoforward support@ to vickie@personalmail.mail or vickiefoo@gmail.com, until you hit the big leagues.

I don't think using a custom domain for company email is the "big leagues". It is only a minor effort to use your own domain and shows some semblance of a professional operation.
> The "handoff" for when I email him back out of the blue from my foodotcom@gmail.com

As far as I remember GMail can send emails on behalf of another address you own:

https://support.google.com/mail/answer/22370?hl=en

This way VC Mike will have a seamless experience writing you to your @foo.com address.

Gmail used to do that for free, and if you signed your domain up, you're grandfathered in (I have a few domains still like that).

They don't do it for free anymore, and their mail hosting for new accounts is surprisingly expensive (though I suppose most things are, when you're used to getting them for free).

I think you're talking about GSuite users. They are not free. Regular GMail can send mail as another account you prove ownership of. (For free)
Not anymore. Only if it’s a Google Apps domain.
I didn't know this, thanks for pointing it out.
Disregard the comments saying that gmail aliases are no longer free. That is simply untrue.

Parent is not advocating for the use of Google’s G Suite. G Suite is indeed no longer free, but that’s irrelevant. Grandparent was using namecheap’s mail redirect. At no point were the parents suggesting the use of G Suite.

Or you could pay $5 a month and get a Google Apps account with an @yourdomain.com email address
Mailgun has a free tier and they give SMTP access. Perfect for when I'm setting up a new Rails app.

I've never had to pay them, ever. Even though they handle all my small startup's traffic.

SendGrid for sending signup, password reset emails. They have an API and SMTP support which we prefer since it avoids lock in.

We use MailChimp for our marketing mails purely because of habit. SendGrid can handle that too.

On the free plan for both for ages and ages so didn’t have to worry about the cost until we started ramping up.

I would advise against your own SMTP server. I maintain one for ‘fun’ for my personal emails and between SPF, DKIM etc. it’s more time and effort than it’s worth for an early stage project.

You also get cool analytics with MC and SG which shows who received their emails, who hit spam, who clicked, etc. very handy for diagnosing signup mail problems.

Split your mail into 3 classes:

1) Interpersonal. This is your own email that you type and send from your own mail client. Internal discussions. Scheduling a meeting with an investor. Etc. Use a hosted IMAP+SMTP service for this (g suite, zoho, fastmail, whatever).

2) Transactional mail. This is mail that's related to specific interactions on your platform: "thanks for registering" or "you have a new private message" or "your order is in the mail". Legally, there's no obligation to allow users to unsubscribe. You'll be automating the sending of this with code, and once you write and design each message it will be changed infrequently and probably by developers. If you need to do automated processing of incoming mail, it also falls into this bucket. For this you want cheap SMTP and ideally a robust API with pre-parsing of incoming mail. For this you want a service like Mailgun or Sendgrid.

3) Marketing mail. This is newsletters, offers, etc. Broadcast-only (not a conversation). Your marketing team will be customizing these each time they go out, so you need a WYSIWYG interface. Ideally this is also hooked up to a CRM so that you can segment your messaging. You also need automated unsubscribe for compliance purposes. And this is the mail most likely to be actively marked spam, so you want to send from a different hostname and IP than your interpersonal and transactional mail so that your interpersonal/transactional mail won't be auto-filtered as spammy just because users mark your marketing mail as spam. This is what services like mailchimp or constant contact are for.

What CRM do you typically use for a project like this to hook in with marketing mail?
Great question. Ideally your marketing email provider would include its own robust CRM or have excellent integrations into robust third party CRMs. All the options the companies I've worked for have used so far have been extremely awkward fits. I'd be interested in how other people are solving for this.
I recommend doing these under three separate but related domains, or at least separate subdomains, and on separate infrastructure.

This way, you can allocate an entire domain (or subdomain) for each function, and if you run into problems with your marketing mail going down the tubes because someone decides to put your IP address ranges on a blacklist, that doesn't automatically nuke your main corporate mail and your transactional mail with your existing customers.

Having dealt with this stuff quite a bit, I'd caution about keeping all your transactional mail siloed. True, many emails may seem not worth having in a business user-friendly ESP where your marketing emails live, but if you keep transactional email on a separate system, you lose a lot of visibility into the role of those emails in your business unless you incorporate them into an analytics system elsewhere.

A check confirmation email, account renewal notice or other transactional email couple play a critical role in your funnel or with combating churn. If you don't have it married up with everything else, you'll lose a lot of that insight.

Any ESP friendly enough for a business user will likely have an API for sending programmatically. Rates might be a bit higher over something like SES, but that may be worth it depending on your scale. It also let's business users manage templates and such without needing to have an engineer touch code, and the reporting is all there.

You make a good point. The cost balance may depend on your use case and size. I'm currently at a B2C company that sends hundreds of millions of transactional emails per month. We use Sendgrid. They provide basic open and click tracking, which is more information than our small team has the bandwidth to make use of at this point anyway.

If you're a B2B sending 10,000 emails per month with high potential value per interaction, integrating transactional and marketing mail and tracking email interactions with transactional mail on a granular level may be worth the additional cost.

And a large team may have use for more detailed data, or the capacity to build out reporting and integrations for themselves.

But super early stage, that's not the low hanging fruit you should be worried about.

And even if you end up using the same platform, for conceptual purposes, for compliance purposes, and for optimizing deliverability you'll want to consider marketing and transactional email separately.

I'd do that with a gmail account. I wrote a bash script with ssmtp to send mails from the command line. Here is the critical line:

  echo "$body" | /usr/lib/sendmail -C $config $mail
I can give you the full script. Just tell me if you need it.
I have tried the MailJet trial. However there is no feedback as to when you go over the 200 messages a day, which is not acceptable to me, for their business being in email, I figure sending me a warning email would be simple enough.

Following that I use Amazon Ses because it has the best value. I use name cheap which has free email forwarding for an entire domain. I forward all emails on my domain to a Gmail account with a matching name, and use that for inbound emails. This method is rather limited, but very cheap.

Are you using GSuite so you don't end up replying as foo@gmail.com?
No, I just created a Gmail email with my domain name before the @