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<), 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 /emailsare not templated; build the string in your code.