In the process of researching another personal project, I came across Google Workspaces as a means to have a professional email address at a designated domain. Not that anything is particularly unprofessional about Gmail, but seeing vs would bring more confidence from recipients. After researching this area, I thought to myself “why don’t I have a cool email address for my own domain!”. Turns out this is far easier than I thought it would be!

Quick note; this post is not sponsored at all by ImprovMX, I just think the service is quite awesome 😄

Custom Email Address

So after some quick Google searching, a lot of results were mainly how to add email forwarding for your domain when using WordPress, BlueHost, or some other kind of non-serverless website. However, I came across the following: Google Domains. Google Domains looks super promising as it seems easy to set up an email address for a domain you own, whether purchased through Google or not (I didn’t even know Google sold domains).

After deciding that I didn’t want to spend $7 a month purely for a vanity email address (especially as this website is not a business/profit generator), I then came across this Stack Overflow answer which mentioned using ImprovMX and Amazon SES.


ImprovMX is an incredibly simple email forwarding service and tool that is very quick to set up. Provided you own a domain, you tell ImprovMX the following:

  • your domain
  • what email address you want at that domain
  • where those emails should go (e.g. a Gmail address)

…and ImprovMX forwards inbound emails to that email address. With a very cool Free Plan for a single domain, you can have 25 email aliases with a “Normal delivery speed” (there are faster delivery speeds available with paid plans).

To set this up for all I had to do was create an account with ImprovMX and provide the points from above. ImprovMX then requires you to prove ownership of the domain, so I needed to add the following entries to Route53 which was done via Terraform:

resource "aws_route53_record" "mx_record" {
zone_id = aws_route53_zone.blog_zone.zone_id
name = ""
type = "MX"
records = ["10", "20"]
ttl = 60

resource "aws_route53_record" "spf_record" {
zone_id = aws_route53_zone.blog_zone.zone_id
name = ""
type = "TXT"
records = ["v=spf1 ~all"]
ttl = 60

After this was applied, green checks appeared on the ImprovMX side, so I was good to receive emails at to my Gmail address!

emails received!

This worked without issue with a quick test, however now I needed to set up sending emails from (because it is always to give rather than receive 😉). This is where Amazon SES comes in.

Amazon SES

Amazon Simple Email Service is a serverless, managed email service that has great pricing at ~$0.10 per 1,000 emails sent. Personally, it takes me a long time to get to 1,000 emails!

Setting up Amazon SES for sending emails from your custom email address does have a few steps, but all are very achievable. It should be noted that you will need to be logged into AWS as a user with permissions to create IAM accounts.

  • Go to Amazon SES
  • Go to Verified Identities and Create Identity for your Domain or Email Address
    • I verified my Domain easily as it is already set up with Route 53
  • Go back to the SES Account Dashboard and Request Production access and outline your reasoning to do so (this may take ~24 hours)
  • Go to SMTP settings and hit Create SMTP credentials.
  • Obtain your SMTP credentials and store these in a safe location

At this point, you can use your SMTP credentials to add a second sending address to Gmail like so:

  • Go to Gmail settings
  • Go to the Accounts and Import tab
  • Click “Add another email address”
  • Enter your name and email address (e.g. Paul Marsicovetere and and uncheck the “Treat as an alias” option (this will prevent Gmail from using SES to try and receive email…that’s ImprovMX’s job)
  • Obtain the SMTP endpoint settings from the Amazon SES Account Dashboard and enter this info in
  • Enter in your SMTP credentials created earlier and hit save!

email sends!

The cool thing about SES is that you also get CloudWatch metrics automatically as well:
cloudwatch metrics

Requesting Production access early will mean that you are not bound by the restrictions of the Amazon SES Sandbox and you get a whopping daily sending quota of 50,000 emails per 24 hours with 14 emails per second as the maximum send rate.

Now that this was all proven to work without issues, I could finally update my about page with my shiny new email address!

The email process flows as follows:
email lifecycle process

Caveats / Considerations

There are some caveats and considerations to this setup:

  • Each SES alias and user is tied to a region, so if a region were to ever go offline, email sending will also be unavailable for that time period.
  • Receiving emails is totally dependent on ImprovMX being online and available. If ImprovMX ever goes offline, receiving emails will also be unavailable.
  • The free plan of ImprovMX is quite generous as I experienced no delays in receiving my emails. There is a 10Mb attachment limit, but honestly, large attachments should be sent with links to Google Drive or an equivalent in my opinion.

While this setup of ImprovMX for receiving emails and SES for sending emails works great for my domain, I personally would opt for the Google Workspaces plan for anything business/professional. Sure this is a great way to save ~$7 a month, but there’s no way to tell how long ImprovMX will be a free and available service (although I hope that day is many years from now 😉). If I were running a business, I would want to have more confidence that my clients or customers could contact me at a specific email address, whereas if people cannot reach me at from time to time, that’s ok with me.


  • ImprovMX and SES can be used in conjunction for a low cost, professional email address
  • Request Production access when setting SES for it to properly work
  • ImprovMX is super simple to set up. SES is also super simple to set up!