Skip to content
ChangelogBook a demoSign up

Personalize a message

AudienceMarketers, lifecycle and CRM teams
PrerequisitesAn email message with content

Personalization inserts each recipient's own data into the email. Write variables directly into your content, or use logic to build conditional statements and calculations. Hightouch fills them from your warehouse at send time.

Insert a variable

Where the control lives depends on the editor.

EditorHow to insert
Email, HTMLSelect Add variable
Email, drag-and-dropUse the merge tag control on the text block you're editing
SMSSelect Insert variable in the Message or Link field
  1. Search for the attribute you want and select it.
  2. Select Insert variable.

The variable is written as Liquid, using the attribute name: {{ first_name }}. Variables appear in your content as pills you can click to edit, swap, or remove.

Attributes are grouped by where they come from:

GroupWhat it holds
PropertiesColumns on the profile, such as first name or loyalty tier
Entry eventProperties of the event that triggered a journey
RelationsData from related models, such as recent orders
TraitsComputed traits, such as lifetime order count
Message contextDetails of the send itself, such as the subscription topic name
DatesDate values you can format or offset

Set a fallback value

An attribute with no value renders as nothing, which leaves a gap in your content. Give every variable a fallback so the sentence still reads.

  1. Select the attribute, then select Add transformation.
  2. Choose Default and enter the value to use when the attribute is empty.
  3. Select Insert variable.

The result is {{ first_name | default: "there" }}, which renders "Hello there" for a recipient with no first name.

In the SMS editor you can also select a variable in the preview and set its Fallback value there. A fallback changes the character count. A short name in the preview and a long fallback in real sends can push a message into a second part.

Use the same fallback everywhere a given attribute appears. Two different fallbacks for one attribute is an error that blocks the send.

Transform a value

Transformations reshape a value before it renders: format a date, round a number, change case, or truncate text. Select Add transformation after choosing an attribute, then check the result in the transformation preview before inserting.

Transformations are grouped as Text, Numbers, Arrays, and Dates.

Write Liquid directly

Native Delivery renders content with Liquid. Write it by hand in the HTML editor for logic the picker doesn't cover, including conditionals and loops:

{% if loyalty_tier == "gold" %}
  <p>You have {{ points }} points to spend.</p>
{% else %}
  <p>Join our loyalty program.</p>
{% endif %}

Conditionals and loops must be hand-written today. The picker covers attribute insertion, fallbacks, and transformations.

What happens when data is missing

Two cases behave differently:

CaseResult
The attribute exists but is empty for this recipientThe message sends. The variable renders as nothing.
The attribute name doesn't match a columnThe send fails for the whole batch of recipients.

A name that matches no column fails the send for a whole batch of recipients, not just the one it affects. An empty value is fine and renders blank. A misspelling counts as a misconfiguration, not missing data. Check the composer for variable errors before you activate a campaign.

The composer flags unmatched attribute names while you edit. An empty value for the profile you happen to be previewing is not flagged, because a blank cell on one profile is normal.

At send time, an unrecognized filter or variable renders as nothing, so a recipient never sees a raw {{ placeholder }}. The composer is where to catch these.

Next steps

  • Preview and test
  • Send a campaign

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Privacy PolicyTerms of Service