YouTrack Standalone 2017.1 Help

Custom Notifications Language Reference

Local Variables

Local variables can be used, but not changed by the user. Local variables are predefined and read-only.

Local Variable Type Description
header string Notification's header, short text identify the notification type (available values: created/updated/commented/voted/tagged, etc.). Variable is used in default email subject template.
from User Notification sender's info
to User Notification recipient's info string Evaluates to "YouTrack"
application.version string Evaluates to the current version string Evaluates to build number
reason string Evaluates to description of the reason a user receives notification. Description form differs in jabber and email notifications.
issue Issue Evaluates to an issue, about which notification is sent.
change IssueChange Contains info about changes (issue project, summary, description, custom fields, visibility group, links, attachments) that initiated notification.
comment Comment Evaluates to an edited or posted comment, about which notification is sent.
comment_updated boolean true - comment has been edited, false - new comment has been posted
tag Tag Evaluates to an tag, which has been added to or removed from an issue.
untag boolean indicator that issue has been tagged/untagged
unvote boolean indicates that issue has been voted/unvoted
project Project Imported project or project failed to import (id, full name, issues, leader...). Variable is used in the "Import status" notification.
exception Throwable Java Throwable object
message string text of the message in the "Import status" notification.


You use FTL tags to call directives. Besides build-in directives like the #list directive (Built-in directives), you can define your own directives in Freemarker. For more information, see (User-Defined directives manual).

  • wiki process embeded text using Wiki syntax and keywords. Directive apply html escaping.
    • parameter no parameters
    • body text to process


@wikisolidhtml <#escape x as x?html> ... <@wiki><#noescape>${comment.text}</#noescape></@wiki> ... </#escape x as x?html>
  • diff render html element presenting text change. Mark deleted and added sections of text with given styles.
    • parameters:
      • oldText old version of text
      • newText new version of text
      • insStyle html style of inserted parts of text
      • delStyle html style of deleted parts of text
    • body no body


@diffsolidhtml <@diff oldText=change.before.summary newText=change.after.summary insStyle="background-color: #E6FFE6;" delStyle="background-color: #FFE6E6;"/>
  • stacktrace render the html component representing stacktrace of Throwable
    • parameters:
      • throwable instance of Throwable Java class
    • body no body


@stacktracesolidhtml <div><pre><@stacktrace throwable=exception/></pre></div>


  • Everywhere the type of returned value is list<?>, you can iterate over method result using #list directive.
Method Summary
static string getAttachmentUrl(Attachment attachment)
returns URL of attachment resource
static string getAvatarUrl(User user)
returns URL of user avatar
static string getCommentReplyUrl(Comment comment)
returns URL of web page with Issue view focused on reply text area
static string getCommentUrl(Comment comment)
returns URL of web page with Issue view focused on comment
static list<ProjectCustomField> getCustomFields(Issue issue)
returns list of custom fields of issue
static Issue getDuplicate(Issue source)
returns issue duplicated by the source issue, if there is no such issue returns null
static string getEditProjectUrl(Project project)
returns URL of web page in Administration where you can edit project
static list<Tag> getExplicitTags(Issue issue)
returns list of tags of issue except tag 'Star' visible for notification recipient
static int getInvisibleAttachmentsCount(Issue issue)
returns number of issue's attachment invisible for notification recipient
static string getIssuesUrl(Project project)
returns URL of web page with issue list opened in context of project
static string getJiraIntegrationUrl()
returns URL of web page in Administration where you set up JIRA integration
static list<Issue> getLinkedIssues(Issue source, string linkRole)
linkRole name of link (Related, Duplicate e.t.c.)
returns list of issues linked with source by the link of specified role
static list<string> getLinkRoles(Issue source)
return all possible roles of links of source issue
static string getPossessiveName(User you, User from)
return "you" if you and from is the same user, and from user presentation otherwise
static string getResolveStatus(Issue issue)
return "resolved" if issue has been resolved and "" otherwise
static string getSettingUrl(User user)
return URL of web page with user profile setting focused on the "Filters and Notifications" tab
static string getStarSrc(Issue issue) return URL of 'Star' tag image resource
static string getTaggedIssuesUrl(Tag tag)
returns URL of web page with issue list opened in context of tagged by tag issues
static string getTrimmedTagName(Tag tag)
return tag name restricted by 25 chars length
static string getUrl(Issue issue)
returns URL of web page with issue
static list<Attachment> getVisibleAttachments(Issue issue)
return list of issue's attachments visible for notification recipient
static boolean hasLinks(Issue issue)
returns either issue has any links or not
static string inUserTimeZone(instant time)
returns human readable formatted time brought to the recipient time zone
static boolean isFixed(Issue issue)
returns either issue has been fixed or not

Last modified: 18 April 2017