eric-brechemier / how-i-replaced-skype-with-twilio

How I replaced Skype with Twilio to make phone calls from my computer
Creative Commons Attribution 4.0 International
43 stars 9 forks source link

Compare different services to send and receive SMS messages by email #12

Closed eric-brechemier closed 2 years ago

eric-brechemier commented 2 years ago

Twilio has acquired SendGrid in February 2019. Following this acquisition, I expected Twilio to add inbound and outbound email APIs to its platform, integrating these services offered by Sendgrid through actions available in Twilio Markup Language, TwiML. Three years have passed and it has not happened. Instead, Twilio has shifted its focus from communication to analytics, bringing it closer to SendGrid, a major distributor of email marketing.

At the beginning of 2022, I started to search for different third-party alternatives to these missing services that I expected from Twilio, starting with Twilio SendGrid (still operated as a separate service, with separate user accounts and billing) and Zapier, which looked promising as it offers a number of automated workflows based on Twilio services.

eric-brechemier commented 2 years ago

Starting with Twilio SendGrid and Zapier, I have now tested seven different services, in two different categories:

My three main criteria for this evaluation were:

eric-brechemier commented 2 years ago

Transactional Email

Service Plan Simple End-to-End Quota Price
SendGrid Free No No 100 emails/day $0/month
CloudMailin Free No No 10,000 200 emails/month $0/month
SocketLabs Developers No No 2,000 emails/month $0/month
Postmark Developer Somewhat No 100 emails/month $0/month

None of the services in this category are really simple, as their primary focus is on enabling and tracking the delivery of a large number of emails for marketing purpose. This leads to extra validation steps and settings which are not relevant to my use case, i.e. delivering a limited number of emails to myself. Among these services, Postmark is the only one with an interface that felt friendly to use.

Also, none of these services offers an end-to-end integration to send and receive SMS with Twilio. The inbound HTTP API is specific to each service, which does not make it suitable for use as a webhook to catch SMS events from Twilio. The outbound HTTP API is also specific to the reporting of events for each service, which does not make it suitable to trigger Twilio API to send emails. All of these integration steps have to be developed using a separate server or service.

eric-brechemier commented 2 years ago

Automated Workflows

Service Plan Simple End-to-End Quota Price
Zapier Starter No Maybe 750 tasks/month €28.06/month
IFTTT Pro+ No Maybe 750 emails/day €9.20/month
Pipedream Developer Yes Yes 10,000 workflows/month $0/month

While both Zapier and IFTTT were fit for the task on paper, I could not confirm that they would fulfill my use case end-to-end in the duration of my trial period. What I identified, however, is that it was definitely not possible within the constraints of their free plans: generic email and http tasks require to upgrade to a paid subscription in Zapier, and filtering data from one task to use it in the next is only supported in the highest tier of IFTTT. While both Zapier and IFTTT look easy to use, I found their interface confusing, perhaps because their simplicity was hiding the details I needed to figure out how to accomplish my goals.

I had none of these issues with Pipedream, which was actually simple to use and allowed me to create two workflows to accomplish my goals:

  1. a workflow which takes an email as input and calls Twilio API to send an SMS
  2. a workflow which offers an HTTP input to register as webhook in Twilio and sends me an email

Setting up these workflows was a step by step process, made very intuitive by the fact that Pipedream was showing me realistic data at each step, coming from a test event that I was invited to create as a first step. The parameters for the output step were easily selected from that data, and could even be customized further by writing expressions in JavaScript.

I encountered a single difficulty with Pipedream: their inbound and outbound email addresses are different. The emails that I receive originate from notifications@pipedream.com with a Reply-To set to noreply@pipedream.com. In order to send an SMS in response, I need to replace that noreply@pipedream.com with the inbound email address which initiates the workflow to send an SMS using Twilio. Although I have now created a contact to keep that address on hand, the reply requires two extra step which feel cumbersome:

  1. I need to confirm that I want to reply to an email which does not expect an answer
    (a dialog created by Thunderbird when it detects that the recipient is a noreply address)
  2. I need to replace the recipient with the contact that I have created for the inbound email address.
eric-brechemier commented 2 years ago

I found a related issue on the GitHub issue tracker of pipedream:

I started to work on a PR and I received relevant feedback promptly with assurances that the issue would be solved when work currently in progress would be released, with enhancements to the task to send emails:

We're in the middle of some work to improve it, which covers sending email to any address (within some basic limits), setting a custom Reply-To, etc. We'll update that issue when we make this available. — https://github.com/PipedreamHQ/pipedream/pull/2488#issuecomment-1079480423

eric-brechemier commented 2 years ago

Pipedream does the job and fulfills all three of my evaluation criteria:

eric-brechemier commented 2 years ago

I will describe the configuration steps of the two workflows using Pipedream in the main issue related to my use case: