Skip to content

Personalization

Broadcasts render each message per contact. Use triple braces in subject, html and text.

Placeholder Replaced with
{{{FIRST_NAME}}} The contact’s first name, or empty text if there is none.
{{{FIRST_NAME|fallback}}} The first name, or fallback when it is empty.
{{{LAST_NAME}}} The contact’s last name, or empty text.
{{{EMAIL}}} The contact’s email address.
{{{SPACEPOST_UNSUBSCRIBE_URL}}} A signed, per-contact unsubscribe link.
{{{RESEND_UNSUBSCRIBE_URL}}} Alias of the above, so templates migrated from Resend keep working.
<p>Hi {{{FIRST_NAME|there}}},</p>
<p>We sent this to {{{EMAIL}}}.</p>
<p><a href="{{{SPACEPOST_UNSUBSCRIBE_URL}}}">Unsubscribe</a></p>

Subject example: Welcome back, {{{FIRST_NAME|friend}}}.

  • Whitespace inside the braces is ignored: {{{ FIRST_NAME | there }}} works.
  • The fallback is trimmed and may contain spaces, but not }.
  • Names are case-sensitive and uppercase.
  • Values inserted into HTML are escaped (< becomes &lt;), so a contact named <script> cannot inject markup. In text bodies and subjects values are inserted as-is.
  • Unknown placeholders are left untouched, so typos are visible in your test send.
  • Placeholders only work in broadcasts. Transactional emails sent with POST /emails are not templated; build the string in your code.