EmailEngine, an alternative for Nylas Email API

From time to time, people who are looking for alternatives to their current email API vendor, usually Nylas, ask if EmailEngine could be a replacement. Both provide easier access to email accounts via an API. Is EmailEngine cheaper, maybe a more limited version of Nylas?

EmailEngine, an alternative for Nylas Email API

Both EmailEngine and Nylas Email API allow HTTP API-based access to email accounts. You don't need to know anything about IMAP, SMTP, or MIME encodings. You only need to register email account credentials with the service, and you are good to go. List or search emails on the account, send emails on behalf of the user, or whatever exactly it is you want to achieve.

Though seemingly similar, there are multiple differences between EmailEngine and Nylas Email API.

For starters, the most obvious one is that Nylas is a managed service, while EmailEngine is software you download and run on your premises. The less obvious but even more important difference is how these services handle email messages.

Nylas supports a variety of email backends, while EmailEngine supports only the most common one – IMAP. If you expect to provide services to sales teams on old Exchange systems without IMAP support, this is a deal-breaker for EmailEngine.

Nylas makes copies of all the emails on synced accounts to their database. EmailEngine, by default, only keeps a local index without any message content. Nylas retrieves the requested info from their local database when you run an API call, while EmailEngine has to run IMAP commands against the IMAP server.

If you enable the Document Store option for EmailEngine, which would keep a local cache of all emails in an ElasticSearch cluster, then for message retrieval and listing queries, EmailEngine would work similarly to Nylas. All write operations and attachment requests would still go directly against the IMAP server.

Also, EmailEngine is slower for many operations than Nylas because it can only run a single command at a time against the same account on the IMAP server.

If you make five parallel API requests against the same synced email account that require running commands against the IMAP server, then EmailEngine does not process these requests in parallel. Instead, it queues these and processes requests one by one. If one of these requests takes a long time to complete, all the other pending requests are on hold and could even time out.

Feature-wise, there is a bunch that EmailEngine is missing and probably will never have. EmailEngine does not detect plane ticket information or the general sentiment of the email content. All these would be on your own.

So, I would say that EmailEngine is more of a DIY solution. You are responsible that it is up and running. Or the Redis database that powers EmailEngine's index is appropriately backed up. Or, if you decide to use the Document Store for faster response times, you are also responsible for managing the ElasticSearch shards and indexes. You also have to consider the limitations when running parallel requests, etc.

So given all that, EmailEngine being somewhat slower in responding and having fewer features, is there any reason to consider it over Nylas?

If your application mainly acts on webhook notifications. Even though message processing with EmailEngine might be slower, you will get webhooks faster from EmailEngine than from Nylas, as there is no processing step in between. As soon as the email server lists a new email or an email is deleted or updated, EmailEngine will send a webhook without delay.

EmailEngine is much easier to start with (download and run). As EmailEngine would be running on your machine when developing, there is no need for webhooks tunneling or any advanced setup as it's all local. For development, you can even disable authentication to write those curl commands by hand. All you need to remember would be the following, that's it:

$ curl localhost:3000/v1/accounts | jq

EmailEngine gives better control as you would know what kind of user data and where exactly your service stores.

EmailEngine is also way cheaper. You can run as many EmailEngine instances and sync as many email accounts as you want for the fixed yearly subscription price. If you already manage some servers, and running EmailEngine would not add additional overhead, EmailEngine could be ten or even twenty times cheaper than Nylas (not including the hosting costs).

Nylas does not have public pricing. Interviews with customers who have switched from Nylas to EmailEngine indicate that for 100 email accounts, it is around $5k per year, each additional account priced separately. With EmailEngine, you can process thousands of email accounts at no extra cost. Even considering the server costs, there is no setup configuration where Nylas would be cheaper than EmailEngine, or even close.

– When running queries against the Document Store, not IMAP, to fetch messages, there is no rate limiting. You can run as many requests as your servers can handle.

The catch, and also another difference with Nylas, is that you're mostly on your own. I'm a single-person operation, and there is no customer success team to help set up the integrations. The upside is that all customer issues will land on the person who actually builds the thing, not on a support person in a three-tiered support organization.

Are there companies that have moved from Nylas to EmailEngine? Yes, there are a few. There are also hybrid setups, where some accounts are kept on Nylas and some on EmailEngine.

Do you want to hear more about EmailEngine? Join our Discord channel.