Email newsletter templates

When sends an email newsletter to your subscribers, it runs your posts through a special template to produce the HTML for the email. You can see the source of the default template here on GitHub.

The template uses a syntax with {{ }} for inserting values into the email, similar to the syntax used in Hugo for publishing your blog. For example, to add the intro text for a newsletter, the HTML would look like this:

{{ .Intro }}

The following variables are available in the newsletter template:

  • .Site.Title: Your blog’s title.
  • .Site.Author.avatar: URL for your profile photo.
  • Your name.
  • .Site.BaseURL: The URL for your blog.
  • .Site.Hostname: Just the hostname for your blog.
  • .Subject: The email subject.
  • .Intro: The optional intro text for the email. This can be set when editing a queued newsletter.
  • .CustomCSS: CSS set from Design → Edit CSS, if the checkbox is checked to use it in email newsletters.
  • .Footer.MailingAddress: The optional mailing list, set in Newsletters → Settings. This is usually included in the footer.
  • .Footer.UnsubscribeURL: URL to unsubscribe. This URL includes the subscriber’s email address for convenience.
  • .Pages: An array of blog posts. Each post has these fields:
    • .Title: The blog post title if not a short microblog post.
    • .Content: HTML for the blog post.
    • .Plain: Text version of the blog post with HTML tags removed.
    • .Summary: Text of the first 500 characters or everything before the <!--more--> comment if present. If using <!--more-->, value will be HTML.
    • .Permalink: URL for the blog post.
    • .Date: Published date for the blog post. You can add a format string like .Date.Format "2006-01-02".
    • .Params: Some additional blog post fields, currently .audio and .video URL arrays.

Plug-ins can provide their own templates by including a file layouts/newsletter.html. Your own custom template (set under Newsletters → Settings) will be used first if you’ve set it. To revert to a plug-in’s template or’s default template, you can clear the text for your custom template in the settings.