Data Processing and Formatting Methods
  • 10 Apr 2024
  • 5 Minutes to read
  • Dark
    Light
  • PDF

Data Processing and Formatting Methods

  • Dark
    Light
  • PDF

Article summary

The system supports different methods depending on the data types used by variables. To learn more about campaign variables, please see this article.

String methods

  • ToUpper (string): changes all letters to uppercase.

Example:

${Recipient.OnlyStandardFirstName} — Alex

${ToUpper(Recipient.OnlyStandardFirstName)} → ALEX

  • ToLower (string): changes all letters to lowercase.

Example:

${item.AdditionalData.Colour} — Red

${ToLower(item.AdditionalData.Colour)} → red

  • Capitalize (string): capitalizes the first letter of the first word in the string.

Example:

${item.Description} — wide black belt

${Capitalize(item.Description)} → Wide black belt

  • CapitalizeAllWords (string): capitalizes the first letter of each word.

Example:

${item.Description} — wide black belt

${CapitalizeAllWords(item.Description)} → Wide Black Belt

  • ReplaceIfEmpty (string1, string2): displays string 1. If empty, it displays string 2.

Example:

${Recipient.OnlyStandardFirstName} — "" (empty string)

${Recipient.AdditionalData.Nickname} — CoolGuy93

${ReplaceIfEmpty(Recipient.OnlyStandardFirstName, Recipient.AdditionalData.Nickname)} → CoolGuy93

  • IsEmpty (string): checks if the string is empty.

Example:

${Recipient.OnlyStandardFirstName} — Alex

${IsEmpty(Recipient.OnlyStandardFirstName)} → true

  • Length (string): counts the number of characters in the variable.

Example:

${Recipient.LastName} — Smith

${Length(Recipient.LastName)} → 5

Truncate (string, character count): cuts off the string to the defined length and adds an ellipsis at the end. This ellipsis is counted as three characters.

Example:

${item.Description} — item description

${Truncate(item.Description, 10)} → item de...

To remove a fixed quantity of characters from the end of a string, use the Length() function. X number of characters are removed from the end and three are added as an ellipsis instead.

For example, the method below removes the last seven characters:

${item.Description} — Ruby ring No.123

${Truncate(item.Description, Length(item.Description) — 4)} → Ruby ring...

  • Substring (string, start, length (optional)): returns a substring that starts from the start character and contains the character count specified in Length().

If Length() is omitted, the whole string is returned:

${Recipient.LastReceivedPromoCode.WithTypeUnique.Value} — BGDK4444

${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, 4)} → BGDK

Use the Length() function if you want to cut off a fixed number of characters from the end of a string.

For example, to remove the last four characters:

${Recipient.LastReceivedPromoCode.WithTypeUnique.Value} — ABCDE1234

${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value, 1, Length(Recipient.LastReceivedPromoCode.WithTypeUnique.Value) — 4)} → ABCDE

To return the last four characters:

${Substring(Recipient.LastReceivedPromoCode.WithTypeUnique.Value) — 3)} → 1234

  • ChooseRandomText (random string count, but at least one): randomly chooses a string from the list of variables.
