Communicating about an offer or a contest is a great way to increase engagement on your platform. Email is a very common and effective medium for such communications.But here I am not going to talk about why sending marketing emails is good. In this article, I am going to talk about how we addressed a pain point – Sending mass email effortlessly.
If you are a visual learner, you can also watch this Youtube video showing how you can interact with the SendGrid API here.
The problem statement
Some time ago, I and my team received a requirement to send emails to a big user base for one of our clients. We wrote some custom code to send out mass emails.
Obviously, the entire process was not very smooth. It was taking time to send emails, we had to spin up multiple Laravel instances on a server to increase the number of processes to send emails.
After the task was finally complete, we asked ourselves a question — how can we improve ourselves. Yes, we all made the mistake of not asking the question to ourselves – is there a better way to do this? Sending mass emails is not a new thing. We are trying to create a solution for something which people have been doing since ages in an elegant way.
We decided to identify a proper solution. And, it didn’t take much time for us to understand what was required.
There are a lot of tools available which will allow us to send emails to a list of users without much effort. And, these services provide other niceties like unsubscribe links, analytics, to mention a few. And why not, this service is what they do day in day out.
It took more than 7 to 8 hours to process the entire list. If you do the per hour cost, you will see it’s quite expensive compared to sending it through a paid solution.
We decided to use Sendgrid as the platform of choice to send those mass emails. Based on the features available with Sendgrid, our flow was quite simple – create a contact list. We already had the user list who had subscribed for the service. All we had to do was add the user’s email address when he/she is subscribing to the service. And, remove it when the user unsubscribed.
For initial seeding, we took a csv dump from the database and imported the entire subscribed users. I must say, the ‘import contact user’ interface is so easy that you can’t go wrong with it.
Once we had the HTML for the mailer ready, we just created something called “Single send” on Sendgrid, selecting the contact list whom we want to send the email to. We can even schedule the sending time and we are done.
No more looking at the logs, no more spinning up multiple instances to speed up. The entire workload is managed by someone from Sendgrid. And, you would expect them to do the best job at it because it’s their core service.
Why did we choose Sendgrid?
We considered both paid and free solutions for the requirements. We have used Amazon’s Send Email Service in the past and are quite familiar. However, it just allows you to send emails. Stuff like contact list management, template, etc. is something which you will not be able to get with SES. And, these are very important. Products like Sendy were considered as well. You can use different email APIs as adapters to send email. And, Sendy itself will give you a lot of important reports. The cost per email was quite attractive. However, when you consider that you will have to host it yourself and manage that server, we felt for the current list of subscribers and the number of emails that we will send – it’s better to go with SendGrid.
And in terms of reports, SendGrid has important information available as reports which allows us to also measure the performance of the Mailer that was sent. For example, we had send 3 emails and based on the KPIs we were able to improve our open and click rates.
And, each mail would give us some more information which then allowed us to change certain things and see if the thing is working for the client or not.
Yes, I know it’s not rocket science. What we have done is something which people are already doing. But, what I and my team have learnt is that providing a solution doesn’t always mean you build it. There are solutions available (some paid and some free). Using them saves a lot of time and effort and in the end, becomes much more cost effective.