Most of our new customers come to us via word of mouth. But like almost all companies in 2021, we do sometimes send marketing emails. Google Workspaces is a great fit for us when it comes to workplace technology. But it wasn’t a good solution for us when it came to sending marketing communications – the sending quotas meant that it would sometimes take us a full week to complete a single campaign. So we started to look around for an alternative solution.

We did explore whether we could use our CRM system for the job, or use a dedicated mailer like MailChimp. But both were too inflexible for our needs – or at least without moving to a premium pricing tier.

Our SaaS platform uses Amazon Web Services. So we decided to look at whether we could use AWS not just to deliver our product, but also in running some of our cooperate services. Enter AWS Simple Email Service.

We already used SES for operational purposes – alerts, operational reporting, etc. But that accounts for perhaps a few dozen emails a day, so we hadn’t even bothered to check what is included in the AWS Free Usage Tier. And it’s quite impressive: 62,000 emails a month, at rate of 14 emails per second! That is far more than we’re likely to need any time soon.

But that wasn’t the clincher. SES includes lots of features. But the one that caught our eye was the suppression list. We have manual processes for recording “hard bounces” in our CRM. But it is onerous. The SES suppression list can be configured to automatically add “hard bounces”, so you don’t damage you email reputation by repeatedly sending emails to defunct email addresses. Now we can be sure that we won’t send emails to previously bounced addresses even if our admin team haven’t got round to updating our CRM.

And – of course – like everything else in AWS, SES can be accessed programmatically. Which got us thinking. Could we use a Lambda endpoint to handle our “unsubscribe” process? We sell an information management compliance solution, so we take our responsibilities to handle customer (and potential customer) data in a way that complies with applicable regulations. Besides, sending emails to people that don’t want to receive them is just bad business.


Forty-five lines of code (and quite a lot of swearing) later we had a utility up and running. Now – when we mail customers – we include a personalised “unsubscribe” link. If a user clicks on it, their email address is added to the SES suppression list. For now, we still have a manual process to update our CRM when a customer unsubscribes. But at least we can be confident we’re not sending people emails they don’t want.

Next steps: Integrate the Lambda function with our CRM.