Inspiration :

Monday.com is great and supports a lot of use cases, however there are a few required capabilities lacking to comprehensively fulfill some use cases. Especially with the lack of ability to send HTML formatted emails. While monday's text based email notifications are great for internal members of the company, they do not look as good to send out to customers & clients.

There are a lot of users asking for HTML email capability in so many community posts, mentioning a few of them here - https://community.monday.com/t/html-with-email/465/13
https://community.monday.com/t/is-it-possible-to-use-the-email-column-as-the-email-address-for-sending-out-notifications/3377
https://community.monday.com/t/creating-custom-email-template-to-send-when-status-changes/4855

Shout out to carolinefox with this comment which inspired me the most to take a stab at solving this problem https://community.monday.com/t/html-with-email/465/13
(@carolinefox you are awesome !!)

What it does :

This app is a combination of an email template builder view and an email sending integration with the following features :

  1. OAuth
  2. Email Builder (View)
  3. Custom Email Templates
  4. Email Sending (Integration)
  5. Merge Tags
  6. Creates Updates in monday.com for email sends
  7. Custom domain email addresses (Only after DKIM verification)
    Even though the Email builder is a view which should be added to each board, it's not tied to any particular board. Email templates created on any board can be used in the integration to send emails.

Steps to follow :

  1. OAuth
  2. Add a new view from the app.
  3. Build an email template.
  4. Save the template by giving it a name.
  5. Add a recipe and choose the email template from previous step.
  6. Enable the integration

How I built it

I used GrapesJS to build the frontend and many AWS services to build the back-end.
Specifically API Gateway, Lambda, DynamoDB, S3, SES, SQS & SNS

Challenges I ran into :

It felt like a simple project initially but as I started working through it, I realized there is still tons of work to be completed. I am happy with it's current state in a few weeks time. This might be why monday's team is taking this long to implement native HTML email support despite many users asking for it for over a year. Each and every feature should be thoroughly thought of how users would use it.

In terms of technical challenges, I felt the documentation is very limited, I had to explore a lot to figure out how things work. I know that monday's team is continuously improving it but it still takes them a while to get it solidified. There are a lot of helpful posts in the community forums that helped me navigate through blockers. Shout out to @basdebruin!! Thank you for helping the community.

Some features are inconsistent and took me some time to figure out. For example, the JWTs are encoded with different variable names in different scenarios. For example (accountId vs account_id), (userId vs user_id) when a JWT is decoded.

I badly needed dynamic drop down values on "View Settings" page to display the email templates created but that feature is still in works as per the community post. Similar feature works for an integration but not for a view. It would open up many other possibilities for my project.

Accomplishments that I'm proud of :

A working email template builder which satisfis some use cases.

What I learned :

I have learned a ton while building this app. Especially I was able to put my GraphQL leanings to the test.

What's next for HTML Email :

  1. I can easily re-purpose this editor to work on HTML instead of MJML. That will give the ability to import emails from other CRMs like HubSpot, MailChimp and make them working inside monday.com so that users will find it easier to switch to monday.com for sending emails.
  2. Have user & board merge tags work with this editor.

Known Issues :

  1. Unlike regular UI buttons the buttons on "View Settings" screen do not reset back to their default values. I guess for any other view/widget, that's needed to but in this case, it's difficult to store the previous state to see if the button was actually clicked again. This could be solved by moving those settings within the template builder.
  2. Only {{pulse.xxx}} merge tags work for now. user & board merge tags are not implemented.
  3. The default email templates given in the app are for inspiration only. It is always better to implement email templates from scratch.

Merge Tags Format :

I used Mustache.js as templating engine. Unlike monday's native merge tags which look like {pulse.name}, mustache uses double curly braces {{pulse.name}}. Apart from this difference, everything else is the same. We can use all the default monday merge tags with these emails.

DKIM verification :

I'm using AWS SES to send out emails. You may see the from email address for all the emails is the same since I verified it with AWS. However, SES is very flexible to do email verification through an API or verify an entire domain by adding the DKIM settings to the domain. Once the DKIM is verified, any email address with that domain can be used as a from email address.

Need inspiration for more email templates ?

MJML is an opensource library. Mailjet is adding more email templates to it's collection. You can find them here - https://mjml.io/templates The MJML from those templates can be copied directly into the email builder and make them your own.

Built With

Share this project:

Updates