Buttondown Documentation
If you're a blogger, podcaster, or other content creator, you probably already know that RSS is a great way to distribute your content. But did you know that RSS can also be a great way to automate your newsletter?
With Buttondown's RSS automation, you can automatically send your subscribers a new email every time you publish a new blog post, podcast episode, or other piece of content. You can even schedule your emails to go out weekly or monthly, if you prefer.
This is a great solution for creators who already have their content published on the web (either through a CMS like Wordpress, a static site generator such as Jekyll or Gatsby, or a JAMStack site), but don't want to spend time manually creating and sending a newsletter every time they publish something new.
You can create an RSS automation in Settings > Basic > RSS-to-email.
At the moment, you can choose from three different 'cadences' for your RSS automation:
(Note that for the weekly and monthly cadences, Buttondown's automation will only trigger if there's a new item in your RSS feed.)
You can choose from two different behaviors for your RSS automation that trigger according to the above cadence:
The difference between these two behaviors is that the first will send the email immediately, while the second will create a draft email that you can edit before sending.
Things happen; you might have to backfill a number of blog posts and you want to exclude them from your automation or you might want to pause your newsletter for a few weeks while you're tweaking the feed. Buttondown supports two ways to manage your RSS automation:
(Of course, you can always just delete the automation and create a new one!)
RSS is a fairly open-ended spec, and there are a number of implementations that are all correct in different ways. Below is a list of the important fields that Buttondown tries to extract and how it extracts them, in order:
title
: Buttondown looks for the title
field in the RSS item. If it's not found, it looks for the dc:title
field. If that's not found, it looks for the description
field.content
: Buttondown looks for the content:encoded
field in the RSS item. If it's not found, it looks for the summary_detail
field.url
: Buttondown looks for the link
field in the RSS item.publish_date
: Buttondown looks for the published
field in the RSS item. If it's not found, it looks for the updated
field.description
: Buttondown looks for the subtitle
field in the RSS item. If it's not found, it looks for the summary
field.Here's a simple example of the minimum possible RSS entry that Buttondown needs in RSS 2.0:
Here's a similar example, except in Atom 1.0:
To populate your email with content relevant to the item in your RSS feed, you'll need to build a template. Buttondown uses Django's template language to render your email. This means that you can use all of the standard Django template tags and filters.
For instance, if you want to send a weekly digest of blog posts, you'd start by iterating over the list of items:
Or if you chose a cadence of "every time" for your RSS feed, you'd just send information on the latest item:
Buttondown now has a friendly reminder to add alt text to your images before sending your email.
Adding alt text (alternative text) to your images is a great way to make sure your emails are accessible to everyone, including people who use screen readers. It's also a great way to make sure your emails are SEO-friendly!
We're the first to admit that there's a lot of esoteric features and functionality when it comes to RSS. Here's a (assuredly incomplete) list of things that Buttondown either does or doesn't support:
xml:base
attribute, which allows you to specify a base URL for relative links in your RSS feed.If Buttondown has trouble reaching your RSS feed (and you don't), the likely culprit is a firewall or proxy that's blocking access to the feed. In particular, Cloudflare's bot blocker is known to mistakenly block access to Buttondown's feed parser.
To fix this, add a custom WAF rule to your Cloudflare account to allow requests from the IP address 54.221.205.107
.
It's also possible that you might have a robots.txt
file that's blocking access to your feed. Buttondown uses the User-Agent: Buttondown RSS-Feed-Parser/1.0 (https://buttondown.com)
user agent to access your feed, so you can add a Allow:
line to your robots.txt
file to allow Buttondown's feed parser to access your feed.