This week at DelightChat we have been running some cost cutting exercises.
One of the tools that we pay for is Userlist which we pretty much use primarily for automating a sequence of emails that are sent to new signups.
It turns out that all we really wanted to do was send 2 emails for every new signup - the first one had to be sent 5 minutes after signup and the second one would have to be sent 1 hour after signup.
So we decided to cancel our Userlist subscription and send these emails out directly from our backend using Sendgrid. We already use Sendgrid for a lot of other things so it made sense to just adopt that.
However, this involved a little bit of work in terms of storing the email templates either directly in the codebase or in a database which could be edited in the future if needed. I was hesitant on doing this given our limited developer bandwidth.
This was a pretty simple task but such small menial tasks do add up and consume a developer's bandwidth. So I decided to take a different approach this time and find a way to do this using a no code tool.
We have already been using make.com to automate our sales funnel so I figured I would explore it further to see if it can be used to automate our signup email sequence.
Turns out that it was pretty simple to do so. I just needed my 2 email templates in HTML format and we were good to go.
Here are the steps that I followed to set up this automation:
I used onlinehtmleditor.dev to create my email templates.
Once I finished composing the email, I extracted the HTML source code. You can use any editor that allows rich text as long as you are able to extract the HTML code once you are done.
This tool just happened to be the first search result when I searched for a free online HTML editor.
A scenario in make.com is an automation which is performed when a particular trigger takes place.
In this case the trigger is a webhook which I intend to call from our backend when a new signup takes place.
I followed these simple steps to create the scenario:
Create a custom webhook module and configure it to accept a data structure that contains all the details that you require to send the emails.
In our case we only needed the name and email, so these are the only parameters that we will be sending from our backend.
Create a router module and connect it to the webhook module. This is required because there will be multiple emails to be sent when the webhook is called.
Create multiple sendgrid modules for each email you would like to send in your sequence and connect them to the router. For the purpose of simplicity I will dwell deeper into the first email template only.
The Sendgrid module can be configured to use the email template that was created via the online HTML editor and the “to” email can be set to the email variable that is received in the webhook.
To ensure that this email gets sent 5 minutes after the webhook is called, I used the advanced settings in the Sendgrid module to add a delay to the email sending.
To do this effectively, one can use various functions provided by make.com which will be visible automatically while using the tool.
I then repeated the same process for the second email. All I had to do was clone the above sendgrid module and simply replace the email content and sending delay.
Final step was to add a line of code in our backend to call this particular API endpoint with the name and email of the receiver in the request payload.
This was the only piece of actual code that I had to write which unfortunately could not be avoided.
There are a couple of benefits to following this approach. Firstly, I did not have to write any actual code other than calling the webhook, so I was able to create, test and deploy this system in less than 10 minutes.
The main benefit however is the fact that I can now ask the product manager or the person responsible for email copies in my team to change this flow however they see fit.
Anyone can change the email template, add/remove emails to the sequence without me having to spend any developer bandwidth whatsoever. For this reason alone I believe that taking this approach was the right call.
I am looking forward to using Make for more such tasks in the future.