Preheader text, custom-field personalisation, and campaign data #46

Closed
opened 2026-10-15 01:19:35 -04:00 by vmanne-poc · 0 comments
Owner

Today:

  • Campaign.previewText is stored but never used.
  • Placeholders are limited to email, first name, last name, and the unsubscribe URL.
  • Custom contact fields can't be used in emails.

Plan

  • Preheader: use previewText (at most 150 characters, with a 50-character guide in the UI) as the hidden preheader at the top of the HTML, and show it in the editor.
  • Personalisation:
    • {{ contact.data.<key> }}
    • {{ campaign.data.<key> }}
    • fallbacks, for example {{ contact.first_name | default: "there" }}
    • every value is HTML-escaped in HTML bodies
    • unknown placeholders show as empty text and produce a warning in the preview
  • Campaign data: a JSON object on the campaign (validated, size-limited) for values shared across a send, such as an issue number or event date. This needs a migration.
  • Keep the template language a small, safe subset that can't run code. Document it in the user guide.
**Today:** - `Campaign.previewText` is stored but never used. - Placeholders are limited to email, first name, last name, and the unsubscribe URL. - Custom contact fields can't be used in emails. **Plan** - **Preheader:** use `previewText` (at most 150 characters, with a 50-character guide in the UI) as the hidden preheader at the top of the HTML, and show it in the editor. - **Personalisation:** - `{{ contact.data.<key> }}` - `{{ campaign.data.<key> }}` - fallbacks, for example `{{ contact.first_name | default: "there" }}` - every value is HTML-escaped in HTML bodies - unknown placeholders show as empty text and produce a warning in the preview - **Campaign data:** a JSON object on the campaign (validated, size-limited) for values shared across a send, such as an issue number or event date. This needs a migration. - Keep the template language a small, safe subset that can't run code. Document it in the user guide.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
vmanne-poc/Postak#46
No description provided.