RSS to Email

by Roman Zolotarev

Sending emails requires too much clicking and typing. Yes, it takes just few minutes every week, but inefficiency makes me feel miserable, and this feeling lasts longer. After all, I love writing, I just do not like dull clicking. Humans hate boring mechanical work, and robots adore it. Right? At least I think so. Let’s automate this anyway!

As you know, Jekyll powers my website. To publish a new page, I just create a file and push to GitHub directly from my text editor. I love the simplicity of this workflow, and I wanted the same for my newsletter updates. Fortunately, you can create RSS-to-email campaigns.

Another pain is default email templates. They are too bloated, too generic. All look alike. Maybe it is just me, but I rarely appreciate those colorful postcards with fancy fonts. I prefer plain text and words.

Recipe

  1. Fork Jekyll Newsletter website boilerplate.
  2. Publish your new Jekyll site with your first update.
  3. Validate the new RSS feed. RSS should contain just one item with that newsletter update.
  4. Sign up for Campaign Monitor, if you do not have an account yet. Price starts at nine US dollars per month, and it depends on how many subscribers are in your list.
  5. Go to Lists & Subscribers, then click Create a new list button.)
  6. Give it the name and click Create list, e.g. Newsletter
  7. If you have subscribers already, click Add subscribers and paste in your existing list.
  8. Go to Automation, then click on Setup an RSS campaign link in the sidebar.
  9. Type in your RSS feed URL, and click Look up button.
  10. Campaign Monitor will fetch your RSS feed and show the items. There should be just one. Click Use this feed button.
  11. Select desirable schedule in When to send the emails section and click Next button.
  12. On Choose the design page, select Import your own.
  13. Type in a name of the template, e.g. Minimalist, then in Import from my computer section click on Choose file under HTML page.
  14. Use my template as an example (change src in <datarepeater> and content of <rssitemlink>).
  15. Click on Add template button. Campaign Monitor will check your HTML and import it.
  16. On Who will receive this workflow? page select your list and click on Next button.
  17. Review your campaign on RSS snapshot page, and click on Test and wrap up button.
  18. On Test your workflow page type in your email address and click Send the test email. Check your mailbox and if everything looks right, click on Skip the test button (yes, it’s a confusing button label).
  19. On Start your workflow page type in your email address and click Start the schedule.

Done!

If you need to change something. Go to Automation page, select your campaign from the list, then click on Edit this workflow link in the sidebar.

Template

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
  <style>body { max-width: 400px; width: 90%; font-family: Arial, sans-serif; }</style>
  <!--[if mso]><table><tr><td width="400"><![endif]-->
  <p>Hi [firstname,fallback=]
  <datarepeater type="rss" src="https://www.romanzolotarev.com/newsletter.xml">
    <rssbody paragraphs="all" />
    <p><rssitemlink>View on romanzolotarev.com</rssitemlink>
  </datarepeater>
  <p style="margin-top: 4em; color: #777777;">
    Sent to [email]<br>
    <unsubscribe style="color: #777777;">Unsubscribe</unsubscribe>

Note: I intentionally omitted certain HTML tags, because I can. There is a hack with <table> for Outlook. Please email me, if something does not work for you, or if you know a nicer solution.

Instead of conclusion

I spent a lot of time to automate this. I could create a hundred campaigns for sure. For me, it is probably not worth the time. But would I do it again? Hell yeah! I can’t help but make robots work. Automate everything! And hopefully, this recipe may save few hours for you and other humans.

As a side effect, I have got a newsletter archive hosted on my site and accessible even for those who subscribed not on the first day. Neat.

Subscribe to my newsletter, if you want to know how RSS-to-email works in the long term.



A random illustration