Personalization syntax personalization-syntax

Personalization in Journey Optimizer is based on the templating syntax called Handlebars.
For a complete description of the Handlebars syntax, refer to HandlebarsJS documentation.

It uses a template and an input object to generate HTML or other text formats. Handlebars templates look like regular text with embedded Handlebars expressions.

Simple expression sample:



  • profile is a namespace.
  • is a token composed by attributes. The attributes structure is defined in an Adobe Experience Platform XDM Schema. Learn more.

Syntax general rules general-rules

Identifiers may be any unicode character except for the following:

Whitespace ! " # % & ' ( ) * + , . / ; < = > @ [ \ ] ^ ` { | } ~

The syntax is case sensitive.

The words true, false, null and undefined are only allowed in the first part of a path expression.

In Handlebars, the values returned by the {{expression}} are HTML-escaped. If the expression contains &, then the returned HTML-escaped output is generated as &amp;. If you don’t want Handlebars to escape a value, use the “triple-stash”.

Regarding literal functions arguments, the templating language parser does not support single unescaped backslash (\) symbol. This character must be escaped with an additionnal backslash (\) symbol. Example :

{%= regexGroup("","@(\\w+)", 1)%}


This namespace allows you to reference all the attributes defined in the profile schema described in Adobe Experience Platform Data Model (XDM) documentation.

The attributes need to be defined in the schema before being referenced in a Journey Optimizer personalization block.

Learn how to leverage profile attributes in conditions in this section.

Sample references:








Audiences perso-segments

Learn how to leverage profile attributes in conditions in this section.

To learn more about the segmentation service, refer to this documentation.

Offers offers-syntax

This namespace allows you to reference existing offers decisions.
To reference an offer you need to declare a path with the different information that define an offer.

This path has the following structure:

offers.Type.[Placement Id].[Activity Id].Attribute


  • offers identifies the path expression belonging to offer namespace
  • Type determines the type of offer representation. Possible values are: image, html and text
  • Placement Id and Activity Id are placement and activity identifiers
  • Attributes are offer specific attributes which depend on the offer type. Example: deliveryUrl for images

For more information on Decisions API and on Offers Representation, refer to this page

All the references are validated against Offers Schema with a validation mechanism described in this page

Sample references:

  • Location where the image is hosted:


  • Target URL when you click on the image:


  • Text content of the offer coming from the decisioning engine:


  • HTML content of the offer coming from the decisioning engine:


Helpers helpers-all

A Handlebars helper is a simple identifier that may be followed by parameters.
Each parameter is a Handlebars expression. These helpers can be accessed from any context in a template.

These block helpers are identified by a # preceding the helper name and require a matching closing /, of the same name.
Blocks are expressions that have a block opening ({{# }}) and closing ({{/}}).

Helper functions are detailed in this section.

Literal types literal-types

Adobe Journey Optimizer supports the following literal types:

A data type comprised of characters surrounded by double quotes.
Examples: "prospect", "jobs", "articles"
A data type that is either true or false.
A data type representing a whole number. It can be positive, negative, or zero.
Examples: -201, 0, 412
A data type that is comprised as a group of other literal values. It uses square brackets to group and commas to delimit between different values.
Note: You cannot directly access properties of items within an array.
Examples: [1, 4, 7], ["US", "FR"]
The use of xEvent variable is not available in personalization expressions. Any reference to xEvent will result in validation failures.

URL Personalization perso-urls

Personalized URLs take recipients to specific pages of a website, or to a personalized microsite, depending on the profile attributes. In Adobe Journey Optimizer, you can add personalization to URLs in your message content. URL personalization can be applied to text and images, and use profile data or contextual data.

Journey Optimizer allows you to personalize one or several URLs in your message by adding personalization fields to them. To personalize a URL, follow the steps below:

  1. Create a link in your message content. Learn more

  2. From the personalization icon, select the attributes. The personalization icon is only available for these types of links: External link, Unsubscription link and Opt-Out.

In the personalization editor, when you edit a personnalized URL, helper functions and audiences membership are disabled for security reasons.

Sample personalized URLs

Spaces are not supported in the personalization tokens used inside urls.