Skip to content

Message variables insert a different contact value into each outgoing portal campaign message.

The portal substitutes variables in simple and advanced campaigns, A/B variants, duplicate laps, journey Send SMS nodes, and autoresponders. Values are applied per contact at send time and in database-backed previews.

Variable Value
{first_name} First name
{last_name} Last name
{phone} Phone number
{email} Email address
{custom_1} … {custom_10} Ten custom contact fields
{custom1} … {custom10} Legacy spellings of the custom fields
{opt_out_link} Recipient-specific opt-out link

Name custom fields in the People database variables block, during CSV import, or in People settings. Names can contain at most 64 characters. They are account-wide: team members see the same names in every workspace.

After naming a field Deposit amount, type the friendly name as a variable, for example {deposit amount}.

Matching is case-insensitive. Surrounding spaces, inner spaces, and underscores are ignored, so {deposit amount}, {Deposit_Amount}, and {depositamount} all match a field named Deposit amount.

Standard variable names take priority over custom names. If two custom names collide after matching is normalized, the lower custom number wins. A rename applies to the next send and preview.

An unmatched token such as {source} or {clickid} is sent unchanged, which allows tracker placeholders to keep working. Editors warn about unmatched tokens and offer Map and Name actions, but the warning never blocks launch. Spintax such as {hello|hi} is a separate feature and is not treated as a contact variable.

When “skip empty” is enabled, contacts without a value for a variable used by the message are skipped. Estimates use each recipient’s expanded text, while the content budget reserves the worst-case width for every known variable. See encoding & segments for GSM-7, Unicode, and segment limits.