Security and Compliance


Website Integration

Personalization by Merge Tags

In terms of marketing communication automation, personalization refers to the substitution of dynamic variables to personal contact data. At the moment of the message send, variables in the message template are substituted by the corresponding data taken from a contact card.

The most common example of personalization is the %FIRSTNAME% variable that is substituted by a customer's name, provided the corresponding field is filled in the contact card.

The substitution principle can be applied to other data:

  • Contact surname;
  • City or country;
  • Promo code or QR code link;
  • Name of the operating manager;
  • Address, email and phone number of the physical location;
  • Bonuses in the customer’s account, etc.

Personalization is used for both bulk and triggered campaigns in all channels - Email, SMS, Web Push, Mobile Push, Viber.

To see all personalization options available for your account, go to your profile > Settings > Additional fields. Additional fields can contain any contact data you send to our CDP through API.

Personalization and Dynamic Variables

How to Add Personalization to Messages

SMS, Web Push, Mobile Push, Viber

The SMS, Web Push, Mob Push, and Viber editors have a similar interface, with the personalization icon placed identically. Click it to unroll the list with available variable options.

How to add personalization


In the email editor, the personalization feature is hidden by default and gets available only when you edit text. To use it, click any text piece to disclose the top menu and click Merge tags.

Personalization in the email editor

How to Use Dynamic Variables

Using variables, you can add any personal info depending on the available data in the contact card. For example, to address a customer by name, use the %FIRSTNAME% variable.

%FIRSTNAME% variable in the template

In the message, a variable is substituted by the value specified in the contact card data field. If the particular field is empty, the variable will be ignored and no data will be substituted.

In this case, depending on the punctuation and copy, the user may receive a message with an evident space or missing word.

Greeting with missing words

To avoid it:

  • Add a vertical bar (|) after the variable you’re using (%FIRSTNAME|%). In our system, it’s added by default to any variable.
  • Enter alternative text after the bar (%FIRSTNAME|friend%).

Alterntive greeting

Contacts whose names are specified in the cards will receive messages with a personal greeting. Contacts without known names will receive messages with a standard greeting.

Personal name vs. general greeting

This substitution principle applies to all variables. Take a look at the example with more dynamic variables.

Variables & substituted data

Used variables:

  • %EVENT%

Note. Variable names can differ depending on the contact field names you have in your account.

To add a variable for an image, click the image block, click URL and insert the variable (for example, %PERSONAL.QRCODE%) in Image path.

Variable for an image

Or you can add a variable as an src attribute straight to code.

Variable as an src attribute


The variable value should be a link with an absolute path, for example: https://example.com/qr_code.png

The more contact data you have, the more dynamic variables you can use. Make sure to update your contact base on a regular basis. You can do this through import or API integration. Also, you can send campaigns to collect additional contact data.

How to Use Velocity for Email

Dynamic variables help personalize your messages, but they get inapplicable if you have few or no contact fields filled. Due to the absence of data for substitution, some blocks of the email copy can be incomplete and confusing.

The possible solution for email is to hide certain blocks unless all data is available. To do this, you can use Velocity. For substitution in messages, Velocity can use data not from the contact card but from events sent to the system.

To use it in the email, click the structure you want to hide and open Code editor.

Code editor

As shown in the example below, add variables (in our example PERSONAL.PROMOCODE and PERSONAL.QRCODE) to the code in the commented format: #if($data.get('PERSONAL.PROMOCODE')!='' and $data.get('PERSONAL.QRCODE')!='').

Add the if/else statement. The if/else statement will execute the code for the structure if the specified conditions are true. For example, if both data pieces (personal promo code and QR code) are available, the block will be shown in the email. If one of them isn’t available, the whole block will be hidden.

Add #end to specify the end of the conditional array.

Variables and if/else statement

Apart from hiding blocks, the if/else statement can also check whether a certain contact field is filled. For example, to check the contact name field, add to the code

#if($data.get('FIRSTNAME') and $data.get('FIRSTNAME')!='')

Hi, $!data.get('FIRSTNAME').




This principle applies to any variable you want to check.

Additional personalization can be delivered to emails through personalized product recommendations. Learn more on how to set up product recommendations for email.

Any Questions?
We’re always happy to help!
Discount services
Schedule a Call
Fill in the form, and our specialists will call you back as soon as possible.
Discount services
Chat Support
We’re waiting for your questions!
Discount services
Contact the support team