${ChooseRandomText("text1″, "text2″, "text3″)} → text2

Methods for numeric values

  • FormatDecimal (numeric value, format): formats any numeric values.

Example:

${balance} — 20,000.12

${FormatDecimal(balance, 'N0′)} → 20,000
${FormatDecimal(balance, 'N1′)} → 20,000.1
${FormatDecimal(balance, 'N2′)} → 20,000.12

Please note that this method returns a numeric value as a string. To use it with some other numeric function, each variable must be unformatted.

Example:

${balance} — 20,000.12

${FormatDecimal (balance, 'N0')} → 20,000
${Forms(balance, 'bonus', 'bonuses')} → bonuses
${Forms(balance, 'bonus', 'bonuses')} → bonuses

When combined:

${FormatDecimal(balance, 'N0')}${Forms(balance, 'bonus', 'bonuses')} → 20,000 bonuses

  • Forms (numeric value, form1, form2, form3): returns a grammatically correct word form with respect to the numeric value.

Example:

${Recipient.AdditionalData.Age} — 30

${Forms(Recipient.AdditionalData.Age, 'year old', 'years old')} → years old

  • AppendForms (numeric value, form1, form2, form3): returns a numeric value and a relevant word form divided by the space character.

Example:

${Recipient.AdditionalData.Age} — 30

${AppendForms(Recipient.AdditionalData.Age, 'year old', 'years old')} → 30 years old

  • Floor (numeric value): returns a max integer value that does not exceed the variable.

Example:

${balance} — 10.9

${Floor(balance)} → 10

This method rounds up a numeric value to the nearest integer.


  • Ceiling (numeric value): returns a minimum integer value that is more than or equal to the variable.

Example: ceiling (10.6) returns 11.

${balance} — 10.6

${Ceiling(balance)} → 11

  • GetRandomNumber (numeric value, numeric value): returns an integer value within a specified range, including the first number.

Example:

${GetRandomNumber(1, 10)}

— returns a random number from 1 to 9.


Methods for date & time

  • FormatDateTime (date, format): formats date & time values.

Example:

${CustomerAction.DateTimeWashington} — 03/12/2024 10:30:00

${FormatDateTime(CustomerAction.DateTimeWashington, "d")} → 03/12/2024

For more details on standard and customizable date & time formats, please see the articles linked.


${Order.DateTime} → 03/12/2024 15:00:00
(On a project with UTC+3:00 timezone)

${ToUnixTimeStamp(Order.DateTime)} → 1710255600

You can calculate the number of days between dates:

${Recipient.CustomField.Date1} → 03/07/2024 00:00:00

${Recipient.CustomField.Date2} → 03/12/2024 00:00:00

${(ToUnixTimeStamp(Recipient.CustomField.Date2)-ToUnixTimeStamp(Recipient.CustomField.Date1)) / 86400} → 5
${(ToUnixTimeStamp(Recipient.CustomField.Date1)-ToUnixTimeStamp(Recipient.CustomField.Date2)) / 86400} → −5

You can calculate the number of hours between dates:

${Recipient.CustomField.Date1} → 03/12/2024 12:00:00

${Recipient.CustomField.Date2} → 03/12/2024 22:00:00

${(ToUnixTimeStamp(Recipient.CustomField.Date2)-ToUnixTimeStamp(Recipient.CustomField.Date1)) / 3600} → 10
${(ToUnixTimeStamp(Recipient.CustomField.Date1)-ToUnixTimeStamp(Recipient.CustomField.Date2)) / 3600} → −10

  • AddDays (date, numeric value): returns the date value that is the sum of the date and the specified quantity of days.

Example:

The resulting date is earlier or later by X days:

${Formatdatetime(Recipient.BirthDate, "dd/MM") } — 05/03

${Formatdatetime(AddDays(Recipient.BirthDate, 5), "dd/MM") } → 10/03
${Formatdatetime(AddDays(Recipient.BirthDate, −5), "dd/MM") } → 05/03

  • GetDay (date): returns the day in the date as a numeric value. You can apply arithmetic methods to this value.

Example:

${Recipient.BirthDate} — 03/10/1984 00:00:00

${GetDay(Recipient.BirthDate)} → 10

  • GetMonth (date): returns the month in the date as a numeric value. You can apply arithmetic methods to this value.

Example:

${Recipient.BirthDate} — 03/15/1993 0:00:00

${GetMonth(Recipient.BirthDate)} → 3

  • GetYear (date): returns the year in the date as a numeric value. You can apply arithmetic methods to this value.

Example:

${Recipient.BirthDate} — 04/20/1975 0:00:00

${GetYear(Recipient.BirthDate)} → 1975

${Message.SendingDateTime} — 10/20/2024

${GetYear(Message.SendingDateTime)} → 2024

Methods for collections

  • TableRows (collection, quantity of columns): transforms a collection of elements into a set of rows with cells. This can then help create HTML tables.

For more information, please refer to this article.


  • Count (collection): returns the number of elements in a collection / list.

Example:

${Count(Order.Items)} → 5

— corresponds to the five line items in the order.


  • collection.Take(N): returns the first N elements of the collection.

Example:

Products.GetBySegment("WomenWear").Take(3)

— collection of a maximum of three line items.

Boolean methods (true/false)

  • If (conditional statement, string1, string2): returns string1 if the statement is true or string2 if the statement is false.

Example:

${Order.AdditionalData.FreeShipping} — true

${If(Order.AdditionalData.FreeShipping, "free", "$2″)} → free

Methods for images

ResizeImage (URL, width, height): resizes images.

You can send test emails to check how this method works. Images are resized as emails are composed.

Example:

<img src="${ResizeImage(PictureUrl, 200, 100)}">

The method returns the resized image within the specified width and height.

This method does not crop the image and does not change the aspect ratio.

Hash functions

  • MD5 (string): returns the MD5 hash value.
${ MD5(Recipient.Email) }

  • SHA1 (string): returns the SHA1 hash value.
${SHA1(Recipient.Email)}

  • SHA256 (string): returns the SHA256 hash value.
${SHA256(Recipient.Email)}

  • SHA512 (string): returns the SHA512 hash value.
${SHA512(Recipient.Email)}

You can use hash tokens as an authentication method in campaigns.

  • toBase64(string): encodes using the Base64 algorithm.
${toBase64(Recipient.Email)}

Methods for codes

  • processHtml (argument) tracks clicks in the HTML block.
${processHtml('<a href="https...">Hi</a>')}

You can also put your code into an item’s description and get its value using the variable:

${processHtml(Products.SearchInIdentity("c1").GetByValue("2134").Description)}

Please note:

  • The code in the block should not contain any variables. This is not to be confused with an entire block returned using a variable (as in the example with a product description).

  • You can use multiple blocks in one email. The system will record clicks for each of the blocks.

  • Clicks can be viewed in the customer's profile. UTM parameters are also saved.

  • Clicks will not be shown in reports or heatmaps.