idrequired
path · string The newsletter's ID or slug | The newsletter's ID or slug |
name
body · string The newsletter's name, shown in emails and on the archive | The newsletter's name, shown in emails and on the archive |
slug
body · string Lowercase letters, digits and dashes, not a name Postroom keeps like www, api or mail. The website's address on the archive domain follows it. | Lowercase letters, digits and dashes, not a name Postroom keeps like www, api or mail. The website's address on the archive domain follows it. |
imageUrl
body · string Square logo, 128×128 or larger: an https:// link | Square logo, 128×128 or larger: an https:// link |
fromName
body · string Name in the From field | Name in the From field |
fromEmail
body · string An address on a domain added to this account (list_domains). It sends once the domain is verified. | An address on a domain added to this account (list_domains). It sends once the domain is verified. |
postalAddress
body · string Printed in the footer of every email. Without one, sending waits for it. | Printed in the footer of every email. Without one, sending waits for it. |
archiveEnabled
body · boolean A public page for each sent issue, with a signup form. On for new newsletters: the website goes live after the first issue. | A public page for each sent issue, with a signup form. On for new newsletters: the website goes live after the first issue. |
description
body · string One sentence under the name on the archive, 200 characters at most | One sentence under the name on the archive, 200 characters at most |
author
body · object The archive's author page; the author's name is fromName | The archive's author page; the author's name is fromName |
author.bio
body · string Under the author's name on the archive, 160 characters at most | Under the author's name on the archive, 160 characters at most |
author.imageUrl
body · string Author photo: an https:// link. The newsletter image otherwise. | Author photo: an https:// link. The newsletter image otherwise. |
socialLinks
body · string[] https:// links shown on the archive, 8 at most | https:// links shown on the archive, 8 at most |
analytics
body · object Analytics tools on the newsletter's website: each loads on every page of it, never in emails, and hears of each signup there (sign_up for Google Analytics and in Tag Manager's data layer, CompleteRegistration for the Meta pixel). Pasted code keeps only its ID. | Analytics tools on the newsletter's website: each loads on every page of it, never in emails, and hears of each signup there (sign_up for Google Analytics and in Tag Manager's data layer, CompleteRegistration for the Meta pixel). Pasted code keeps only its ID. |
analytics.googleAnalytics
body · string Google Analytics 4's measurement ID, like G-XXXXXXXXXX, or the code Google gives to paste. Empty removes it. | Google Analytics 4's measurement ID, like G-XXXXXXXXXX, or the code Google gives to paste. Empty removes it. |
analytics.googleTagManager
body · string Google Tag Manager's container ID, like GTM-XXXXXXX, or its code. On the archive domain, only Google's own tags in the container run; on the newsletter's own domain (set_website_domain), all of them. | Google Tag Manager's container ID, like GTM-XXXXXXX, or its code. On the archive domain, only Google's own tags in the container run; on the newsletter's own domain (set_website_domain), all of them. |
analytics.metaPixel
body · string The Meta pixel's ID, the digits under its name in Meta Events Manager, or its code. | The Meta pixel's ID, the digits under its name in Meta Events Manager, or its code. |
customCode
body · string HTML for the head of every page of the newsletter's website, like another tool's code: <script>, <style>, <link> and <noscript> tags, with https:// addresses. It runs on the newsletter's own domain only (set_website_domain), never on its address on the archive domain, which other newsletters share. Code that wouldn't work is refused with the line to fix: a tag that isn't closed, text outside a tag, a JavaScript error, a meta tag, an event handler attribute, or Google Analytics, Tag Manager or Meta pixel code, which goes in analytics. Empty removes it. | HTML for the head of every page of the newsletter's website, like another tool's code: <script>, <style>, <link> and <noscript> tags, with https:// addresses. It runs on the newsletter's own domain only (set_website_domain), never on its address on the archive domain, which other newsletters share. Code that wouldn't work is refused with the line to fix: a tag that isn't closed, text outside a tag, a JavaScript error, a meta tag, an event handler attribute, or Google Analytics, Tag Manager or Meta pixel code, which goes in analytics. Empty removes it. |
requireConfirmation
body · boolean Confirmed opt-in: new signups get an email with a button and only join once they click it. On for new newsletters. New subscribers get the confirmation email or the welcome email: turning it on while the welcome email is on needs welcome.enabled false in the same request. | Confirmed opt-in: new signups get an email with a button and only join once they click it. On for new newsletters. New subscribers get the confirmation email or the welcome email: turning it on while the welcome email is on needs welcome.enabled false in the same request. |
cleanup
body · object List cleanup at each send: contacts who ignored several issues get a last-chance email instead (lastChance), and become dormant if they don't answer | List cleanup at each send: contacts who ignored several issues get a last-chance email instead (lastChance), and become dormant if they don't answer |
cleanup.enabled
body · boolean On for new newsletters | On for new newsletters |
cleanup.issues
body · number | null Ignored issues in a row before the last-chance email, 2 to 100. Default 6. | Ignored issues in a row before the last-chance email, 2 to 100. Default 6. |
cleanup.days
body · number | null Days without an open, click or signup, 30 to 3650. Default 180. | Days without an open, click or signup, 30 to 3650. Default 180. |
welcome
body · object Email sent to each new subscriber, while signups don't need confirming: turning it on while requireConfirmation is on needs requireConfirmation false in the same request. | Email sent to each new subscriber, while signups don't need confirming: turning it on while requireConfirmation is on needs requireConfirmation false in the same request. |
welcome.enabled
body · boolean | |
welcome.subject
body · string | |
welcome.previewText
body · string | |
welcome.format
body · "rich" | "markdown" With content: rich or markdown, the default | With content: rich or markdown, the default |
welcome.content
body · string The email's body. Merge tags work as in campaigns. rich is an HTML fragment as the dashboard's editor writes it, as update_campaign's format describes, sections aside; markdown is Markdown. | The email's body. Merge tags work as in campaigns. rich is an HTML fragment as the dashboard's editor writes it, as update_campaign's format describes, sections aside; markdown is Markdown. |
welcome.markdown
body · string Markdown: the same as content with format markdown | Markdown: the same as content with format markdown |
confirmation
body · object The confirmation email for confirmed opt-in. Sent back unchanged, the built-in one stays built-in and follows the name and description. | The confirmation email for confirmed opt-in. Sent back unchanged, the built-in one stays built-in and follows the name and description. |
confirmation.subject
body · string | |
confirmation.previewText
body · string | |
confirmation.format
body · "rich" | "markdown" With content: rich or markdown, the default | With content: rich or markdown, the default |
confirmation.content
body · string The email's body. It keeps its button, a link to {{confirm_url}}: <div data-button=""><a href="{{confirm_url}}">Its text</a></div>, or the same <a> in Markdown. Merge tags work as in campaigns. rich is an HTML fragment as the dashboard's editor writes it, as update_campaign's format describes, sections aside; markdown is Markdown. | The email's body. It keeps its button, a link to {{confirm_url}}: <div data-button=""><a href="{{confirm_url}}">Its text</a></div>, or the same <a> in Markdown. Merge tags work as in campaigns. rich is an HTML fragment as the dashboard's editor writes it, as update_campaign's format describes, sections aside; markdown is Markdown. |
confirmation.markdown
body · string Markdown: the same as content with format markdown | Markdown: the same as content with format markdown |
lastChance
body · object The list cleanup's last-chance email, which contacts who stopped opening get instead of an issue: a click on its button keeps them. Write your own to say it in your words or your readers' language. Sent back unchanged, the built-in one stays built-in and follows the name. | The list cleanup's last-chance email, which contacts who stopped opening get instead of an issue: a click on its button keeps them. Write your own to say it in your words or your readers' language. Sent back unchanged, the built-in one stays built-in and follows the name. |
lastChance.subject
body · string | |
lastChance.previewText
body · string | |
lastChance.format
body · "rich" | "markdown" With content: rich or markdown, the default | With content: rich or markdown, the default |
lastChance.content
body · string The email's body. It keeps its button, a link to {{keep_url}}: <div data-button=""><a href="{{keep_url}}">Its text</a></div>, or the same <a> in Markdown. Merge tags work as in campaigns. rich is an HTML fragment as the dashboard's editor writes it, as update_campaign's format describes, sections aside; markdown is Markdown. | The email's body. It keeps its button, a link to {{keep_url}}: <div data-button=""><a href="{{keep_url}}">Its text</a></div>, or the same <a> in Markdown. Merge tags work as in campaigns. rich is an HTML fragment as the dashboard's editor writes it, as update_campaign's format describes, sections aside; markdown is Markdown. |
lastChance.markdown
body · string Markdown: the same as content with format markdown | Markdown: the same as content with format markdown |
signupForm
body · object The signup form for the newsletter's own site. get_signup_form gives the code to paste. | The signup form for the newsletter's own site. get_signup_form gives the code to paste. |
signupForm.enabled
body · boolean Off for new newsletters | Off for new newsletters |
signupForm.layout
body · "inline" | "card" inline, the fields and button alone; card, in a box under a headline and a line of text | inline, the fields and button alone; card, in a box under a headline and a line of text |
signupForm.headline
body · string | null The card's headline. null: the newsletter's name, as it changes. Empty: no headline. | The card's headline. null: the newsletter's name, as it changes. Empty: no headline. |
signupForm.subheadline
body · string | null The line under the card's headline. null: the newsletter's description, as it changes. Empty: no line. | The line under the card's headline. null: the newsletter's description, as it changes. Empty: no line. |
signupForm.askFirstName
body · boolean Asks for a first name above the email, optional for readers. Off by default. | Asks for a first name above the email, optional for readers. Off by default. |
signupForm.buttonText
body · string Default: Subscribe | Default: Subscribe |
signupForm.placeholder
body · string Default: you@example.com | Default: you@example.com |
signupForm.allowedDomains
body · string[] Sites where browsers show the form, like example.com, which covers its subdomains. Empty: any site. With sites listed, only the script form takes signups: the plain HTML form can't prove which site it's on. | Sites where browsers show the form, like example.com, which covers its subdomains. Empty: any site. With sites listed, only the script form takes signups: the plain HTML form can't prove which site it's on. |
theme
body · object Its look on its website and in its emails: a preset from list_themes and what's changed on top of it. Send only what changes; null takes a choice back to the preset's. | Its look on its website and in its emails: a preset from list_themes and what's changed on top of it. Send only what changes; null takes a choice back to the preset's. |
theme.preset
body · "postroom" | "broadsheet" | "garden" | "midnight" | "poster" | "swiss" | "typewriter" | "sunset" A preset from list_themes. Another preset starts over from it: the changes made to the one before go, unless this call sends new ones. | A preset from list_themes. Another preset starts over from it: the changes made to the one before go, unless this call sends new ones. |
theme.lightColors
body · object | null Its colors in light mode, which its website shows readers whose device is in light mode or who picked Light, and its emails are written in. Hex colors. null takes one back to the preset's; the other shades derive from these three. | Its colors in light mode, which its website shows readers whose device is in light mode or who picked Light, and its emails are written in. Hex colors. null takes one back to the preset's; the other shades derive from these three. |
theme.darkColors
body · object | null Its colors in dark mode, for readers in dark mode: on its website, and in its emails in mail apps that follow it, like Apple Mail and Outlook. An accent changed in one mode only follows into the other, lighter or darker where its page needs it. Hex colors. null takes one back to the preset's; the other shades derive from these three. | Its colors in dark mode, for readers in dark mode: on its website, and in its emails in mail apps that follow it, like Apple Mail and Outlook. An accent changed in one mode only follows into the other, lighter or darker where its page needs it. Hex colors. null takes one back to the preset's; the other shades derive from these three. |
theme.fonts
body · object | null Fonts from list_themes. Mail clients without web fonts, like Gmail, show a close system font. | Fonts from list_themes. Mail clients without web fonts, like Gmail, show a close system font. |
theme.headingWeight
body · integer | null Fonts with fewer weights use their closest | Fonts with fewer weights use their closest |
theme.radius
body · string | null Corners of buttons, cards and pictures | Corners of buttons, cards and pictures |
theme.shadow
body · string | null Cards and forms on the website. Emails have none. | Cards and forms on the website. Emails have none. |
theme.spacing
body · string | null Line height and space between paragraphs | Line height and space between paragraphs |
theme.emailAlign
body · string | null Emails only: where they sit on a screen wider than them, like a computer's. center, or left like a personal email. Phones show them full width either way. | Emails only: where they sit on a screen wider than them, like a computer's. center, or left like a personal email. Phones show them full width either way. |